Is there a way to conditionally install a helm subchart based on global values.yaml? I've all my internal services and components as subcharts, and one of them is a messagequeue chart. In my dev and test environment (local k8s), I use RabbitMQ, and in staging and Prod (AKS), I use Azure Service Bus. Based on the namespace/values.yaml, I want to install rabbitmq or not.
P.S - I've created all the components as subcharts so that they are all part of a single release.
I would propose this (ugly) workaround as answer borrowed from @sgandon: https://github.com/helm/helm/issues/3742#issuecomment-383095917
dependencies: - name: mobi-postgresql version: 1.0.1 repository: "@mobi" alias: postgresql - name: oraclepdb version: 0.0.1 repository: "file://subcharts/oraclepdb" condition: oraclepdb.enabled
Then you can use the practice Chart dependencies to manage subcharts as dependencies via helm dep update
and helm dep build
.
It's not beautiful as long as this bug is not fixed.
I've found out the answer:
In requirements.yaml, add:
dependencies:
- name: api
condition: api.enabled
- name: messagequeue
condition: messagequeue.enabled
and in values.yaml, add
api:
enabled: true
messagequeue:
enabled: false
Now during installation, pass the values to enabled or disable the messagequeue as follows:
helm install --dry-run --debug website\ --set messagequeue.enabled=true
or
helm install --dry-run --debug website\ --set messagequeue.enabled=false