Use a local Helm chart
Harness supports Helm charts stored in a remote Helm Chart Repository, such as ChartMuseum. In some cases, you might be deploying the same Helm chart and version to many clusters/namespaces in parallel. This can cause many identical downloads and performance issues.
To support this use case, Harness includes the option of using a local chart installed on the Harness Delegate local disk.
Harness will check for the existence of the Helm chart on the local delegate disk, and then proceed to download from the remote repo only if the chart is not found.
Using a local Helm chart eliminates identical downloads and their related performance issues.
New to Helm deployments in Harness? Review Helm Chart Deployment Tutorial and Native Helm Deployment Tutorial. For extensive details, go to Deploy Helm Charts.
Add installation script to the delegate YAML
-
Install the chart on the delegate host.
The delegate host must have Helm installed on it. Harness installs Helm with the delegate automatically, so you don't need to do anything unless you have removed Helm for the delegate host.
For information on the Helm binaries installed by default, see Supported platforms and technologies.
You can install the chart manually on the host, but it is easier to install it using theINIT_SCRIPT
environment variable in the delegate YAML. -
Add the
INIT_SCRIPT
environment variable to the StatefulSet (legacy delegate) or deployment (delegate with an immutable image type) object in the delegate YAML, and add your Helm chart installation script.For information on using
INIT_SCRIPT
, go to Build custom delegate images with third-party tools.For information on installing Helm charts, go to Helm's documentation for Helm Install.
Add the Helm local repo environment variable to delegate YAML
You need to provide the path to the local chart in the delegate YAML using the HELM_LOCAL_REPOSITORY
environment variable.
- Add the
HELM_LOCAL_REPOSITORY
environment variable to the StatefulSet (legacy delegate) or deployment (delegate with an immutable image type) object in the delegate YAML.
The format should be:
<basePath>/<repoName(encoded)>/<chartName>/<version>/chartName/
Here's an example:
...
env:
- name: HELM_LOCAL_REPOSITORY
value: "./repository/helm/source/69434bd8-4b9d-37d8-a61f-63df65cd8206/nginx/0.1.0/nginx"
...
If the chart version is not included, Harness will fetch the latest
version.
The HELM_LOCAL_REPOSITORY
environment variable is the same for both delegate types.
Base path
You can also use the base path for value
. For example:
env:
- name: HELM_LOCAL_REPOSITORY
value: "/opt"
Important notes
Review the following important notes.