Banzai Cloud Pipeline can automatically install custom Helm charts on every newly-created managed cluster. You can specify the charts to install in the controlplane’s configuration.

The quick start guides use the default configuration of the platform and do not install any custom helm charts, but you may need to configure the system to your specific requirements.

Limitations 🔗︎

Note the following points when using this feature, as they affect how you have to manage and upgrade your existing clusters.

  • Banzai Cloud Pipeline installs the custom charts only on clusters that are created after the custom charts were configured. No charts are installed on existing clusters.
  • The custom charts are installed when the cluster is created. No charts are installed when a cluster or node pool is upgraded.
  • If you modify the list of default charts (for example, add a new chart), it won’t be installed on any existing clusters, only on clusters that are created after the change. This also means that if you delete a chart from the list, you have to manually delete it from existing clusters.
  • Banzai Cloud Pipeline doesn’t upgrade the custom charts. If you want to upgrade a chart on an existing cluster (for example, to apply a security fix), you have to do that manually.

Edit your Pipeline configuration 🔗︎

To automatically install Helm charts your clusters created with the Banzai Cloud Pipeline platform, complete the following steps.

  1. Find the configuration file of your Banzai Cloud Pipeline installation. By default, it is the ~/.banzai/pipeline/<workspace>/values.yaml file. The name of the workspace is default by default.

  2. Open the configuration file. You can customize settings and add default custom Helm charts to install on every managed cluster by editing this file. To add a custom Helm chart, add an array to the file’s pipeline.configuration.cluster.charts path. The custom chart configurations are the items of the array. You can add the following parameters to the charts:

    • enabled: Whether to install the chart or not. Setting enabled: false doesn’t install the chart, but you don’t have to remove the whole entry.
    • chartName: The chart’s name in repository-name/name format.
    • chartVersion: The version of the chart to install.
    • releaseName: A name for the Helm release.
    • values: (Optional) Custom values of the chart as a continuous multiline string to override its default settings.
  3. If you use a custom Helm repository, add it to the pipeline.configuration.helm.repositories path as well in the same configuration file as repository-name: https://my-helm-host.example.com/chart-repository.

  4. For your changes to take effect, run the banzai pipeline up [--workspace=default] command and confirm the deployment plan offered.

See the following example for details.

Example: Install a custom NGINX ingress Helm chart 🔗︎

In the following example, the Pipeline controlplane is configured to install a custom NGINX ingress Helm chart to every managed cluster it creates.

The example configures the corresponding ingress-nginx custom Helm repository (residing at https://kubernetes.github.io/ingress-nginx) to be added to the known Helm repositories handled by the control plane.

The example also configures the installed NGINX ingress to be enabled and use the IngressClass resource on clusters with Kubernetes version 1.18+ and set the nginx ingress class as the default ingress class.

Lastly, the example - through the configuration - explicitly turns off the other ingress-related resources which could possibly be installed on managed clusters by the controlplane, including the ingress service and the ingress posthook.

pipeline:
  configuration:
    cluster:
      charts:
        - enabled: true
          chartName: ingress-nginx/ingress-nginx
          chartVersion: "3.34.0"
          releaseName: ingress
          values: |
            controller:
              ingressClassResource:
                enabled: true
                default: true
      ingress:
        enabled: false
      posthook:
        ingress:
          enabled: false
    helm:
      repositories:
        ingress-nginx: "https://kubernetes.github.io/ingress-nginx"