I've created a chart which requires a helm chart from stable/charts, lets say mongodb. Although you can define a requirements.yaml file I was wondering if it is possible to define a chart in here?
Furthermore, to make things easier (not) I need to replace some values for the mongodb chart as well. Not sure if I'm pushing the limits here to much :) It looks like a subchart relation, so it sounds possible.
The alternative, which I'm using now is to first install the stable/chart and then my custom chart. But it would be an improvement if I could reduce this to one helm
command just by adding this dependency to my custom chart
Update:
I will update this post with my findings and hopefully this will eventually lead to the solution :) The requirements.yaml
so far:
dependencies:
- name: "mongodb"
version: "4.x.x"
repository: "@stable"
import-values:
- child: default.data
parent: myimports
Not sure yet how I can use import-values
to customize mongodb, but for now I'm stuck on the following error
Error: found in requirements.yaml, but missing in charts/ directory: mongodb
Also, because I'm using stable
I'm not sure what to do with the version
field
Useful links: link, link
Users who do not switch image locations to their new homes and update any chart from the stable/incubator repos to their new homes will potentially run into issues. This is also mentioned on Helm Charts github. This project is no longer supported.
since helm 2.2.0, you can store the mongodb chart at the same directory and in your requirements.yaml
file refer to it as:
dependencies:
- name: mongodb
version: "<the_mongo_chart_version>"
repository: "file://../mongodb"
thats way you can play with the values and deploy the whole thing with 1 helm command.
for more information refer to
https://github.com/helm/helm/blob/master/docs/helm/helm_dependency.md
Unfortunately this not enough to add dependency charts into your requirements.yaml file.
Also, charts himself should be physically in charts directory. This is a helm limitation.
If you agree to manage a third party chart in your repo (should be pretty easy) then you be able to install all by one helm command and change subchart values as mentioned here.
I have an example elasticsearch and kibana installation as one chart: In my test repo. Please review. I hope this example helps to solve your problem.
Handling 3rd party charts in your own repo might be the trivial solution since you need one helm command to run it, but it makes maintenance much more cumbersome.
I would go with defining the helm dependencies and then running a small script to download them just like any other package-management system would do, you can do it as following:
requirements.yaml
dependencies:
- name: "mongodb"
version: "7.8.10" <--- Pay attention this refers to the chart's version and not the app version [see link 1]
repository: "@stable"
1. https://github.com/helm/charts/blob/master/stable/mongodb/Chart.yaml#L3
run shell script that creates the charts folder and get the charts in the requirements.yaml
install.sh
helm dependencies list
helm dependencies update
helm install --name my-chart .
in case you want to change the values of the sub-chart you need to follow the exact same path of the chart's value path (in this example ingress.enabled
) and add the top level chart name.
Pay attention! this have to be an exact match to the chart name mentioned in the requirements.yaml
!
There are two ways to set those values:
either with the command line:
helm install --name my-chart . --set mongodb.ingress.enabled=true
or inside your own values.yaml
mongodb:
ingress:
enabled: "true"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With