Helm

From Freephile Wiki
The package manager for Kubernetes

Helm (github) describes itself as "the package manager for Kubernetes". Alternative to Kustomize, Helm is a tool for managing Charts. Charts are packages of pre-configured Kubernetes resources.

Use Helm to:

  • Find and use popular software packaged as Helm Charts to run in Kubernetes
  • Share your own applications as Helm Charts
  • Create reproducible builds of your Kubernetes applications
  • Intelligently manage your Kubernetes manifest files
  • Manage releases of Helm packages

Examples[edit | edit source]

Assuming you already have Helm installed and you have a running Kubernetes cluster (start out with minikube), you could issue the following to "install" the MediaWiki application (chart) offered by Bitnami (as contained in the docker.io registry). The name of the application (called a "release") would be "my-release".
helm install my-release oci://registry-1.docker.io/bitnamicharts/mediawiki

This would produce output like the following:

Pulled: registry-1.docker.io/bitnamicharts/mediawiki:21.0.3
Digest: sha256:43a905d16c40c05f290b6e19db684dfe2d75677f3a6c7ce1c0b3ac81897beb9c
NAME: my-release
LAST DEPLOYED: Thu Aug  1 18:32:54 2024
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: mediawiki
CHART VERSION: 21.0.3
APP VERSION: 1.42.1

** Please be patient while the chart is being deployed **###############################################################################
### ERROR: You did not provide an external host in your 'helm install' call ###
###############################################################################

It goes on

This deployment will be incomplete until you configure Mediawiki with a resolvable
host. To configure Mediawiki with the URL of your service:

1. Get the Mediawiki URL by running:

  NOTE: It may take a few minutes for the LoadBalancer IP to be available.
        Watch the status with: 'kubectl get svc --namespace default -w my-release-mediawiki'

  export APP_HOST=$(kubectl get svc --namespace default my-release-mediawiki --template "{{ range (index .status.loadBalancer.ingress 0) }}{{ . }}{{ end }}")
  export APP_PASSWORD=$(kubectl get secret --namespace default my-release-mediawiki -o jsonpath="{.data.mediawiki-password}" | base64 -d)
  export MARIADB_ROOT_PASSWORD=$(kubectl get secret --namespace default my-release-mariadb -o jsonpath="{.data.mariadb-root-password}" | base64 -d)
  export MARIADB_PASSWORD=$(kubectl get secret --namespace default my-release-mariadb -o jsonpath="{.data.mariadb-password}" | base64 -d)

2. Complete your Mediawiki deployment by running:

  helm upgrade --namespace default my-release oci://registry-1.docker.io/bitnamicharts/mediawiki \
    --set mediawikiHost=$APP_HOST,mediawikiPassword=$APP_PASSWORD,mariadb.auth.rootPassword=$MARIADB_ROOT_PASSWORD,mariadb.auth.password=$MARIADB_PASSWORD

2. Get your MediaWiki login credentials by running:

    echo Username: user
    echo Password: $(kubectl get secret --namespace default my-release-mediawiki -o jsonpath="{.data.mediawiki-password}" | base64 -d)

WARNING: There are "resources" sections in the chart not set. Using "resourcesPreset" is not recommended for production. For production installations, please set the following values according to your workload needs:
  - resources
+info https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

If you have Kubernetes Dashboard installed you would see something like this

Kubernetes dashboard.png