Introducción
Kubernetes se ha convertido en un estándar para desplegar aplicaciones grandes. Ayuda a los desarrolladores a obtener ventajas significativas y ofrece características que no están disponibles en el alojamiento de servidores tradicional. Kubernetes permite el escalado horizontal sin las complicaciones de la infraestructura. Además, reduce el costo de adquirir y mantener la infraestructura a medida que la aplicación crece.
Sin embargo, administrar aplicaciones en Kubernetes también puede ser complejo y exige habilidades avanzadas. Desplegar aplicaciones utilizando Kubernetes y el proceso de Integración Continua y Despliegue Continuo (CI/CD) ayuda a superar este proceso complejo al proporcionar abstracción. GitOps es una de las herramientas que puede ayudar a lograr la abstracción.
En este tutorial, demostraremos cómo usar Argo CD para integrar y desplegar aplicaciones de forma continua en Kubernetes. Cada vez que se envía un cambio al repositorio, se despliega en el clúster de destino. Argo CD también proporciona controles de versiones, configuraciones y entornos de aplicaciones al integrarse con todo el ciclo de vida del desarrollo de software. Si tiene gestores de paquetes para Kubernetes como Helm, o si tiene su repositorio alojado en BitBucket o GitLab, Argo CD también puede integrarse perfectamente con todas estas plataformas.
Requisitos previos
Para completar este tutorial, debe tener:
-
Claves SSH en su máquina. Si no tiene un par de claves SSH ejecutándose en Linux/MacOS/BSD, puede crear uno siguiendo nuestro tutorial Descripción general de SSH – Servidores, clientes y claves SSH.
-
También necesitará un clúster de Kubernetes en funcionamiento. Además, debe tener kubectl ejecutándose en su máquina. Si no tiene un clúster de Kubernetes, puede seguir Cómo crear un clúster de Kubernetes usando Kubeadm en Ubuntu 18.04.
-
Debe tener una comprensión básica de los conceptos de Kubernetes. Si desea familiarizarse más con Kubernetes, puede seguir Conociendo los conceptos básicos de la herramienta Kubernetes.
Paso 1 – Instalar Argo CD
Antes de que podamos instalar Argo CD, necesitamos tener un entorno de Kubernetes ejecutándose con kubectl. Puede probar esto ejecutando el siguiente comando:
|
1 |
kubectl get nodes |

Debería ver al menos un nodo de Kubernetes ejecutándose en el estado Ready. Si no hay ningún nodo disponible, debe volver a verificar su instalación de Kubernetes. A continuación, crearemos un espacio de nombres separado para nuestra instalación de Kubernetes. Llamémoslo argocd. Mantendremos el servicio relacionado con Argo CD en este espacio de nombres:
|
1 |
kubectl create namespace argocd |
Después de eso, instale los scripts de Argo CD en el espacio de nombres recién creado anteriormente ejecutando el siguiente comando:
|
1 |
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml |

Para verificar el estado de los pods de Kubernetes, ejecute el siguiente comando:
|
1 |
watch kubectl get pods -n argocd |
Obtendrá un resultado como el siguiente:

Aquí ha concluido con éxito la instalación de Argo CD. Para salir de la interfaz watch, puede presionar Ctrl + C. Para acceder a los servicios en este clúster de Kubernetes, necesitaremos redirigir los puertos. Le mostraremos cómo hacerlo en el siguiente paso.
Paso 2 – Redirigir puertos para acceder a Argo CD
Kubernetes puede desplegar su aplicación en cualquier puerto de su elección. Por lo tanto, es necesario redirigir los puertos de la aplicación de Kubernetes para acceder a ellos desde la máquina local. Argo CD expone un servicio llamado argocd-server que utiliza el puerto 443. El puerto 443 es el puerto predeterminado para los servicios HTTPS y HTTP. Puede redirigir los puertos de Kubernetes a un puerto de su elección. En nuestro ejemplo a continuación, hemos redirigido el puerto a 8080. Para redirigir puertos, ejecute el siguiente comando en la terminal:
|
1 |
kubectl port-forward svc/argocd-server -n argocd 8080:443 |
Una vez que reenvíe el puerto, este se bloqueará para que los otros servicios no puedan acceder a él. Para tener un acceso sin interrupciones, siempre se recomienda ejecutar el comando mencionado anteriormente en una nueva terminal. Una vez que termine, puede presionar Ctrl+C para salir del proceso de reenvío de puertos.
Después de haber reenviado el puerto, puede navegar a Argo CD dirigiéndose a localhost:8080. Se le pedirán las credenciales que puede obtener desde la línea de comandos en el siguiente paso.
Step 3 – Manage Argo CD from the Command Line
Tenemos que instalar la línea de comandos de Argo CD para administrar la instalación de Argo CD. La forma recomendada de instalar Argo CD es utilizar un gestor de paquetes como Homebrew. Homebrew es una herramienta de gestión de paquetes popular para la instalación en macOS y Linux. Puede instalar Homebrew usando el siguiente comando:
|
1 |
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" |
Debería tener brew instalado en su máquina. Es posible que aparezca una solicitud de contraseña para iniciar sesión. Puede ejecutarlo ejecutando el siguiente comando:
|
1 |
brew install argocd |
Obtendrá el comando argocd después de la instalación anterior. Necesitaremos recuperar la contraseña de administrador usando el comando kubectl . Se generó automáticamente durante la instalación. A continuación se muestra el comando para obtenerla:
|
1 |
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo |
Ahora que ha instalado Argo CD, puede iniciar sesión usando el comando argocd login a continuación:
|
1 |
argocd login localhost:8080 |
Deberá iniciar sesión para implementar la aplicación cuando use la línea de comandos:

