Hey everyone! I'm trying to get a better grasp on how to manage rollouts effectively, specifically when hosting services on Azure. During our rollout process, we often have to make several manual changes to app configurations, key vaults, databases, and then gradually deploy services to Azure Kubernetes Service (AKS). I'd love to hear about your methods and best practices for managing these rollouts so that others can learn and possibly implement similar strategies.
3 Answers
If you're working with Azure AKS, I'd suggest checking out ArgoCD. It's a really popular tool for managing application deployments on Kubernetes. It can simplify a lot of your processes during rollouts.
In my organization, the rollout process is kicked off when the producer presses a button that initiates it. Our DevOps team focuses on building and maintaining that button along with the software team. Automation is key—any manual steps should ideally be scripted to prevent hiccups. If you're not ready to hand over button control to a project manager, you can always have a dedicated button just for yourself while you handle requests.
For those who prefer workflow management, consider using Orbits, a TypeScript framework we've open-sourced. It was initially created to streamline our service stack rollouts by chaining together updates to configurations, databases, and clusters, with the added safety of rollback options if anything goes wrong. You can check it out on GitHub!
We do multi-region deployments, pushing changes to one region at a time. Once the necessary manual changes are done, we use a script to verify the build number and update the service with the latest changes.