¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Kubernetes
  3. Helm
Extrait - Kubernetes Administre la plataforma de despliegue de sus aplicaciones en contenedores
Extractos del libro
Kubernetes Administre la plataforma de despliegue de sus aplicaciones en contenedores
4 opiniones
Volver a la página de compra del libro

Helm - Administrador de paquetes

Objetivos del capítulo y requisitos previos

Para abordar este capítulo, es necesario dominar los conceptos que se han visto en los capítulos anteriores y, en especial, la manipulación de elementos en Kubernetes, así como ciertas nociones, como los espacios de nombres (namespace) o despliegues (deployment, pod).

El objetivo de este capítulo es presentar y configurar el administrador de paquetes Helm.

Presentación de Helm

1. ¿Por qué llamar a Helm?

Helm fue presentado por la comunidad para dar respuesta a la necesidad de simplificar la instalación de software en un clúster de Kubernetes. Antes de la llegada de este mecanismo, el administrador debía gestionar el ciclo de vida de los archivos YAML, su personalización y la integración entre los productos.

Un clúster de Kubernetes funciona con muchos productos (Elasticsearch, Prometheus, Grafana, Nginx, etc.). Dominarlos todos puede llevar mucho tiempo.

Los charts Helm son una valiosa ayuda para superar los problemas de instalación inicial.

Hablamos de chart Helm en el caso de paquetes Helm.

2. Principio de funcionamiento

En la versión 3, Helm funciona con un cliente escrito en Go. Este último se basa en la API de Kubernetes. El programa se presenta como un binario autónomo y no requiere ninguna dependencia (ni siquiera el binario kubectl).

Anteriormente, la versión 2 de Helm utilizaba una parte del servidor (Tiller). No use esta solución: además de que todo esto está obsoleto (Helm 3 se lanzó a finales de 2019), esta función plantea problemas de seguridad.

Despliegue de Helm

1. Instalación del cliente Helm

a. Instalación con el comando Arkade

La opción más sencilla es usar el comando arkade, seguido de la opción get y del nombre del paquete que hay que recuperar:

$ arkade get helm 

Seguidamente, la herramienta descarga la última versión y devuelve el siguiente mensaje:

Downloading: helm 
Downloading: https://get.helm.sh/helm-v3.7.2-linux-amd64.tar.gz 
13.23 MiB / 13.23 MiB [------------------------------------] 100.00% 
/tmp/helm-v3.7.2-linux-amd64.tar.gz written. 
/tmp/linux-amd64 linux-amd64/ 
... 
Tool written to: /home/yannig/.arkade/bin/helm 
 
... 

Para instalar una versión específica, añada un signo de arroba (@) después del nombre del paquete, seguido de la referencia que quiere instalar.

Aquí se muestra un ejemplo de instalación de la versión v3.7.2 (no olvide la v):

$ arkade get helm@v3.7.2 

b. Instalación manual

La instalación manual se desarrolla de la siguiente manera:

  • Obtener el binario correspondiente al sistema/arquitectura: https://github.com/helm/helm/releases

  • Descomprimir el binario.

  • Hacer que el binario esté disponible en las rutas de ejecución.

En Linux (arquitectura amd64), estas operaciones se pueden realizar usando los siguientes comandos:

  • Descargar los binarios:

$ wget https://get.helm.sh/helm-v3.7.2-linux-amd64.tar.gz 
  • Descomprimir el archivo...

Desplegar una aplicación con Helm

1. Determinar el paquete que hay que desplegar

a. Buscar un chart Helm

El binario de Helm está presente: es hora de hacer un primer despliegue.

En primer lugar, debe determinar el paquete que se debe desplegar. WordPress será la primera aplicación instalada.

Este software se compone de dos piezas:

  • Un front-end de presentación (basado en PHP).

  • Una parte de almacenamiento de datos (basada en MariaDB).

Antes de instalar una aplicación, debe buscar un paquete que cumpla con este servicio.

Esta búsqueda se realiza utilizando el comando helm con el repositorio de palabras clave search, seguida del patrón que hay que buscar:

$ helm search repo wordpress 

En la jerga de Helm, hablamos de un chart para designar un paquete.

Sin embargo, durante una primera ejecución, este comando no devuelve nada. De hecho, por defecto, Helm no tiene ninguna fuente de paquetes.

b. Gestionar las fuentes de charts Helm

En versiones anteriores de Helm v2, el origen del paquete estable se configuraba de forma predeterminada. Desde la versión 3, este ya no es el caso y debe agregarlo usted mismo.

En el caso de una instalación de WordPress, Bitnami proporciona un conjunto de paquetes perfectos para el resto del ejercicio en la dirección: https://bitnami.com/stack/wordpress/helm

Bitnami es un proyecto que tiene como objetivo proporcionar un conjunto de soluciones libres (WordPress, Drupal, Redmine, Mediawiki, etc.). Su desarrollo cuenta con el apoyo de la empresa española Bitrock, que fue adquirida por VMware en mayo de 2019.

La adición de una fuente se realiza con el comando helm y las siguientes opciones: 

  • Las palabras clave repo add.

  • El nombre del repositorio que se debe agregar (bitnami, por ejemplo).

  • La dirección del repositorio de charts Helm.

A continuación, se muestra el comando completo que se debe utilizar:

$ helm repo add bitnami https://charts.bitnami.com/bitnami 

El comando devolverá el siguiente mensaje:

"bitnami" has been added to your repositories 

Si el repositorio ya existe con la misma dirección, el comando devolverá el siguiente mensaje:

"bitnami" already exists with the same configuration, skipping 

En caso de conflicto con un repositorio existente con una dirección diferente, el comando devolverá el siguiente mensaje:

Error: repository name (bitnami) already exists...

Ciclo de vida de una aplicación desplegada con Helm

1. Abrir el puerto hacia WordPress

La aplicación está lista para funcionar. Es posible acceder al servidor de WordPress a través del puerto 8080 del pod de presentación, siguiendo este procedimiento:

  • Recuperar el nombre del pod asociado al contenedor de presentación.

  • Mapear el puerto 8080 de la máquina local, con el puerto 8080 del contenedor de presentación.

Recuperar la lista de pods del espacio de nombres intranet con el siguiente comando:

$ kubectl -n intranet get pods 

A continuación, se muestra el resultado de el comando:

NAME                                      READY   STATUS    RESTARTS   AGE 
wordpress-contabilidad-799d8d7b7d-mbsgx   1/1     Running   0          22m 
wordpress-contabilidad-mariadb-0          1/1     Running   0          22m 

Recupere también el despliegue presente en el mismo espacio de nombres:

$ kubectl -n intranet get deployment 

A continuación, se muestra el resultado esperado:

NAME                     READY   UP-TO-DATE   AVAILABLE   AGE 
wordpress-contabilidad   1/1     1            1           24m 

La conexión al contenedor de WordPress se hará con kubectl, seguido de estas opciones:

  • La opción port-forward.

  • La referencia del despliegue deployment/wordpress-contabilidad.

  • El puerto de escucha local (8080) seguido del carácter de dos puntos (:), a su vez seguido del puerto 8080 correspondiente al puerto utilizado por el contenedor.

No dude en cambiar el valor del puerto de escucha (8081, por ejemplo), en caso de que ya esté ocupado.

A continuación, se muestra el comando...