Despliegue de una aplicación en Kubernetes usando Helm

Í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
comments powered by Disqus

Relacionados

Configuración del balanceador de carga HAProxy

En esta entrada se documenta el proceso de configuración y uso del balanceador de carga HAProxy.

Leer

Trabajo con el kernel de Linux

En esta entrada se aborda la actualización del kernel de Linux y su instalación desde el código fuente.

Leer

Cómo importar dispositivos a GNS3

En muchas ocasiones es habitual necesitar importar dispositivos que no están incluidos en la instalación básica de GNS3 para simular redes similares a las que podemos encontrar en la vida real. En este tutorial hay un par de ejemplos en los que se importan las imágenes de diferentes dispositivos en el simulador.

Leer