Índice
Helm es uno de los proyectos más interesantes dentro de la comunidad de Kubernetes.
La idea de Helm es controlar un despliegue (lo llaman release) de tal forma que:
- Usando un solo conjunto de valores (generalmente expresado en YAML):
- Todos los artefactos que lo componen (deploys, pods, configmaps, services...) tienen reflejados los valores de configuración correctos.
- Están declarados correctamente en el clúster K8s.
- Ante un cambio de valores, se reconfiguran los artefactos correspondientes.
- El release, con un solo comando, puede:
- Listarse
- Detenerse
- Actualizarse
- Reconfigurarse
- Los releases parten de planes o charts, es decir, repositorios con el código necesario para lanzar una aplicación en Kubernetes:
- Se encuentran en repositorios públicos.
- Los hay de todos los tipos (mysql, mongo, Wordpress...).
- Se pueden descargar y utilizar o ampliar como queramos.
En nuestro ubuntu es muy sencillo.
- Con snap:
snap install helm --classic
- Con apt:
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
*¡Nota! El binario está en /snap/bin/helm, si no está en la ruta, puede incluirlo o crear un enlace simbólico, por ejemplo, a /usr/sbin/helm.
En versiones anteriores era necesario inicializar helm para empezar a trabajar con él, pero en la versión 3 ya no es así. Si estamos usando una versión anterior, tendremos que lanzar el siguiente comando:
helm init
*¡Nota! Si dice que las versiones son incompatibles, haga helm init --upgrade
.
*¡Nota 2! helm puede tardar un minuto en ponerse en marcha. Espere hasta que pueda interactuar con él.
Ahora, podemos crear un release.
helm [comando]
comando | Descripción |
---|---|
completion | Generar scripts de autocompletado para el shell especificado |
create | Crear un nuevo chart con el nombre indicado |
dependency | Gestionar las dependencias de un chart |
env | Información del entorno de cliente |
get | Descargar información ampliada de la release nombrada |
help | Ayuda sobre cualquier comando |
history | Obtener el historial de release |
install | Instalar una chart |
lint | Examinar posibles incidencias de una chart |
list | listar releases |
package | Empaquetar un directorio chart en un fichero chart |
plugin | Instalar (install), listar (list) o desinstalar (uninstall) plugins Helm |
pull | Descargar una chart de un repositorio y (opcional) desempaquetarlo en directorio local |
repo | Añadir (add), listar (list), borrar (remove), actualizar (update), e indexar (index) repositorios chart |
rollback | roll back un release a la revisión anterior |
search | Buscar keyword en las charts |
show | Mostrar información de una chart |
status | Mostrar el estado de una release nombrada |
template | Representar localmente templates |
test | Ejecutar pruebas a una release |
uninstall | desinstalar una release |
upgrade | Actualizar una release |
verify | verificar si una chart en una path ha sido firmada y validada |
version | Mostrar información de la version del cliente helm |
Para crear un release, descargue el chart o el plano o pídale a helm que lo descargue él mismo.
Los charts están en repositorios.
# listamos os repos
helm repo list
NAME URL
local http://127.0.0.1:8879/charts
# Engadimos o repo de bitnami, un dos máis utilizados
helm repo add bitnami https://charts.bitnami.com
"bitnami" has been added to your repositories
# Listamos os charts dispoñibles
helm search repo bitnami
NAME CHART VERSION APP VERSION
bitnami/airflow 13.0.4 2.3.3 Apache Airflow is a tool to express and execute...
bitnami/apache 9.1.18 2.4.54 Apache HTTP Server is an open-source HTTP serve...
bitnami/argo-cd 4.0.6 2.4.8 Argo CD is a continuous delivery tool for Kuber...
Podemos, por ejemplo, instalar un mariadb:
helm install bbdd bitnami/mariadb
Para ver el release
helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
bbdd default 1 2022-08-11 10:12:54.717064554 -0400 EDT deployed mariadb-11.1.7 10.6.8
Si exploramos nuestro clúster:
kubectl get pods
NAME READY STATUS RESTARTS AGE
bbdd-mariadb-0 1/1 Running 0 98s
También creó el servicio vinculado al pod, un secreto para password y un configmap.
Es decir, ¡tenemos un MariaDB instalado con las mejores prácticas de la industria para Kubernetes!
Para configurarlo hay que ir a artifacthub, donde nos indican los valores a modificar para gestionar nuestra instalación.
Ponga esos valores en un archivo yaml:
# values.yaml
db:
username: paco
password: segredo
database: test
Ahora estamos relanzando nuestro release:
# borramos a release
helm uninstall bbdd
# relanzamos cos values
helm install maria -f values.yaml bitnami/mariadb
Y tendríamos el deployment con una base de datos creada y un usuario vinculado a ella.
El siguiente documento contiene los apuntes tomados en el curso «Helm 3: Despliega aplicaciones en Kubernetes» impartido por Apasoft Training en diciembre de 2022. El curso udemy consta de 5 horas aproximadamente de vídeo-tutoriales. Las prácticas aquí contenidas tuvieron una duración de alrededor de unas 12 horas.
Apuntes del Curso Helm - Diciembre 2022
Puedes seguir con la guía 06 K9s: Otro estilo de CLI para k8s.
Todas las guías: