I recently upgraded one of our older clusters from v1.19 to v1.31, and everything was going smoothly until we reached v1.25. At that point, Helm refused to upgrade one of our internal charts, even though the manifests didn't seem problematic. I discovered that it was still referencing a `policy/v1beta1` PodDisruptionBudget, which was removed in v1.25, causing a breakdown in the release metadata. To resolve this, I used a Helm plugin called `helm-mapkubeapis`, which rewrites old API references in Helm metadata to prevent upgrade issues when charts are updated. I'm curious if anyone else has experienced similar problems during version upgrades and how you're managing upgrades involving deprecated or removed APIs.
5 Answers
LOL, the current version is 1.33 and you're posting about 1.25, which has already hit its EOL. You might want to stay more updated!
Every time there’s a Kubernetes version change, we run a similar review to avoid surprises. Thanks for pointing out the mapkubeapis plugin, it might help us out!
We don’t upgrade our clusters anymore. Instead, we spin up fresh staging environments, troubleshoot there, and then promote that to production. This approach has pushed us to keep everything in Git and automate the deployments. This makes it easy to reinstate everything, and regular updates have minimized breaking changes. We've got a lot of apps running, and even stateful ones, but this method has worked out well for us.
Isn't that a bit complex? My team manages a cluster with 55 apps, and we've had no issues keeping everything updated.
How do you ensure zero downtime during those upgrades?
If you realize the API was removed only after upgrading, that’s a flag that your upgrade process might need some work. Always run pre-upgrade checks!
That’s fair, but mistakes happen. We have checks, but we missed this one. Now we enable all features in our charts to ensure that nothing slips by.
Check out Pluto! It's a tool that identifies deprecated Kubernetes resources. It can help you stay ahead and avoid issues during upgrades. You can implement it in your CI/CD pipeline, so your team is aware of any incoming changes that need addressing. It's super helpful!
Exactly! While it’s fine to create new clusters, you still need to update your manifests. Pluto allows for proactive management.
How does Pluto stack up against other tools like Popeye? The variety out there is overwhelming!
Upgrades are tough. We used to run on Ubuntu 14.04 for ages with no issues—until we finally migrated 4-5 years ago.