-
Notifications
You must be signed in to change notification settings - Fork 714
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Stack monitoring and version upgrade order #4627
Comments
Currently:
|
Note on version compatibility of monitored and monitoring clusters: Ideally the monitoring cluster and the production cluster run on the same Elastic Stack version. However, a monitoring cluster on the latest release of 7.x also works with production clusters that use the same major version. Monitoring clusters that use 7.x also work with production clusters that use the latest release of 6.x (source: https://www.elastic.co/guide/en/elasticsearch/reference/current/monitoring-production.html#monitoring-production). |
We ensure a strict ordering of stack product version upgrades: Elasticsearch first, then Enterprise Search, then Kibana, etc.
This is done through our association mechanism: the associated resource can only be updated once all referenced resources are updated:
cloud-on-k8s/pkg/controller/association/conf.go
Lines 111 to 147 in 7c39ff0
This function gets called as part of individual resource controllers. For example in the Kibana reconciliation:
cloud-on-k8s/pkg/controller/kibana/driver.go
Lines 131 to 133 in 7c39ff0
We don't do that check in the Elasticsearch controller. Mostly because so far we didn't have any Elasticsearch -> X association. That's not true anymore with stack monitoring.
In the Kibana controller, we do check that any referenced ES cluster for monitoring purposes is running with a higher or equal version.
For consistency, we should do the same in the Elasticsearch controller.
This is where things get a bit tricky :)
Association to itself: Elasticsearch monitoring data can be configured to be sent to itself. In which case we need to make sure we don't get into a circular race condition where the version cannot be updated at all because the controller waits for its own resource to be updated first (🔁).
Circular associations: we could configure 2 different clusters to monitor each other (ES A <-> ES B). In which case both would require the other one to be updated first.
(The current situation where we don't do that check in the Elasticsearch controller is maybe an OK solution to that problem, overall).
The text was updated successfully, but these errors were encountered: