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:
- Crear un Azure Service connection usando service principal para establecer autenticación entre Azure & Azure DevOps.
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-000000000000AZURE-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
- Crea un pipeline en Azure Devops usando el archivo azure-pipelines.yml.
- 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 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
0 comentarios:
Publicar un comentario