Desplegando una aplicación spring boot y spring cloud a Kubernetes usando Azure Devops - Parte 3

  




Objetivo

El objetivo de este artículo no es explicarte como se construyo PiggyMetrics, sino, mostrarte la experiencia de desplegarlo en Azure Kubernetes Service (AKS) y luego automatizar el despliegue con Azure Devops

- Se creará un MongoDB y RabbitMQ en Azure.  Esta va a ser la parte 1.

- Se creará un Azure Kubernetes Service y Azure Container Registry. Se desplegará Piggymetrics a Azure Kubernetes Service y se verá cómo resolver problemas de los micro servicios en Azure Kubernetes Service. Esta va a ser la parte 2

- Se automatizará el despliegue a Azure Kubernetes Service usando Azure Devops. Es el contenido de este artículo y la parte final de esta saga. Esta es la parte 3


Automatizar y rapidamente desplegar los cambios a Azure Kubernetes Service - Azure Pipelines

Crear un Azure Pipelines CI/CD  que automaticamente construye el build y despliega este al AKS cuando hay un commit al repositorio.

Prerequisitos


Hay algunos prerequisitos para esta automatización:




El resultado es:







El resultado es:



  • Crear un Azure KeyVault y cargar los secretos que va a necesitar Piggymetrics (en su mayoría son los que van en el archivo setup-env-variables-azure.sh)





Hay 2 variables que si tienes que llenarlas de la siguiente manera:

AZURE-REGISTRY-USERNAME=00000000-0000-0000-0000-000000000000
AZURE-REGISTRY-PASSWORD=<Token obtained according to instrucciones in it url: https://docs.microsoft.com/en-us/azure/container-registry/container-registry-authentication>
NOTA IMPORTANTE: Asegurate de que funcione, sino en el pipeline te va a fallar, ejemplo:

docker login -u 00000000-0000-0000-0000-000000000000 -p eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IkpT.....AA acr061174.azurecr.io
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Login Succeeded



Asegurate luego que el service principal usado en el service connection tiene los permisos GET, LIST en el vault. Para eso usa este comando:


$KV_NAME = kv-java-demo
<clientId from the Azure SPN JSON> se obtiene del  Azure Resource Manager creado anteriormente.


Para ver el client id, vamos a dicho url.



Ya con esa información, ejecutamos dicho comando:

az keyvault set-policy -n $KV_NAME --secret-permissions get list --spn <clientId from the Azure SPN JSON>


Azure Pipelines







  • Observa el pipeline y mira lo que hace. Asegurate que todas las entradas, por defecto, sean las que ha usado en tu código. 
          El azure-pipelines.yml contiene los siguientes elementos claves:
          - El trigger al inicio indica que el pipeline se disparará, cuando se haga commits a la rama master.
          - Las variables son la parte parametrizable del template YAML. 
          - Los stages
                    * El stage Build, construye tu app
                    * El stage Deploy, despliega a AKS. Este stage hace referencia al entorno con Kubernetes resource. Asegurate de modificar el nombre del entorno con el que tu has creado.
          - La tarea AzureKeyVault es usada en ambos stages para obtener los secretos de Azure Key vault y establecer las variables. En el stage Deploy, estas variables son usadas para establecer los secretos en el pod. 
           - La tarea Kubernetes Manifest tiene los beneficios agregados para poder verificar la estabilidad de un objeto antes de marcarlo como una tarea exitosa/fallida, ejecutar sustitución de artefacto, agregar anotaciones relacionadas a la trazabilidad de los objetos deployados, simplificar la creación y referenciamiento de imagePullSecrets.
   
  • Después de ver lo que el pipeline hace, selecciona Save y Run, colocale un mensaje a tu commit, ya que el Azure Pipelines agregar el azure-pipelines.yml a tu repositorio. Despues de editar el mensaje, selecciona Save y Run para ver a tu pipeline en acción.
  • Mientras tu pipeline se ejecuta, observa tu build stage, y luego tu deployment stage, va de azul (en ejecución) a green (completado). Tu puedes seleccionar los stages y jobs para ver tu pipeline en acción.


  • Adicionalmente, puedes verificar los objetos kubernetes creados y ver la historia de despliegue navegando en el "Environment".








Vídeos


Este artículo si lo grabaremos en 2 partes:


Aquí la parte final:





Bueno, eso es todo, por ahora.

Enjoy!

Joe
Share:

0 comentarios:

Publicar un comentario