En la era actual de las aplicaciones basadas en contenedores, gestionar un clúster de Kubernetes puede ser un desafío, especialmente si estás trabajando con despliegues manuales. ¿Qué pasaría si pudieras simplificar este proceso, automatizar el despliegue, y mantener el control de versiones de tu aplicación de una manera eficiente? Aquí es donde herramientas como Helm y Argo CD juegan un papel clave, permitiéndote llevar tus aplicaciones desde el desarrollo hasta la producción sin complicaciones, todo dentro de Google Kubernetes Engine (GKE), el servicio de Kubernetes administrado por Google Cloud. En este post veremos cómo automatizar el despliegue Kubernetes con Helm y Argo CD en GKE.
Te mostraremos cómo cada una de estas herramientas puede facilitar tu trabajo con Kubernetes: desde Helm para el control y despliegue de tus aplicaciones, hasta Argo CD para la automatización continua, todo en la infraestructura robusta de GKE.
¡Sigue leyendo para conocer cómo estos servicios pueden mejorar tu flujo de trabajo y garantizar un control total sobre tus clústeres!
El despliegue manual en Kubernetes y sus limitaciones
Cuando comienzas a trabajar con Kubernetes, el proceso más básico de despliegue consiste en escribir y aplicar manifiestos YAML para definir los recursos necesarios para tu aplicación. Aunque este enfoque funciona, puede ser tedioso y propenso a errores, especialmente cuando necesitas gestionar múltiples entornos o versiones de una aplicación.
Problemas con el despliegue manual:
- Duplicación de esfuerzo: Si necesitas desplegar la misma aplicación en diferentes entornos (desarrollo, staging, producción), tienes que modificar varios manifiestos manualmente.
- Falta de control de versiones: Al trabajar directamente con manifiestos YAML, no hay una forma clara de versionar tus aplicaciones.
- Actualización manual: Cada vez que necesitas actualizar una aplicación o hacer rollback, debes aplicar los cambios manualmente en el clúster, lo que puede generar inconsistencias si no se realiza correctamente.
Aquí es donde Helm entra en acción, proporcionando una forma de gestionar y automatizar los despliegues de Kubernetes.
Mejorando el despliegue con Helm
Helm es una herramienta diseñada específicamente para gestionar paquetes de aplicaciones en Kubernetes. En lugar de trabajar con múltiples archivos YAML para cada recurso, Helm utiliza charts, que son paquetes reutilizables que definen toda la configuración de una aplicación.
Uso de Helm
Nos conectamos a Helm mediante un cliente, que actúa como la interfaz para interactuar con el clúster de Kubernetes. A través del cliente, podemos ejecutar una serie de comandos para gestionar las aplicaciones que van a ser gestionadas durante todo su ciclo de vida en el cluster de Kubernetes.
Cuando instalamos o actualizamos aplicaciones con Helm, las releases que contienen la configuración y el estado de los despliegues son almacenadas dentro del clúster. Por defecto, Helm guarda esta información en Secrets dentro de Kubernetes, aunque también es posible configurarlo para utilizar una base de datos externa como PostgreSQL.
En el caso de elegir la opción por defecto guardado de datos se realiza en el namespace donde se lanzan los charts
*** El formato del nombre dentro de los secrets es helm.sh/release.v1 ***
Instalación de Helm
Para instalar Helm en Mac, puedes usar Homebrew, que es un gestor de paquetes popular en Mac.
Instalar Homebrew (si no lo tienes ya instalado):
/bin/bash -c «$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)»
Instalar Helm usando Homebrew:
brew install helm
Verificar la instalación:
helm version
Comandos básicos de Helm para gestionar releases
- Instalar una release: Despliega una nueva aplicación utilizando un chart de Helm.
helm install <nombre-liberación> <ruta-del-chart> –namespace <nombre-namespace> -f <values-file.yaml>
- Listar las releases: Muestra todas las releases desplegadas en el namespace.
helm list –namespace <nombre-namespace>
- Actualizar una release con nuevos valores: Si necesitas modificar la configuración de la aplicación (como la versión de la imagen, recursos, etc.):
helm upgrade <nombre-liberación> <ruta-del-chart> -f <archivo-valores.yaml> –namespace <nombre-namespace>
- Ver historial de versiones de una release: permite visualizar el histórico de cambios realizados sobre una versión.
helm history <nombre-liberación> –namespace <nombre-namespace>
- Rollback a una versión anterior: Restaura la configuración y recursos de Kubernetes a una versión anterior.
helm rollback <nombre-liberación> <número-revisión> –namespace <nombre-namespace>
- Eliminar completamente una release: permite eliminar completamente una release haciendo que Helm borre todos y cada uno de los manifiestos existentes instalados al crear/modificar dicha aplicación.
helm uninstall <release-name> –namespace <namespace>
Helm no solo te facilita la vida al gestionar tu aplicación, sino que también te ofrece un mayor control sobre los cambios. Sin embargo, aunque Helm proporciona control y consistencia, es aquí donde entra la automatización más completa con Argo CD.
Introduciendo Argo CD: Automatización Continua y GitOps
Argo CD es una herramienta de GitOps que simplifica y automatiza el proceso de despliegue continuo en Kubernetes. Aunque Helm es una herramienta muy potente para la gestión de aplicaciones en Kubernetes, sigue dependiendo de comandos manuales para realizar tareas como el despliegue, actualización y rollback de aplicaciones. Aquí es donde entra en juego Argo CD, añadiendo una capa de automatización que se sincroniza con un repositorio Git.
Cómo funciona Argo CD
Argo CD sigue el principio de GitOps, donde el repositorio Git se convierte en la única «fuente de verdad» para tus aplicaciones. Esto significa que cualquier cambio que realices en los archivos YAML o charts de Helm en Git se aplicará automáticamente en tu clúster de Kubernetes. No hay necesidad de ejecutar manualmente comandos como helm upgrade o helm rollback, ya que Argo CD se encarga de sincronizar y desplegar los cambios en tu clúster de forma continua.
Con Argo CD, no solo tienes el control y la automatización, sino que también puedes confiar en que tu clúster siempre estará alineado con lo que está en Git, eliminando la necesidad de intervenciones manuales.
Principales características uso de Argo con Helm
1. Despliegue automatizado
Cuando usas Helm solo, necesitas ejecutar manualmente los comandos para desplegar o actualizar una aplicación. Con Argo CD, este proceso se automatiza completamente. Argo CD monitorea tu repositorio Git y, cada vez que detecta un cambio en un archivo YAML o en un chart de Helm, aplica automáticamente ese cambio en tu clúster. Esto no solo ahorra tiempo, sino que garantiza que el estado del clúster esté siempre sincronizado con Git.
Ejemplo: Si actualizas el values.yaml de un chart en tu repositorio, Argo CD lo detectará y actualizará automáticamente la aplicación en tu clúster, sin que tengas que ejecutar helm upgrade manualmente.
2. Auditoría y rrazabilidad Completa
Con Helm, los cambios y actualizaciones se registran localmente en el clúster, lo que limita la trazabilidad del proceso. Si otra persona necesita revisar los cambios realizados en la infraestructura, tendría que acceder al historial de Helm en el clúster. Con Argo CD, todos los cambios se gestionan a través de Git, por lo que puedes ver un historial detallado y tener un control de auditoría completo.
Ejemplo: Cualquier modificación en los charts o manifiestos en Git genera un nuevo commit, lo que te permite ver qué cambios se hicieron, quién los hizo y cuándo fueron aplicados dentro del clúster.
3. Rollback Simplificado
Mientras que con Helm puedes hacer rollback a versiones anteriores de una aplicación, esto implica comandos manuales y una intervención directa en el clúster. En cambio, con Argo CD, todo está gestionado desde Git. Si necesitas volver a una versión anterior, solo tienes que revertir los commits en Git, y Argo CD se encargará de sincronizar el clúster con esa versión.
Ejemplo: Si algo sale mal después de un nuevo despliegue, puedes revertir los cambios con un simple git revert y Argo CD volverá a aplicar la versión anterior en el clúster.
4. Monitoreo Continuo y Corrección de Cambios Manuales
Uno de los grandes problemas de gestionar clústeres Kubernetes manualmente es la falta de control sobre los cambios directos en el clúster. Si alguien realiza modificaciones manuales, esto puede desincronizar el estado real del clúster con la configuración esperada. Con Argo CD, este problema desaparece, ya que la herramienta detecta automáticamente cualquier cambio manual en el clúster y lo corrige para que coincida con lo que está en Git.
Ejemplo: Si un administrador cambia manualmente la configuración de un pod o servicio en Kubernetes, Argo CD detectará la diferencia y corregirá el clúster para que esté alineado con el repositorio Git.
5. Flujo GitOps Totalmente Integrado
El enfoque de GitOps que ofrece Argo CD significa que cualquier cambio que realices en Git se reflejará automáticamente en el clúster, lo que proporciona un flujo de trabajo CI/CD completamente automatizado. En lugar de tener que ejecutar comandos manuales, tu repositorio Git se convierte en la única fuente de verdad, lo que permite una integración continua y despliegue continuo en cualquier entorno de Kubernetes.
Ejemplo: Cada vez que un desarrollador hace un commit en el repositorio Git que contiene los manifiestos de Kubernetes o charts de Helm, Argo CD sincroniza automáticamente los cambios, asegurando un flujo de trabajo ágil y automatizado.
Despliegue de Aplicaciones en GKE con Helm
Una vez que tienes tus herramientas listas, el siguiente paso es ejecutar todo en una infraestructura robusta como Google Kubernetes Engine (GKE). GKE es un servicio administrado de Kubernetes que proporciona escalabilidad, alta disponibilidad y seguridad, lo que lo convierte en la plataforma ideal para ejecutar tus aplicaciones con Kubernetes.
Pasos para conectarte a un clúster de GKE:
- Instalar Google Cloud SDK: Descarga e instala el SDK de Google Cloud.
Autenticación: Inicia sesión en Google Cloud con:
gcloud auth login
- Configurar tu proyecto: Define el proyecto en Google Cloud donde está tu clúster:
gcloud config set project [PROJECT_ID]
- Conectarte al clúster: Obtén las credenciales del clúster de GKE:
gcloud container clusters get-credentials [CLUSTER_NAME] –zone [ZONE]
- Obtener el comando completo desde la consola de gke de manera directa: Si accedemos a la consola cloud consolde de gke (https://console.cloud.google.com ) podemos acceder al servicio de GKE accediendo a nuestro cluster y pulsando la opción establecer conexión
- Una vez conectado a GKE, puedes utilizar los comandos de Helm para desplegar tus aplicaciones en el clúster.
Conclusión Kubernetes con Helm
En el mundo actual, donde la eficiencia, la automatización y el control son esenciales para el éxito, adoptar herramientas como Helm y Argo CD en conjunto con la infraestructura confiable de GKE te posiciona un paso adelante en la gestión de aplicaciones en Kubernetes. Este enfoque no solo te proporciona un despliegue más rápido y fiable, sino que también te brinda el control y la trazabilidad necesarios para trabajar de manera ágil y efectiva.
Si tu equipo todavía realiza despliegues manuales o lucha por mantener la consistencia en entornos de desarrollo, prueba implementar esta combinación de herramientas. No solo simplificará tu proceso, sino que verás cómo la automatización y la integración continua se convierten en una ventaja competitiva para tu equipo y tu organización.
¿Listo para realizar el despliegue? No dudes en explorar más sobre Helm, Argo CD y GKE, y cómo pueden revolucionar la manera en que gestionas tus aplicaciones. ¡El futuro de Kubernetes es ahora, y está al alcance de tu mano!
¿Quieres aprender en profundidad sobre Kubernetes? Síguenos en nuestro Canal de YouTube y aprende con nuestros webinars y formaciones gratuitas.