Kibana currently does not support rolling upgrades.
The expected upgrade path for Kibana is to stop all Kibanas of the previous version, then start up the new version. We currently use a Deployment which does violate this invariant.
https://www.elastic.co/guide/en/kibana/current/upgrade.html
Running into trouble with saved object migrations is only one effect of having multiple versions of Kibana running at the same time, see https://www.elastic.co/guide/en/kibana/current/upgrade-migrations.html
Some implementation ideas discussed offline:
Another idea for the version upgrade to reuse existing k8s mecanisms: set the rolling update strategy of the deployment with MaxUnavailable to 100% and MaxSurge to 0. I ran a quick test and it looks ok. All existing containers are killed before new ones are created which causes a downtime of about 30s.
Another idea for the version upgrade to reuse existing k8s mecanisms: set the rolling update strategy of the deployment with MaxUnavailable to 100% and MaxSurge to 0
Is there still a risk we may run 2 different versions of Kibana at the same time? Example:
Maybe that's me misunderstanding the Deployment rollingUpdate though.
I see in the docs that we can set .spec.strategy.type=Recreate:
All existing Pods are killed before new ones are created
It seems to be exactly what we need here?
Most helpful comment
Is there still a risk we may run 2 different versions of Kibana at the same time? Example:
Maybe that's me misunderstanding the Deployment rollingUpdate though.
I see in the docs that we can set
.spec.strategy.type=Recreate:It seems to be exactly what we need here?