Despliegue de una aplicación en Kubernetes usando Helm
- Francisco Javier Huete
- Servicios
- March 9, 2025
Índice
Helm es una herramienta que permite instalar aplicaciones en un cluster de Kubernetes de forma sencilla en pocos pasos.
Instalación de Helm
Para instalar Helm hay que descargar el binario de su página de descargas, descomprimirlo y moverlo al directorio de binarios del sistema.
wget https://get.helm.sh/helm-v3.17.1-linux-amd64.tar.gz
tar -zxvf helm-v3.17.1-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm
En Debian también se puede instalar a través del gestor de paquetes apt
si se añade el repositorio de los desarrolladores al fichero sources list.
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
Instalación de un CMS con Helm
En este caso, se instala con Helm el CMS Wordpress del repositorio de Bitnami. Para poder descargar el chart necesario para la instalación de esta aplicación hay que añadir primero el repositorio.
helm repo add bitnami https://charts.bitnami.com/bitnami
Tras añadir el repositorio se puede buscar la lista de charts disponibles para instalar con Helm.
❯ helm search repo wordpress
NAME CHART VERSION APP VERSION DESCRIPTION
bitnami/wordpress 24.1.16 6.7.2 WordPress is the world's most popular blogging ...
bitnami/wordpress-intel 2.1.31 6.1.1 DEPRECATED WordPress for Intel is the most popu...
En la documentación del chart se recoge la lista de parámetros que se pueden modificar durante su despliegue. En este caso, se cambia el tipo de servicio a NodePort
y el nombre del blog y se instala la aplicación con helm install
.
helm install wordpress bitnami/wordpress --set service.type=NodePort --set wordpressBlogName="Blog de Javi Huete"
La instalación de la aplicación usando Helm genera todos los objetos necesarios en el cluster de Kubernetes para desplegarla.
❯ kubectl get all
NAME READY STATUS RESTARTS AGE
...
pod/wordpress-f8b567d6d-lcgx4 1/1 Running 0 2m48s
pod/wordpress-mariadb-0 1/1 Running 0 2m48s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 15d
...
service/wordpress NodePort 10.110.18.10 <none> 80:30594/TCP,443:32739/TCP 2m49s
service/wordpress-mariadb ClusterIP 10.108.2.160 <none> 3306/TCP 2m49s
service/wordpress-mariadb-headless ClusterIP None <none> 3306/TCP 2m49s
NAME READY UP-TO-DATE AVAILABLE AGE
...
deployment.apps/wordpress 1/1 1 1 2m49s
NAME DESIRED CURRENT READY AGE
...
replicaset.apps/wordpress-f8b567d6d 1 1 1 2m49s
NAME READY AGE
statefulset.apps/wordpress-mariadb 1/1 2m49s