Dockerizar una aplicación mediante Azure Pipelines, publicarla en ACR y desplegarla en Kubernetes Service

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:

  • El recurso Azure Container Registry
  • La aplicación que habíamos creado con Visual Studio
  • La pipeline que habíamos creado

Actualizar la aplicación

Y los primeros pasos para actualizar la aplicación serán:

  • Editar el fichero azure-pipelines.yml para añadirle una task nueva para que genere un artifact de la aplicación.
  • Añadir dos ficheros a la aplicación: app.yml y service.yml, que son los manifiestos que necesitamos para crear el Workload y el Service en AKS.

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:

No hay texto alternativo para esta imagen

donde solo tendremos que indicar el nombre del artifact que vamos a generar:

No hay texto alternativo para esta imagen

La pipeline se quedará así:

No hay texto alternativo para esta imagen

Si lanzamos la pipeline, ahora está generando un artifact:

No hay texto alternativo para esta imagen

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

No hay texto alternativo para esta imagen
No hay texto alternativo para esta imagen

Y los dejamos en la misma ruta que nuestro Dockerfile:

No hay texto alternativo para esta imagen

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:

No hay texto alternativo para esta imagen

Lo vamos a conectar a nuestro ACR que creamos en el artículo anterior y es de donde extraeremos la imagen:

No hay texto alternativo para esta imagen

Lo demás podemos dejarlo todo como viene por defecto.

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:

No hay texto alternativo para esta imagen

Y la configuramos así (seleccionamos nuestro AKS que es el Cluster y el Namespace default -si no sale, lo escribimos):

No hay texto alternativo para esta imagen

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:

No hay texto alternativo para esta imagen

Lo primero es añadir en el apartado Artifacts nuestro artifact generado en la primera pipeline que creamos:

No hay texto alternativo para esta imagen
No hay texto alternativo para esta imagen

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:

No hay texto alternativo para esta imagen

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

No hay texto alternativo para esta imagen

y para service.yml lo mismo:

No hay texto alternativo para esta imagen

Ahora la pipeline release está lista. Ya podemos ejecutarla y luego comprobaremos si se ha desplegado en AKS:

No hay texto alternativo para esta imagen

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:

No hay texto alternativo para esta imagen

y podemos ver la aplicación publicada en Services and ingresses:

No hay texto alternativo para esta imagen

Nos dirigimos a la ip publicada a ver si se ha desplegado correctamente:

No hay texto alternativo para esta imagen

Espero que este artículo sea de utilidad :) Cualquier comentario es bien recibido.

Saludos!


Inicia sesión para ver o añadir un comentario.

Otros usuarios han visto

Ver temas