Continuando con nuestros posts de DevOps en español, ya hemos cubierto la parte CI (Continue Integration) ahora vamos a la parte CD (Continue Delivery).
Qué es Argo CD
Comenzamos por el principio, vamos a definir qué es Argo CD.
Argo CD es una herramienta declarativa de distribución continua para Kubernetes. Se puede utilizar como una herramienta independiente o como parte del flujo de trabajo de integración y distribución continuas (CI/CD) para distribuir los recursos que los clústeres necesitan.
Para gestionar las configuraciones de la infraestructura y las aplicaciones en consonancia con GitOps, su repositorio de Git debe ser la única fuente de información. Es necesario expresar el estado deseado de manera declarativa, crear versiones de él y extraerlo automáticamente. Aquí es donde entra en juego Argo CD.
Instalación de Argo CD
Podemos instalar Argo CD de 3 formas diferentes:
- Manual (manifest)
- Helm
- Kubeconfig
Nota: En este post vamos a usar la forma "manual" por que todavía no hemos cubierto los temas de helm y kubeconfig.
Para instalar Argo CD debemos realizar los siguientes comandos:
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
Esto primero creará un nuevo namespace llamado argocd y después se crearan los recursos necesarios y se instalará argocd.
Verificamos que ya estén ejecutándose los pods de argocd:
kubectl get pods -n argocd
Para poder entrar al panel de administración primero debemos obtener la contraseña del usuario admin, para poder ver dicha contraseña debemos ver en los secrets:
kubectl get secrets -n argocd
kubectl edit secret argocd-initial-admin-secret -n argocd
Debajo de data vemos el campo que dice password: debemos copiar su valor y realizamos el siguiente comando ejemplo:
Nota: Para este ejemplo el valor de password es: WW91clN1cGVyU2VjcmV0UGFzc3dvcmQK
echo WW91clN1cGVyU2VjcmV0UGFzc3dvcmQK | base64 --decode
YourSuperSecretPassword
Estos nos devolvera la contraseña (en este ejemplo YourSuperSecretPassword) que necesitamos para ingresar en el panel de administración, por lo que procedemos a copiarlo y guardarlo temporalmente ya que cambiaremos este password.
Accediendo al panel de administración
En mi caso estoy instalando argocd en un cluster local (on-premise) por lo que tendré que realizar un port-forward para ingresar a argocd.
kubectl port-forward svc/argocd-server -n argocd 8080:80
Accediendo al panel de administración de argocd
http://localhost:8080
user: admin
pass: YourSuperSecretPassword
Borrado de la contraseña predeterminada
Una vez que hemos ingresado debemos borrar el secret por default
kubectl delete secret argocd-initial-admin-secret -n argocd
Acá te dejo el video de esta configuración por si tienes dudas:
<iframe allowfullscreen="" youtube-src-id="wrlOl9HLmkA" width="480" height="270" src="https://www.youtube.com/embed/wrlOl9HLmkA"></iframe>
En nuestro siguiente post veremos como configurar nuestro repositorio de Azure con argoCD para automatizar los deploys.