Sabemos que 2024 ha sido una locura y, seamos sinceros, no hemos tenido todo el tiempo que nos gustaría para dedicarle a esas horas extras para la comunidad 😝. Pero, aprovechando los primeros días de 2025, hemos encontrado el hueco que necesitábamos para seguir dándole caña a esta serie que teníamos en mente.
En el capítulo anterior, vimos cómo Argo CD nos ayuda a gestionar nuestras aplicaciones en EKS con ese enfoque GitOps que tanto nos gusta. Sin embargo, sabemos que la teoría siempre se queda corta 🥶. Por eso, en este capítulo vamos a desplegar un clúster de EKS con Argo CD utilizando Terraform. Hablaremos de los requisitos, cómo conectar repositorios y cómo validar que todo está funcionando para que puedas empezar a hacer tus propias pruebas.
En esta ocasión, no vamos a complicarnos con pipelines de despliegue ni nos centraremos demasiado en best practices, gestión de secretos u optimización del código. Lo que buscamos aquí es entender cómo Argo CD puede hacer que nuestros despliegues sean más ágiles y los beneficios que aporta. Pero no os preocupéis, si el tiempo (y la motivación 😅) nos lo permite, ampliaremos el scope de estos posts para cubrir todos esos temas más adelante.
🛠️Requisitos🛠️
- Terraform - https://developer.hashicorp.com/terraform/install
- GitHub - https://github.com/
- Kubectl - https://kubernetes.io/docs/tasks/tools/
- CLI de Argo CD - https://argo-cd.readthedocs.io/en/stable/cli_installation/
Como ya hemos comentado, el clúster de EKS con Argo CD lo desplegaremos utilizando Terraform. Para que podáis probarlo por vuestra cuenta, hemos subido el código al siguiente repositorio:
https://github.com/rnanudevops/eks-argocd-awsespanol
Este módulo ya lo utilizamos en un post anterior para el despliegue y test de Karpenter (dale un vistazo aquí: https://dev.to/aws-espanol/optimiza-tu-cluster-eks-con-karpenter-3mk1).
Esta vez, hemos añadido la configuración necesaria para incluir el despliegue de Argo CD.
Antes de utilizar este código, recomendamos revisar lo siguiente:
- TAGS: Modifica los tags para personalizar el despliegue según tus necesidades.
- Bucket S3: Asegúrate de configurar el bucket donde se almacenará el estado de Terraform.
Este módulo despliega todos los servicios necesarios para el despliegue de un clúster de EKS, incluyendo la configuración de networking.
Una vez desplegado el código de Terraform, veamos cómo acceder tanto al clúster EKS como a Argo CD.
En nuestro caso, hemos llamado al clúster awtwins-cluster:
Para acceder al clúster, necesitamos actualizar el contexto de kubectl mediante el siguiente comando:
aws eks --region eu-west-1 update-kubeconfig --name awtwins-cluster
Para validar que la conexión se ha establecido correctamente, podemos ejecutar:
kubectl get pods -A
Esto nos devolverá:
NAMESPACE NAME READY STATUS RESTARTS AGE
argocd argocd-application-controller-0 1/1 Running 0 6m23s
argocd argocd-applicationset-controller-5db4d64b99-72k5m 1/1 Running 0 6m23s
argocd argocd-dex-server-67d695d958-4p4dt 1/1 Running 0 6m23s
argocd argocd-notifications-controller-5795d744fd-sxhjz 1/1 Running 0 6m23s
argocd argocd-redis-5688bd4c9f-hg7zk 1/1 Running 0 6m23s
argocd argocd-repo-server-84d9d8fcfb-dsnfj 1/1 Running 0 6m23s
argocd argocd-server-d5f5767b6-4ffw8 1/1 Running 0 6m23s
kube-system aws-node-kzx4v 2/2 Running 0 7m28s
kube-system aws-node-wwn2g 2/2 Running 0 7m23s
kube-system coredns-844dbb9f6f-52lv9 1/1 Running 0 9m53s
kube-system coredns-844dbb9f6f-7khjt 1/1 Running 0 9m53s
kube-system kube-proxy-2dm9t 1/1 Running 0 7m23s
kube-system kube-proxy-zn2lv 1/1 Running 0 7m28s
El siguiente paso es obtener la dirección de Argo CD, expuesta mediante un LoadBalancer que se incluye en el código de Terraform. Para ello, ejecutamos:
kubectl -n argocd get svc argocd-server
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
argocd-server LoadBalancer 172.20.193.200 ab577983472254f28a7ae93e22a478af-2061443254.eu-west-1.elb.amazonaws.com 80:30482/TCP,443:30189/TCP 10m
Copiaremos el valor de EXTERNAL-IP y accederemos a esta dirección desde el navegador.
Por defecto, Argo CD genera un usuario administrador (admin) y un password inicial. Para obtener este password, ejecuta el siguiente comando:
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
Con estas credenciales (usuario: admin y el password generado), accedemos a Argo CD.
🚨Este usuario nunca debe usarse en entornos productivos y se recomienda deshabilitarlo.🚨
Una vez dentro de Argo CD, el primer paso es configurar el repositorio donde almacenaremos nuestras aplicaciones. Para simplificar el escenario, utilizaremos la CLI de Argo CD. Esto nos permitirá realizar la configuración de forma sencilla y eficiente.
Primero, conectamos la CLI a Argo CD utilizando el siguiente comando e introduciendo las credenciales:
argocd login ab577983472254f28a7ae93e22a478af-2061443254.eu-west-1.elb.amazonaws.com --insecure
Username: admin
Password:
'admin:login' logged in successfully
Context 'ab577983472254f28a7ae93e22a478af-2061443254.eu-west-1.elb.amazonaws.com' updated
En este ejemplo, utilizaremos GitHub como repositorio, pero puedes usar otros como BitBucket o GitLab. Debes generar un repositorio y un usuario con los permisos necesarios.
Una vez listo, añade el repositorio a Argo CD utilizando:
argocd repo add <URL repositorio> --username <user> --password <token/password>
Accede a Argo CD y comprueba que el repositorio aparece en la sección Settings > Repositories, confirmando que se ha conectado correctamente.
Con esto, ya hemos configurado nuestro entorno de EKS y Argo CD y hemos conectado un repositorio para empezar a gestionar nuestras aplicaciones. 🚀
En el próximo post, veremos cómo desplegar aplicaciones en Argo CD y qué estrategias y buenas prácticas podemos utilizar para nuestros despliegues.
💬 Y recuerda, tus comentarios y opiniones son más que bienvenidos. 😝
Top comments (0)