## ¿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í](https://artifacthub.io/). ## 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í](https://github.com/helm/helm/releases) **Nota:** revisa si en los repositorios de tu distribución se encuentra el paquete, actualmente soporta Linux, MacOS, Windows y FreeBSD: fedora ```bash sudo dnf install helm ``` Debian/Ubuntu ```bash 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 ```bash sudo pacman -S helm ``` FreeBSD ```bash 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: ```bash helm repo ls ``` Actualizar los repositorios: ```bash helm repo update ``` Buscar algún paquete: ```bash 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: ```bash helm install NombreDelProyecto bitnami/argo-cd -n argocd --create-namespace ``` Donde NombreDelProyecto es el nombre que tendra dentro de tu cluster de Kubernetes. o ```bash 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: ```bash helm list --all-namespaces ``` Desinstalar un paquete: ```bash 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: ```bash 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). ```bash 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: ```bash 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.
No hay comentarios.:
Publicar un comentario