Dockerizar una aplicación mediante Azure Pipelines, publicarla en ACR y desplegarla en Kubernetes Service
Este artículo continua a partir de este otro, pero en vez de probar la aplicación con Container Instances o Web App vamos a desplegarlo en Azure Kubernetes Service (AKS).
Pasos previos
Del otro artículo necesitamos:
Actualizar la aplicación
Y los primeros pasos para actualizar la aplicación serán:
A partir de ahí generaremos una pipeline release con el artifact que nos generará la pipeline anterior. Vamos a ello.
Editar azure-pipelines.yml
Nos dirigimos a nuestra primera pipeline, la que hicimos en el artículo anterior y le vamos a añadir una task llamada Publish Pipeline Artifacts:
donde solo tendremos que indicar el nombre del artifact que vamos a generar:
La pipeline se quedará así:
Si lanzamos la pipeline, ahora está generando un artifact:
Añadir los ficheros necesarios para AKS en nuestra aplicación
Ahora vamos a añadir los dos ficheros necesarios: app.yml (que indicará donde tenemos la imagen publicada para añadirla a AKS) y service.yml (que indicará la configuración para arrancarla desde AKS):
Y los dejamos en la misma ruta que nuestro Dockerfile:
Creación del recurso Azure Kubernetes Services
Vamos a crear nuestro AKS en Azure y una Service Connection en Azure DevOps que será necesarios para la creación de la Pipeline Release.
Vamos a configurar el recurso como en el ejemplo:
Lo vamos a conectar a nuestro ACR que creamos en el artículo anterior y es de donde extraeremos la imagen:
Lo demás podemos dejarlo todo como viene por defecto.
Recomendado por LinkedIn
Crear service connection para AKS en DevOps
Ahora en DevOps > Project Settings > Service Connections > New service connection vamos a crear nuestra conexión con AKS:
Y la configuramos así (seleccionamos nuestro AKS que es el Cluster y el Namespace default -si no sale, lo escribimos):
Creación de la pipeline release para desplegar en AKS
Nos dirigimos a Azure Pipelines > Releases > Create Release. Cuando nos pregunte en el Stage le decimos queremos empezar con un Empty Job:
Lo primero es añadir en el apartado Artifacts nuestro artifact generado en la primera pipeline que creamos:
Ahora procedemos a editar nuestro Stage, al que le vamos a añadir dos Jobs de Kubernetes en el que le indicamos los manifests y la pipeline por el nombre ya sabrá donde publicarlos:
La añadimos para app.yml (donde usamos la service connection que habíamos creado y el botón con los 3 puntos accedemos al artifact que hemos añadido y tenemos que buscar el fichero app.yml dentro del explorador que se nos abrirá:
y para service.yml lo mismo:
Ahora la pipeline release está lista. Ya podemos ejecutarla y luego comprobaremos si se ha desplegado en AKS:
Comprobación del despliegue en AKS
Nos dirigimos al recurso de AKS y vemos que ha aparecido nuestra aplicación descrita en el app.yml en el apartado de Workloads:
y podemos ver la aplicación publicada en Services and ingresses:
Nos dirigimos a la ip publicada a ver si se ha desplegado correctamente:
Espero que este artículo sea de utilidad :) Cualquier comentario es bien recibido.
Saludos!