¿Qué es Helm?
Helm es el administrador de paquetes de Kubernetes. En pocas palabras es un nivel más alto sobre kubernetes para manejar las aplicaciones, esto nos permite poder desplegar aplicaciones y solo cambiar ciertas variables de configuración en tus archivos de Helm. Piensa que Helm es el equivalente a apt, yum, Homebrew o pip para kubernetes.
¿Cómo lo hace?
Para el cómo vamos describir las partes de Helm:
- Chart: Chart.yaml, define los datos de la aplicación.
- Values: values.yaml, define las variables de configuración.
- Templates: templates/, define las plantillas.
- Charts: charts/, define los directorios de las aplicaciones. Almacena todas las dependencias de los charts que sedefinan en Chart.yaml y se reconstruyan con
bash helm dependency build
o
bash helm dependency update
.
La ventaja es poder desplegar nuestra aplicación en ambientes de desarrollo, pruebas o producción de la manera más homogenea posible solo cambiando variables en nuestros Helm charts y evitar esa "diferencia/drift" que se suele tener entre ambientes.
Repositorios
Ya mencioné que Helm es una manejador de paquetes, lo interesante es que se pueden usar repositorios de paquetes de terceros e instalar aplicaciones como Grafana, Prometheus, Argo CD, etc. de una forma sencilla y así mantener versionados los paquetes.
Existe un repositorio de paquetes que sería el equivalente de dockerhub para helm el cual está aquí.
Instalación
Ya son muchas palabras pero nada de acción, helm es un simple ejecutable que puedes descargar desde el github del proyecto aquí
Nota: revisa si en los repositorios de tu distribución se encuentra el paquete, actualmente soporta Linux, MacOS, Windows y FreeBSD:
fedora
sudo dnf install helm
Debian/Ubuntu
curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm
Archlinux
sudo pacman -S helm
FreeBSD
pkg install helm
Si lo quieres instalar "manualmente" una vez hayas descargado el ejecutable lo descomprimes (tar -zxvf helm-VERSION_DESCARGADA.linux-amd64.tar.gz). y lo guardas en tu path, en mi caso me gusta tener este tipo de herramientas de terceros en ~/.local/bin y ésta ruta la tengo agregada en mi $PATH. Y si lo quieres tener para todos los usuarios de tu sistema, con root lo mueves a /usr/local/bin.
Te recomiendo que te instales los plugins para bash, zsh o la shell que uses para utilizar los Completion y agilizar tu flujo de trabajo un poco.
Primeros pasos con Helm
Hay dos tipos de búsquedas:
helm search hub: busca en todos los repositorios.
helm search repo: busca en un repositorio que ha agregado a su Helm.
Listar repositorios:
helm repo ls
Actualizar los repositorios:
helm repo update
Buscar algún paquete:
helm search repo argocd
Donde podemos ver las columnas URL del repositorio, la vesión del chart, la version de la aplicación empaquetada y una descripción.
Instalar un paquete:
helm install NombreDelProyecto bitnami/argo-cd -n argocd --create-namespace
Donde NombreDelProyecto es el nombre que tendra dentro de tu cluster de Kubernetes.
o
helm install bitnami/argo-cd -n argocd --generate-name --create-namespace
Nota: Helm por default te instalará los paquetes en el namespace default, por eso el uso del argumento -n.
Este comando nos instalará Argo-cd en el namespace argocd, y generará un nombre aleatorio.
Podemos comprobar que la aplicacion ya se ha instalado en nuestro cluster de Kubernetes:
Para listar los paquetes instalados:
helm list --all-namespaces
Desinstalar un paquete:
helm uninstall argo-cd-98723492 -n argocd
Nota: el número después del nombre de argo-cd es el identificador del paquete.
Si quieres ver los parámetros de configuración con que fue creado el paquete antes de instalarlo desde helm puedes hacerlo con:
helm inspect [all, chart, crds, readme, values] bitnami/argo-cd
Personalizando Charts
Todo muy bonito, pero supongamos que quiero modificar parámetros en los charts (solo si el chart lo permite).
helm inspect values bitnami/argo-cd > config.yaml
Abrimos el archivo y modificamos los valores que necesitamos. Incluso puedes borrar las líneas que no necesitas.
Para instalar el paquete con los cambios que hicimos en el archivo:
helm install -f config.yaml bitnami/argo-cd --generate-name
Hasta aquí este post, en el siguiente te enseñaré cómo hacer tus propios charts.