Es posible que reciba una advertencia de seguridad. Si es así, presione y para continuar. Es posible que muchos usuarios deseen cambiar la contraseña una vez que hayan iniciado sesión. Si es así, ejecute el comando argocd account update-password para cambiar la contraseña. Ahora tenemos una configuración de Argo CD completamente funcional.
Finalmente, implementaremos una aplicación en el clúster de Kubernetes utilizando el Argo CD instalado.
Step 4 – Utilize Multiple Clusters
Antes de continuar con la configuración de su aplicación, es necesario conocer la máquina de destino donde desea implementarla. En muchos de los escenarios, Argo CD y la aplicación implementada pueden ejecutarse en el mismo clúster. Este es el comportamiento predeterminado de Argo CD, pero no es una limitación. Si desea implementar la aplicación en otras máquinas de destino, primero ejecute kubectl config en su máquina:
|
1 |
kubectl config get-contexts -o name |
Suponga que obtiene dos clústeres: test-deploy-cluster y test-target-cluster. Ahora, si el test-deploy-cluster es donde está su Argo CD y desea realizar la implementación en test-target-cluster, entonces ejecute el siguiente comando:
|
1 |
argocd cluster add target-k8s |
El comando anterior agregará los detalles del clúster adicional en Argo CD. También permitirá implementar servicios en el clúster de destino de Argo CD.
Step 5 – Deploy an Example Application
Finalmente ha llegado el momento de implementar aplicaciones en el clúster de Kubernetes. Utilizaremos las aplicaciones de ejemplo proporcionadas por Argo CD. También utilizaremos helm-guestbook que está construida usando Helm charts.
Para instalar la aplicación, utilizaremos el comando argo app create . Especificaremos el repositorio de Git, helm-guestbook , y pasaremos su destino y espacio de nombres predeterminados:
|
1 |
argocd app create helm-guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path helm-guestbook --dest-server https://kubernetes.default.svc --dest-namespace default |
Puede verificar el estado de la aplicación recién creada ejecutando el comando argocd app get:
|
1 |
argocd app get helm-guestbook |
No te sorprendas si ves OutOfSync de estado. Hasta ahora hemos descargado el chart de Helm y creado un punto de entrada para él en Argo CD. Sin embargo, por la parte de Kubernetes, no hay ningún recurso asignado. Para sincronizar esta aplicación, ejecuta el siguiente comando:
|
1 |
argocd app sync helm-guestbook |

Al trabajar con GitOps, siempre es necesario sincronizar la aplicación con el upstream. Por lo tanto, cada vez que ocurre un cambio en el repositorio, Argo CD despliega la aplicación.
Hemos desplegado la aplicación utilizando la línea de comandos de Argo CD. Puedes lograr el mismo resultado utilizando la interfaz web de Argo CD. La interfaz web es muy útil si deseas verificar el estado y el funcionamiento de la aplicación. Para abrir la interfaz web, abre localhost:8080:

Para verificar la instalación, abriremos la aplicación en el navegador. Nuestro helm-guestbook se ejecuta en el puerto 80. Si tienes alguna otra aplicación que use el puerto 80, puedes redirigir el puerto para que otras aplicaciones no se vean interrumpidas:
|
1 |
kubectl port-forward svc/helm-guestbook 9090:80 |
Finalmente, abre la url localhost:9090 en tu navegador web para ver tu aplicación en funcionamiento:

Ahora, si un desarrollador envía código al repositorio remoto de GitHub, ArgoCD lo capturará y lo reflejará. Tus despliegues de ArgoCD se actualizarán en consecuencia, proporcionando disponibilidad continua.
Conclusión
En este tutorial, te mostramos cómo instalar y desplegar aplicaciones en Kubernetes utilizando Argo CD. Es importante asegurarse de que tus despliegues en Kubernetes sean mantenibles. GitOps podría ayudarte mucho en este sentido.
Kubernetes es ahora el estándar de los despliegues en la nube. CloudSigma tiene algunos excelentes tutoriales sobre Kubernetes que puedes consultar a continuación:
- Servicio DNS de Kubernetes: Una guía para principiantes
- Configuración de WordPress con MySQL en Kubernetes con Helm
- Instalación de Jenkins en Kubernetes
- Explorando CloudSigma PaaS: Cómo acceder a una aplicación de Kubernetes a través de una IP pública
¡Feliz computación!
Comentarios
Aún no hay comentarios. Sea el primero.