GitOps: Implementar Tetris App en AKS con ArgoCD

Creditos a Cloud Champ por la idea y la imagen de Tetris en Java.

Vamos a ejecutar el deploy de una App Tetris en un cluster de Azure Kubernetes Services (AKS).

Prerrequisitos:

  • Implementar un Cluster básico de AKS con Terraform.
  • Como conectarse a el CLI de Azure Kubernetes Services (AKS).
  • Implementar ArgoCD en AKS.

(Estaré haciendo un post de cada uno de estos prerrequisitos en breve :))

Asociar repositorio Git

Repositorio a utilizar

En este caso estaremos utilizando el repositorio https://github.com/mdiloreto/N4si-tetris-game.

Aquí encontraremos el manifiesto para el deploy de nuestra App en AKS:

# tetris-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: tetris-deployment
spec:
  replicas: 1 # You can adjust the number of replicas as needed
  selector:
    matchLabels:
      app: tetris
  template:
    metadata:
      labels:
        app: tetris
    spec:
      containers:
        - name: tetris
          image: nasi101/tetris # Replace with the actual image tag
          ports:
            - containerPort: 80 # Replace with the port your Tetris game listens on
apiVersion: v1
kind: Service
metadata:
  name: tetris-service
spec:
  selector:
    app: tetris
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: LoadBalancer

Add Repository en ArgoCD

Debemos conectarnos a ArgoCD a través de el endpoint publico de nuestro servicio de argocd-server

Ingresamos a través del browser: https://20.124.172.62/

Ahora, dentro de Argo ingresaremos a Settings>Repositories.

Click sobre “+ Connect Repo”

Configuramos las opciones:

  • Método: vía HTTPS.
  • Tipo: Git.
  • Project: en esté caso será “Default”.
  • Repositorio: https://github.com/mdiloreto/N4si-tetris-game/
  • El resto de las opciones vacías.
  • Para finalizar, click en “Connect

Si ejecutamos los pasos correctamente, nuestro repo tendrá el status “Successful“:

Implementar Aplicación

Ahora, con nuestro repositorio conectado, realizaremos la implementación de nuestra app.

En primer lugar navegaremos la sección “Applications” en nuestra consola de ArgoCD. Luego haremos click en “+New App“.

En este caso, estaremos configurando las opciones generales básicas:

  • Nombre: “tetris” (sin mayusculas).
  • Project Name: “Default”.
  • Sync policy: Automatic.

En Source, configuraremos el repositorio configurado en el paso anterior. En el path debemos especificar la folder en la que se encuentran nuestros manifiestos de K8s, en este caso será “manifests”:

En las opciones de Destino, estaremos configurando nuestra Default Cluster URL: https://kubernetes.default.svc

Luego de configurar los parametros especificados daremos click en “Create“. Esto iniciará el deploy de nuestra aplicación. En la sección “Applications” podremos ver el status:

Luego de un momento la App será creada en nuestro AKS.

Si hacemos click sobre esta App, podremos ver la estructura en detalle:

Aplicación implementada

Luego del deploy exitoso podremos ver:

  • Que se creó un pod:
  • Tambien podemos ver la creación de un deployment:
  • Y la creación de un servicio:

Al ingresar por un navegador a la External-IP de “tetris-service” encontraremos nuestra aplicación funcionado:

Beneficios de ArgoCD

ArgoCD es una herramienta popular de entrega continua (Continuous Delivery) para Kubernetes que ha ganado tracción en la comunidad debido a una variedad de características y beneficios.

Uno de sus principales beneficos es la simplificación de GitOps

ArgoCD utiliza un enfoque GitOps, donde el estado deseado de una aplicación se describe en el repositorio Git. Esto permite la sincronización y la gestión de la historia y cambios a través de este medio. Esta sync puede ser manual o automatica.

Sincronización de estado automatica

En este caso probaremos la sincronización automatica realizando 2 cambios en el manifiesto de K8s:

  • Cambiaremos la version de la imagen de Docker.
  • Cambiaremos la cantidad de replicas (pods) para este deployment.

Editar Manifest

Ingresamos al repositorio de GitHub y editamos el archivo tetris-deploy.yaml

Editamos la imagen:

Y editamos el numero de replicas:

Cambio automatico

Como comentamos anteriomente, las caracteristicas de syncronización automatica permite que ArgoCD detecte el cambio en nuestro repo y realice la modificación del status en nuestra aplicación:

Podemos comprobar que se esta ejecutando una nueva version de la App (tener en cuenta el cache del navegador para test):

En nuestro Cluster de AKS, podemos detectar 2 nuevos pods para esta app:


Posted

in

, , ,

by

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.