Ya tengo un post explicando cómo instalar Argo CD. Si no sabes cómo hacerlo ve a leerlo y regresas.
En este post vamos a configurar Argo CD para que utilice el repositorio Github.
El video está acá para que vayas haciendolo conmigo:
Configurando Argo CD
Necesitamos un pre-requisito:
- Crear un Personal Access Token (PAT) para conectar el proyecto con Argo CD, por motivos de practicicidad lo he llamado argocd. Si no sabes cómo hacerlo puedes leer los prerequisitos en este post.
Ahora entramos a Argo CD con nuestras credenciales.
Creando el Proyecto
Vamos a Settings -> Projects y damos click en el botón que dice: "+ NEW PROJECT", llenamos los campos con la información que nos pide.
Nota : Para este caso que es un ejemplo no voy a explicar a detalle el apartado de seguridad todavía, haremos algo básico e "inseguro".
SOURCE REPOSITORIES: *
DESTINATIONS - Server: *, Name: *, Namespace: *
CLUSTER RESOURCE ALLOW LIST - Kind: *, Group: *
Creando la conexión hacia nuestro Repositorio Github
Vamos a crear la conexión hacia el repositorio:
Settings -> Repositories y damos click en el botón que dice "+ CONNECT REPO"
En Choose your connection methods
seleccionamos: VIA HTTPS.En Project , seleccionamos el proyecto que creamos previamente.
En Repository URL copiamos la URL en HTTPS del proyecto donde están nuestros manifests.
ejemplo: https://github.com/ahioros/deploy-workflow-react-exampleUsername: argocd (esto es opcional por que lo que nos importa es el password).
Password: el PAT que generamos al inicio.
Configurando la aplicación.
Ahora vamos a Applications -> "+ NEW APP" o en el botón de en medio que dice "CREATE APPLLICATION" (suponiendo que no tengas ninguna aplicación).
GENERAL
Application Name: rdicidr
Project Name: Aquí seleccionamos el proyecto que creamos en el paso anterior.
SYNC POLICY podemos dejarlo en manual y después lo cambiamos a automatic para que vean la diferencia.
SOURCE
Repository URL: Al darle click al campo seleccionamos la URL del repositorio que creamos previamente.
Revision: HEAD y Branches
Path: ./k8s
Nota: Nótese que en el campo Path hay un punto antes del /
DESTINATION
Cluster URL: https://kubernetes.default.svc
Namespace: *
Algo como la siguiente imagen:
Damos click en el botón CREATE, que se encuentra en la parte superior y listo.
Sincronizando la aplicación
Ahora vemos nuestra aplicación (en amarillo) pero todavía no está desplegada en nuestro cluster, debemos dar click en el botón SYNC para que se sincronice.
Esto abrira ventana a la derecha y damos click en el botón SYNCHRONIZE.
Deploy Manual
Para ver que todo funciona correctamente, volvemos a Github Actions y ejecutamos el pipeline para que cambie el TAG de nuestra imagen y volvemos a Argo CD para ver que está en color amarillo esperando que demos en el botón SYNC.
Deploy Automático
Volvemos a Argo CD, en el panel izquierdo Applications -> "nuestra app", ahora en la parte superior damos click en el botón DETAILS bajamos hasta la sección SYNC POLICY y damos click en el botón ENABLE AUTO-SYNC , nos aparecerá una ventana de confirmación (sobre decir que damos click en OK).
Ejecuta el pipeline nuevamente y Argo CD automáticamente hará el SYNC y desplegará la nueva version de nuestra app en el cluster.
Una vez hayamos realizado el Deploy de nuestra aplicación podremos verla más o menos así:
Y cuando le damos click veremos la aplicación, y si lees arriba donde dice Synced y Sync OK, puedes ver el detalle del despliegue el autor y los comentarios de cuando se realizó el push a los manifest desde nuestro pipeline en el Stage Deploy. Mira la siguiente imagen:
Nota: en este ejemplo solo muestro una versión muy por encima de cómo configurar Argo CD, dale una leída a las best practices, estos post son solo un vistazo para mostrar el poder de estas herramientas.