0
votes

We're migrating our app's deployments from using VMs to Kubernetes and as my knowledge of Kubernetes is very limited, I'm lost how I could set up deployment for multiple clients. Right now we have a separate VM for each client but how to separate the clients in Kubernetes in a way that will be cost and resource efficient and easy to manage?

I managed to create dev and staging environments using namespaces and this is working great. To update dev and staging deployment I just use kubectl apply -f <file> --namespace staging.

Now I need to deploy app to production for several clients (50+). They should be completely separate from each other (using separate environment variables and secrets) while code should be the same. And I don't know what is the best way to achieve that.

Could you please hint me what is the right way for that in Kubernetes?

2

2 Answers

1
votes

You can use Kustomize. It provides purely declarative approach to configuration customization to manage an arbitrary number of distinctly customized Kubernetes configurations.

https://github.com/kubernetes-sigs/kustomize/tree/master/examples

0
votes
  • one (or a set of namespaces) by customer
  • kustomize has a very good patterns system to handle generic configuration and several adaptation by clients
  • use NetworkPolicy to isolate network between clients