Helm

Helm es una herramienta que nos permite gestionar, versionar y desplegar múltiples recursos de kubernetes.

Los componentes en helm se estructuran de la siguiente manera:

├── Chart.yaml
├── README.md
├── templates
│   ├── NOTES.txt
│   ├── _helpers.tpl
│   ├── configmap.yaml
│   ├── deployment.yaml
│   ├── pvc.yaml
│   ├── secrets.yaml
│   └── svc.yaml
└── values.yaml

El fichero chart.yaml contiene los metadatos del chart, el values contiene las claves y atributos a modificar y el templates contienen los manifiestos de kubernetes.

Las templates se generan como un recurso nombre de kubernetes solo que plantillando las variables para que el chart sirva a diferentes propósitos y organizaciones. Por ejemplo:

apiVersion: v1
kind: Secret
metadata:
    name: {{ template "fullname" . }}
    labels:
        app: {{ template "fullname" . }}
        chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
        release: "{{ .Release.Name }}"
        heritage: "{{ .Release.Service }}"
type: Opaque
data:
    mariadb-root-password: {{ default "" .Values.mariadbRootPassword | b64enc | quote }}
    mariadb-password: {{ default "" .Values.mariadbPassword | b64enc | quote }}

Este elemento de tipo secreto esta plantillado para que todos sus campos se recojan del fichero values. Esto nos permite, centralizar todos los valores en un único fichero (values.yaml) y por otra parte, permitir que nuestros elementos se kubernetes sean reutilizables.

Este conjunto de elementos se llama chart y se pueden interactuar con ellos como repositorios de git.

Repositorios

Por defecto, helm busca charts dentro de la web de Artifactory Hub.

Podríamos buscar charts con el comando:

helm search hub <nombre del chart> #Buscar repositorios

helm search repo <nomrbre del repositorio> #Buscar dentro del repositorio

También podríamos añadir nuevos repositorios, por ejemplo, el de bitnami:

helm repo add bitnami ht‌tps://charts.bitnami.com/bitnami

Los repositorios que trae por defecto y los que añadimos nosotros manualmente, pueden actualizarse con el comando:

helm repo update

Si ahora quisieramos buscar charts solo dentro de este repositorio podríamos hacerlo así:

helm search repo bitnami

Desplegando un chart

Podríamos desplegar un chart con el comando helm install pero la mayoría de ellos necesitan una personalización para que funcionen correctamente por lo que primero debemos descargarlos en local para leer su README y modificar los valores pertinentes.

Esto lo podríamos hacer con el comando:

helm fetch <nombre repositorio> --untar

Tras modificar todo lo que nos resultara necesario, podemos lanzar el siguiente comando en la ruta del repositorio:

helm install <nombre del despliegue>

Podríamos desinstalarlo con el comando:

helm uninstall <nombre del despliegue>

También podríamos listar todos los charts desplegados y sus respectivas versiones con el comando:

helm list

Última modificación August 12, 2022: Helm e ingress de Kubernetes (1388655)