Deploy Github Actions y Argo CD

Guillermo Garcia - Aug 19 - - Dev Community

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: *

Image description

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-example

  • Username: argocd (esto es opcional por que lo que nos importa es el password).

  • Password: el PAT que generamos al inicio.

Image description

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:

Image description

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.

Image description

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í:

Image description

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:

Image description

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.

. . . . . . . . . . . . . . . . . . . . . . .