It is unclear to me what the best practices are for managing an application with multiple environments, that shares templated files but has different variables per environment. For example, we deploy a develop, staging and production environment. They use the same helm templates, but I have different variables for each environment.
Current File Structure:
helm/
├── templates/
│ ├── _helpers.tpl
│ ├── deploy.yaml
│ └── ingress.yaml
│ └── service.yaml
│ └── managed-certs.yaml
│ └── NOTES.txt
├── Chart.yaml
├── values-production.yaml
├── values-staging.yaml
├── values-develop.yaml
Right now I have two different value files for each environment, and I pass the following to helm
helm install . --values=values-production.yaml
However we are unable to correctly manage versioning with the above.
I cannot find any solid documentation on what best practices are for managing multiple environments for an application. I came across helmfile
which seems to tack this, but their documentation is unclear. The ecosystem for managing kubernetes is perplexing, any help appreciated.