Hey everyone! I'm a junior DevOps engineer working at a startup that sells management software for clients to host on their own servers. We want to automate the deployment of updates for our clients, ensuring that their setups don't have internet access since we connect to them via VPN.
My idea is to create a continuous deployment system modeled after Kubernetes, involving a central control plane and agents that run on each client's infrastructure. The control plane would keep track of the deployment states, versions, and the latest release for each application. It will also handle webhooks from our Git server to prepare the information needed for agents to pull updates.
The agents will communicate with the control plane to check for new versions and will have secure endpoints for interactions. Since direct access to our registries isn't possible, the control plane will manage temporary access for the agents to retrieve image updates.
I'm curious to hear your thoughts on this setup. Any suggestions or simpler alternatives?
3 Answers
Definitely interesting! However, I wonder if there’s a clear audit trail for each action the agent takes, and if clients can audit this without taking your word for it. It's also worth considering whether they need to approve certain changes, like upgrades, beforehand. And just in case something goes wrong, do you have any emergency protocols ready?
This is an interesting approach! Just keep in mind some challenges: what if a client doesn't allow ingress into their network? Also, how will agents report their version and state back to the control plane? If something goes wrong during an upgrade, will the agent have a plan to remedy the situation itself? Maybe consider how quickly you can roll back if there's a major issue too. And if an agent gets compromised, what's the risk? Have you thought about replicating images to customer registries instead of using temporary credentials? We've used similar models and faced these challenges too!
I think your idea is solid, but I’m curious why you’d give temporary access to images. You could use access tokens that allow them to pull images as needed, limiting potential risks. Also, just throwing it out there: have you looked into GitOps tools like ArgoCD or FluxCD? They could simplify the agent's job by pulling their desired state from a Git or OCI repository.
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