I'm managing a project with 10 microservices and currently, I have a single Helm values file that contains all the configurations for these services. I'm looking to restructure this so that each microservice has its own values file. My main goal is to make it easier to manage changes without sifting through a large single file. Additionally, these services need to be installed under the same release name. However, I'm facing issues when I try to upgrade using this method since the old pods get deleted, and only the ones from the latest values file remain. I explored using helmfile for installations, but it involves a manual script to merge the files, which can be cumbersome when new services are added. Is there a more automated way to handle multiple values files in the Helm chart?
3 Answers
You can actually specify multiple value files with Helm during the install by using `-f` several times for each file. If you're doing an upgrade and want to keep the values you've already set, use the `--reuse-values` flag. This way, it won't delete the old pods when you upgrade. Just ensure to specify both `-f` for your specific values and `--reuse-values`.
Okay thanks, I’ll try that and let you know how it goes!
One approach you could take is to create separate values files for each microservice, like `microservice1.yaml`, `microservice2.yaml`, etc. Then deploy each using Helm by calling `helm install microservice1 microservice1 -f microservice1.yaml`. However, if you're still experiencing issues with them being deleted after an upgrade, it might be more complex than that. Consider using a base template for your microservices as subcharts to manage them more effectively.
Yes, I tried that, but when I upgraded the values for the second microservice in the same namespace, it got deleted.
You can define multiple value files directly in your Helm configuration like this:
```yaml
helm:
valueFiles:
- values/service1.yaml
- values/service2.yaml
- ...
```
This will help streamline your deployment process, but let me know if you need more specific examples!
Can you clarify that a bit more? How would I implement it?
I tried it, but the pods still got deleted. Each value file corresponds to different Docker images, which may be causing the issue.