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.
- búsquedahelm: Buscar cartas Helm
- helmrepo: Realiza operaciones como añadir, listar, eliminar, actualizar e indexar en el repositorio
- helmeliminar: Elimina el gráfico, lo que a su vez elimina todos sus objetos Kubernetes.
- helmestado: Muestra el estado de la versión.
- helmcrear: Crear una carta helm.
- helminstalar: Instalar un gráfico que a su vez crea sus objetos Kubernetes.
- helmupgrade: Actualizar una versión con los cambios que le hayamos hecho.
- helmhistory: Obtener el historial de la versión.
- 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
- 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. - 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?
- Liberar un gráfico de muestra del repositorio.
- Crea un gráfico y libera una aplicación de ejemplo.
- Actualizar la versión.
- 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
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.
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
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
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
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/
Comprueba el contenido del archivo Chart.yaml.
ls -lt
cat Gráfico.yaml
Comprueba el contenido de values.yaml
ls -lt
cat valores.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/
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
Puedes encontrar información sobre la liberación que hemos creado utilizando el siguiente comando.
helm ls
helm status mi-primer-lanzamiento
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
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
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
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
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.