miércoles, 3 de julio de 2024

Desplegando con Argo CD

Se llegó el gran día, vamos a configurar Argo CD para automatizar nuestros despliegues.
Este es el video de la guía para que lo veas y vayas siguiendo paso a paso conmigo:
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.

Ahora entramos a Argo CD (recuerda que le cambiamos el password hace dos publicaciones y creamos un port-forward con kubectl).




## 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 Azure DevOps
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://YOURPROJECT@dev.azure.com/YOURPROJECT/DockerHub%20Test/_git/Deploy

- Username: 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 de la página 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**.

**NOTA:** Cuando es la primera vez que ejecutamos el pipeline en Azure DevOps se quedará  "trabado/congelado" en el Stage Deploy esto es porque nos aparecerá un mensaje y un botón solicitando permisos para el usuario "argocd" en el lado superior derecho, aceptamos y listo. Algo como la imagen siguiente:


## Deploy Manual

Para ver que todo funciona correctamente, volvemos a Azure DevOps 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 en Azure DevOps 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í:

Aquí está el repositorio de [Azure DevOps](https://dev.azure.com/guillermogarcialedezma/DockerHub%20Test/).

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:
En el siguiente post seguirémos con el siguiente topic de **monitoreo**.

No hay comentarios.: