Cómo desplegar aplicaciones en Kubernetes utilizando Helm

Este artículo es la continuación de mi artículo«¿Qué es Helm y cómo instalarlo en un servidor Ubuntu 20.04?«. Si eres nuevo en Helm, te recomiendo que primero leas el artículo que he mencionado. En este artículo, liberaremos Apache del gráfico existente. Crearemos un gráfico de ejemplo y lo liberaremos, actualizaremos, revertiremos, borraremos y restauraremos. Veamos brevemente los comandos antes de utilizarlos en el artículo más adelante.

  1. búsquedahelm: Buscar cartas Helm
  2. helmrepo: Realiza operaciones como añadir, listar, eliminar, actualizar e indexar en el repositorio
  3. helmeliminar: Elimina el gráfico, lo que a su vez elimina todos sus objetos Kubernetes.
  4. helmestado: Muestra el estado de la versión.
  5. helmcrear: Crear una carta helm.
  6. helminstalar: Instalar un gráfico que a su vez crea sus objetos Kubernetes.
  7. helmupgrade: Actualizar una versión con los cambios que le hayamos hecho.
  8. helmhistory: Obtener el historial de la versión.
  9. helmrollback: Revertir los cambios a la versión anterior.

Antes de continuar, se supone que estás familiarizado con los conceptos básicos de Helm. También se supone que tienes un clúster Kubernetes y el cliente helm ya instalado en él.

Requisitos previos

  1. Clúster Kubernetes con al menos 1 nodo trabajador.
    Si quieres aprender a crear un Clúster Kubernetes, haz clic aquí. Esta guía te ayudará a crear un clúster Kubernetes con 1 Nodo Maestro y 2 Nodos en Instancias EC2 de AWS Ubuntu 18.04.
  2. Helm instalado en tu nodo maestro(Busca mi artículo llamado «Qué es Helm y cómo instalarlo en un servidor Ubuntu 20.04» para entender los fundamentos de Helm e instalarlo).

¿Qué vamos a hacer?

  1. Liberar un gráfico de muestra del repositorio.
  2. Crea un gráfico y libera una aplicación de ejemplo.
  3. Actualizar la versión.
  4. Restaurar la versión después de eliminarla

Liberar un gráfico de muestra del repositorio

En primer lugar, vamos a comprobar si «helm» está disponible en el servidor o no.

versión helm

Como ejemplo, vamos a intentar instalar un gráfico de Apache desde el repositorio. Ejecuta el siguiente comando para buscar Apache en el hub.

helm search hub apache

Buscar un gráfico en Hub

Obtendrás una serie de resultados, copia la URL de una de las búsquedas de Apache. En este caso, he copiado la primera URL.

Pulsa la URL en el navegador web y verás una página como la siguiente.

En esta página, obtendrás comandos para añadir un repositorio a tu sistema local e instalar el gráfico desde él.

Obtener una URL del Repo del Gráfico

Ejecuta los comandos en tu sistema local que añadirán el repositorio para el gráfico de Apache.

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

helm repo list

Una vez que tengas el repositorio en tu sistema, ya estás listo para instalar la carta y crear una versión para Apache utilizando Helm.

helm install mi-lanzamiento bitnami/apache

Añade un repo e instala el gráfico

Una vez ejecutados con éxito los comandos, verás la salida de arriba.

Una vez liberado el gráfico, podrás ver los objetos que se han creado en el clúster Kubernetes.

kubectl get nodos

kubectl get pods

Ahora puedes obtener la IP del pod e intentar acceder a la página Apache utilizando el comando curl.

kubectl get pods -o ancho

kubectl get svc

curl 10.244.1.2:8080

Comprueba los objetos Kubernetes creados por el gráfico

Si quieres borrar la release puedes hacerlo simplemente utilizando el siguiente comando

helm borrar mi-lanzamiento

Puedes listar las versiones en el clúster y ver si la versión se ha eliminado correctamente o no.

helm ls

helm status mi-liberación

Borrar la liberación

Crear un gráfico y desplegar una aplicación de ejemplo

En el escenario anterior, instalamos un gráfico que ya estaba disponible y configurado. Podemos crear nuestro propio gráfico y desplegar nuestra aplicación. Crear un gráfico es muy sencillo utilizando helm. Si ejecutas el siguiente comando obtendrás un gráfico con una aplicación de ejemplo de Nginx en él.

helm crear-mi-primer-gráfico

Explora la estructura de carpetas del gráfico que hemos creado con el comando anterior.

cd mi-primer-gráfico/

ls -l

ls -l gráficos/

ls -l plantillas/

ls -l plantillas/pruebas/

Crear un gráfico

Comprueba el contenido del archivo Chart.yaml.

ls -lt

cat Gráfico.yaml

Ver Chart.yaml

Comprueba el contenido de values.yaml

ls -lt

cat valores.yaml

Ver values.yaml

Ahora vamos a desplegar la aplicación de ejemplo utilizando el gráfico local.

pwd

cd ..

ls -l | grep mi-primer-gráfico

kubectl get pods

helm install mi-primera-liberación mi-primera-carta/

Crear una liberación utilizando el Gráfico

Una vez que la carta se libere correctamente, podrás ver que se ha creado un pod en el clúster.

kubectl get pods

kubectl get svc

Ahora puedes acceder al pod Nginx a través del servicio.

curl 10.104.229.187

Comprueba los objetos Kubernetes creados por el gráfico

Puedes encontrar información sobre la liberación que hemos creado utilizando el siguiente comando.

helm ls

helm status mi-primer-lanzamiento

Comprueba el estado de la liberación

Actualiza la versión

En el escenario anterior, creamos un gráfico con una aplicación Nginx de ejemplo. El recuento de réplicas en el escenario anterior era 1. Si quieres aumentar el recuento de réplicas puedes hacerlo fácilmente haciendo cambios en el archivo values.yaml.

cat mi-primera-carta/valores.yaml | grep replica

vim mi-primera-carta/valores.yaml

cat mi-primera-carta/valores.yaml | grep replica

helm ls

Ahora puedes desplegar fácilmente tus cambios y actualizar tu versión.

helm upgrade mi-primera-lanzamiento mi-primera-carta/

Incluso puedes ver que la revisión de la versión se ha actualizado a 2.

helm ls

Esta vez puedes ver dos pods ejecutándose en el clúster, ya que habíamos especificado el recuento de réplicas a 2.

kubectl get pods

Cambia el ReplicaCount y actualiza la versión

helm ls

Si comprobamos el historial de la versión nos daremos cuenta de que la versión tiene dos revisiones. La revisión 1 tenía 1 pod y más tarde actualizamos el número de réplicas a 2, lo que creó la revisión 2 de la versión.

helm history mi-primer-lanzamiento

Si no queremos que se publiquen los cambios en la revisión 2 y queremos volver a la revisión 1, podemos hacerlo simplemente utilizando el siguiente comando rollback.

helm retroceder mi-primer-lanzamiento 1

helm ls

Y esto creará la revisión 3 para la liberación.

helm historial mi-primer-release

Ahora puedes ver que sólo hay un pod ejecutándose en el clúster.

kubectl get pods

Comprueba el historial y anula la liberación

En caso de que quieras eliminar la aplicación Nginx de ejemplo liberada del gráfico, puedes eliminarla borrando la liberación.

helm ls

helm delete mi-primera-liberación

helm ls

Borrar la liberación

Restaurar la liberación después de borrarla

En el escenario anterior, hemos borrado la liberación. Pero, por defecto, la versión no conserva su historial de versiones cuando se elimina. En caso de que quieras revertirla, no podrás hacerlo a menos que especifiques la opción –keep-history al comando delete release.

helm ls

helm install mi-segunda-version mi-primera-carta/

helm ls

Si especificas la opción –keep-history al borrar la release, helm creará una nueva versión de la release. De este modo, puedes volver a la versión de trabajo anterior incluso después de eliminar la versión o la aplicación.

helm borrar mi-segunda-lanzamiento –conservar-historia

helm ls

helm ls -a

helm historial mi-segundo-lanzamiento

helm rollback mi-segundo-lanzamiento 1

helm ls

helm historia mi-segundo-lanzamiento

Borrar y restaurar la liberación

Conclusión

En este artículo, hemos desplegado una aplicación de ejemplo de la carta Helm disponible en Internet. Incluso vimos los pasos para crear una carta Helm en nuestro sistema y liberarla. Junto con esto, vimos cómo borrar cartas Helm, retroceder a versiones anteriores y preservar el historial de liberación incluso después de borrar la charla.

También te podría gustar...