Categories
CI/CD DevOps

Helm Charts CI/CD: Chart Dependencies

How to handle helm chart dependencies as part of CI/CD pipelines? Keep reading to find out. We’ll explore helm charts SDLC in the context of charts dependencies and base CI/CD on it.

If you later find this article useful take a look at the disclaimer for information on how to thank me.

Introduction

As you may already know, helm charts might depend on other helm charts. Use dependencies field of Chart.yaml for listing chart’s dependencies. Yet, many questions may arise about how to treat dependencies while building robust CI/CD helm chart pipelines. We’ve already seen how to test helm charts. Let’s focus now on helm charts SDLC with respect to their dependencies.

helm chart dependencies – little theory

It’s important to understand that while a chart may list multiple helm charts as its dependencies, it’s installed as a single release along with its dependencies. View relevant docs here and here. In addition, there are various helm dependency commands.

helm charts SDLC in the context of dependencies

Find below the suggested SDLC process for development of charts with respect to their dependencies. CI/CD processes would rely and mimic it in order to ensure stable dependency versions.

  • put reference to chart dependencies into dependencies field of Chart.yaml. Use specific versions rather than version ranges. If you don’t, below commands must be followed religiously.
  • run helm repo add for each dependency repository.
  • run helm dependency build. This command will reconstruct the dependencies according to Chart.lock file if it exists. If it doesn’t, this command will behave as helm dependency update. It, in turn, creates Chart.lock file for the first time and downloads the dependencies to charts folder.
  • do version control Chart.lock file and put charts folder to .gitignore. Chart.lock file will be used by CI/CD processes.
  • the chart can either be installed from the chart repository folder or packaged using helm package command and installed from the resulting archive. Note, that the archive contains charts folder which contains the dependency charts.

CI/CD build and release pipeline will be very much based on the above SDLC:

  • run helm repo add for each dependency repository.
  • run helm dependency build.
  • run helm package
  • push the chart to Artifact registry (e.g. Artifactory)

helm charts dependencies important guidelines

  • always run helm dependency update after changes to dependencies field in Chart.yaml. It will update the lock file. Of course, commit and push this change together with changes to Chart.yaml in order to avoid CI/CD pipelines failures.
  • version control Chart.lock file and put charts folder to .gitignore. This way, the dependencies will be downloaded to charts folder during the pipelines, their versions matching information in the lock file. Finally, the pipelines will package the chart folder including charts folder. This point is critical. It ensures that the released chart has the same dependencies (specified in the lock file) that the chart’s developer used during local testing.

You can practice the above flow on a sample WordPress helm chart.

Summary

That’s it about helm charts dependencies and its CI/CD. As always, feel free to share. If you found this article useful, take a look at the disclaimer for information on how to thank me.

Recommended Kubernetes courses on Pluralsight:

Sign up using this link to get exclusive discounts like 50% off your first month or 15% off an annual subscription)

Recommended Kubernetes books on Amazon: