Helm

Helm is a command line tool which helps you manage Kubernetes applications — Helm Charts help you define, install, and upgrade even the most complex Kubernetes application.

Charts are easy to create, version, share, and publish in a public or private Helm repository or an OCI registry such as Harbor.

h8lio provides a dashboard to manage your Helm application, see Kubeapps

Prerequisites

  • An h8lio cluster where to install your Chart application
  • kubectl

Installation

Installation from a script (see the documentation):

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
helm version

You can enable helm command line completion to assist you, example on linux bash:

helm completion bash > /etc/bash_completion.d/helm

Repositories

You can add any namespace local public or private Helm repository or OCI registry.

With your h8lio account you can also use Harbor as an OCI private registry to manage your own Charts.

Also check the repository commands in the below section.

Usage

Some useful commands:

Repository

Charts

Chart

Installation

We recommend you to store locally (our in a git repository like https://sources.h8l.io) the values.yaml file with your own configuration at the time and version you install a chart. This will allow you to replay it as necessary and to do a diff with the next Chart values release to check the different and the new configuration options (if any).

To get the values of a Chart once you added its repository:

helm show values [chart] > my-chart.yaml

To use your values file at installation and upgrade time:

helm install my-chart [chart] -f my-chart.yaml
helm upgrade my-chart [chart] -f my-chart.yaml

Configuration

The following titles gives you some general configuration values.

Namespace

To install a Chart you have to create an h8l.io cluster as namespace installation target. One your h8lio cluster has been created you can specify when you install your chart.

helm install ... --namespace [my-cluster] ...

Cluster name

The h8lio Kubernetes cluster name is k8s.h8l.io. This value is generally used to define the DNS resolver for the service url: [service].[namespace].svc.k8s.h8l.io

Ingress

If you want to use the Ingress of your chart you can use the ingressClassName “traefik” as Traefik is our ingress controller. But if you need more control of Chart application routing, we recommend to use the Traefik IngressRoutes and you can use the default certificate resolver (certResolver) for your TLS routing.

If you need your own TLS resolver we can configure it for you (see supported providers)

Persistent Volumes

When you configure persistence in your Chart, you can use the storage class name you set up in your h8lio cluster. You can have access to the name on h8lio in the storage details (page subscription, volumes and cluster edition).

Pay attention to the allocated storage in your cluster before the install

Custom resource Definition (CRD)

As the CRD are Kubernetes cluster wide resources, you can not install them directly. If your Chart need them, you can contact us to add them. Once they have been installed and granted to your different Kubernetes RBAC, you will be able to install the chart by specifying the command line argument --skip-crds

RBAC

If your Chart needs to create Kubernetes cluster wide RBAC, you can disable them and use your existing h8lio RBAC which are local to your cluster.