Helm el manejador de paquetes de Kubernetes

Guillermo Garcia - Aug 19 - - Dev Community

¿Qué es Helm?

Image description

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
Enter fullscreen mode Exit fullscreen mode


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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Archlinux

sudo pacman -S helm
Enter fullscreen mode Exit fullscreen mode

FreeBSD

pkg install helm
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Actualizar los repositorios:

helm repo update
Enter fullscreen mode Exit fullscreen mode

Buscar algún paquete:

helm search repo argocd
Enter fullscreen mode Exit fullscreen mode

Image description

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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.

Image description

Podemos comprobar que la aplicacion ya se ha instalado en nuestro cluster de Kubernetes:

Image description

Para listar los paquetes instalados:

helm list --all-namespaces
Enter fullscreen mode Exit fullscreen mode

Desinstalar un paquete:

helm uninstall argo-cd-98723492 -n argocd
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Hasta aquí este post, en el siguiente te enseñaré cómo hacer tus propios charts.

. . . . . . . . . . . . . . . . . . . . . . .