Hey everyone! I'm reaching out for some help with a tricky situation we're facing. My company operates a multi-tenant application across several clusters. We have an orchestration application that determines which workloads to run for each customer, creating deployments based on that. This process has been somewhat effective, but we're looking to enhance our CI/CD pipeline and the current deployment method is lacking.
Currently, we manually run scripts using `kubectl set image` for each deployment to roll out updates, which isn't ideal as it lacks tracking and complicates automated rollbacks. We're interested in transitioning to Helm for deploying and rolling back updates but need to figure out how to integrate Helm with our existing orchestration setup. Any suggestions for a more efficient and controlled deployment process using Helm would be greatly appreciated!
5 Answers
Have you thought about using Spinnaker? It could be a good fit for managing your deployments. It’s specifically designed for handling complex deployment structures like yours.
Since you've got an orchestration application already, why not modify it to trigger Helm commands instead of directly using kubectl? This would allow each deployment to be treated as a Helm release, simplifying your upgrade and rollback processes without changing your workflow significantly.
You might want to consider using FluxCD with its controller. If that doesn't cover everything, you could create a custom CRD that monitors your customer database and automatically creates Flux deployments. Alternatively, if polling and CRDs aren't your thing, building a REST app to handle deployments via webhooks is another route you could take.
Another idea is to potentially rework your orchestrator into an operator that uses CRDs for deployment management. With Helm in play, leveraging tools like ArgoCD or Flux can streamline your lifecycle management, providing robust rollback and upgrade capabilities through a clean reconciliation loop.
You can integrate existing workloads into Helm releases by adding the necessary metadata or by using a tool called helm-import. Also, consider whether your orchestration can run helm commands for upgrades instead of direct kubectl commands. This way, you'd manage deployments as Helm releases, gaining access to all the Helm features for rollbacks and upgrades.

Related Questions
Can't Load PhpMyadmin On After Server Update
Redirect www to non-www in Apache Conf
How To Check If Your SSL Cert Is SHA 1
Windows TrackPad Gestures