I have an experimantal Elastic environment deployed on a Kubernetes cluster and I am working with ECK 2.8.0 and the orchestrator. My stack consists of Elasticsearch 2 master nodes and 2 data nodes and 2 ml nodes nodes, 2 Kibana nodes and 2 Enterprise Search nodes. I have defined the whole cluster in one single YAML file.
Now I want to upgrade all node sets from 8.7.0 to 8.8.0 or later - Elasticsearch, Kibana, Enterprise Search. I have read the orchestration documentation https://www.elastic.co/guide/en/cloud-on-k8s/current/k8s-orchestration.html
Does ECK and operator coordinates which components are upgraded first (Elasticsearch->Enterprise Search->Kibana) and also the nodes (node 0, then node 1) in a way that allows a rolling upgrade with no downtime of all my components?
In my experiment wanted to upgrade all three components to 8.8.0 and fired the kubectl apply...
After then all master, data and ml nodes were upgraded at the same time (I think also Enterprise Search) - so there was a downtime.
After reading the documentation my expectation was that ECK/operator first updates the first Elasticsearch master node, then the second, then the first data node, than the second and so forth. And finally the first Enterprise Search, then the second and then the Kibana node by node - because it has dependencies to Elastic and Enterprise S.
If ECK/operator does not automatically coordinates all upgrade steps what is a recommended solution? First change the version for Elasticsearch and so on? Use different YAML files?
And what is the correct order of component upgrades? First Elasticsearch, then Enterprise Search and then Kibana?