I am deploying multiple helm sub-charts in Kubernetes Cluster through Helm and tiller. How can I make sure that a particular chart completely installs its containers before starting to install other charts and their containers?
I looked into requirements.yaml and hooks, none of them look like can be the solution I am looking for.
ParentDir/
Chart.yaml
requirements.yaml
values.yaml
charts/
|
|
—- App1
Chart.yaml
values.yaml
templates/
—- App2
Chart.yaml
values.yaml
templates/
.
.
.
—- AppN
Chart.yaml
values.yaml
templates/
I have multiple sub-charts, and want to make sure containers of App1 are up and ready before helm installs other charts and its containers.
Stumbled upon the same issue lately. I had a RabbitMQ, as a Helm package, and two additional Helm packages that I built locally.
I wanted to gather the three in a single Helm package, but found no way of ordering the installation of the Helm charts, since for example the two other packages need the RabbitMQ credentials.
I found using hooks brings more complexity than necessary to the solution and I preferred to simply install them separately, in the order that I want, while I can do any manual changes in between the steps.
Here is an article that discusses this topic and might be of interest to you.
Now there might be a way to properly order dependencies if you are willing to try Helmsman. I can't make any judgement about it, since I just found out about it, but from its README under Features:
Define the order of managing releases: you can define the priorities at which releases are managed by helmsman (useful for dependencies).
Here is the relevant documentation.
i don't think there is anything from helm chart side but probably you can solve this using the init containers.
if in your charts there is database and used by the application and getting crashed you can use the init container to check to complete lifecycle of pod.
For more you can refer this : https://github.com/helm/helm/issues/1713
You should look into helmfile and split your stack into one helmfile per application. Since helmfiles inside a folders are applied in an alphabetically order you can ensure the order through file naming conventions.
File structure:
helmfile.d/
00-app-1.yaml
01-app-2.yaml
02-app-n.yaml
Execute it with this command: helmfile -f path/to/directory