Azure Container Apps
La implementación de este entorno que implica dos microservicios Devprime y Azure Container Apps utilizará además los servicios de Azure Container Registry (ACR), Azure Log Analytics, Azure Container Apps Environment, Azure CosmosDB y Azure EventHub.
En la imagen siguiente se muestra el aspecto que tendrá el entorno final después de iniciar todos los procedimientos de creación del entorno y publicación de los microservicios.
Artículos necesarios en su entorno
- Instalar el SDK de .NET 8 o superior
- Código de Visual Studio
- Una cuenta activa en Microsoft Azure
- Una cuenta activa en la plataforma Devprime y una licencia Devloper o Enterprise.
- Devprime CLI instalado y activo (
dp auth
) - CLI de Azure instalada y activa (
az login
) - docker local activo
- Microsoft Powershell instalado
- Microsoft Bicep instalado (
az bicep install
)
-GIT
En este artículo, usaremos dos microservicios creados por Devprime e implementados como se presenta en el artículo [Microservicios de comunicación asincrónica]. /../../how-to/stream/rabbitmq/asynchronous-microservices-communication/). Puede ejecutar previamente el ejemplo anterior o ir directamente al código proporcionado por github.
Este proyecto usa scripts basados en PowerShell y Bicep para crear el entorno de Azure Container Apps en Azure. Puede adaptar los scripts según sus necesidades.
Empezar
a) Ejecutar un clon del proyecto en github
git clone https://github.com/devprime/azure-container-apps-bicep
b) Verifique la carpeta de inicio con los elementos Pedido y Pago. Cada una de estas carpetas tiene un microservicio desarrollado con la plataforma Devprime.
c) Vaya a la carpeta ‘pedido’ y agregue su licencia de Devprime. Después de ejecutar el comando, cambiará
el archivo ‘order\src\App\appsettings.json’
dp license
d) Vaya a la carpeta ‘pago’ y agregue su licencia de Devprime. Después de ejecutarlo, cambiará
el archivo ‘payment\src\App\appsettings.json’
dp license
Base de datos local y credenciales de transmisión
Para ejecutar el microservicio localmente agregando las credenciales de una base de datos mongodb y un clúster de kafka en el proyecto de pedido y en el proyecto de pago editando el archivo ‘appsettings.json’ como se muestra en el ejemplo siguiente. En el momento de la implementación usaremos las credenciales del entorno de Azure.
Opcionalmente, localice las claves ‘State’ y ‘Stream’ y cambie los valores con las credenciales de los servicios mongodb y/o kafka en las carpetas ‘order’ y ‘payment’
code order\src\App\appsettings.json
code payment\src\App\appsettings.json
Ejecución del microservicio localmente
Vaya a la carpeta de pedidos o pagos y ejecute
.\run.ps1 ou ./run.sh (Linux, macOS)
Exportación de configuraciones de microservicios
Vaya a la carpeta ‘order’ y ejecute el comando de exportación de la CLI de Devprime para crear un archivo de implementación. Repita el mismo procedimiento en la carpeta y en el ‘pago’. Copiaremos algunos parámetros.
dp export kubernetes
Ahora regrese a la carpeta raíz y abra los archivos para observar los parámetros que se enviarán
durante la implementación de Azure Container Apps. Vea la clave ‘env:’ en los archivos siguientes.
code order\.Devprime\kubernetes\deployment.yml
code payment\.Devprime\kubernetes\deployment.yml
[Variables de entorno]
Al ejecutar los microservicios de pedidos y pagos en la instancia de Azure Container Apps, debe configurar las variables de entorno. Este procedimiento es muy similar al que se utiliza en docker y Kubernetes y puedes ver una vista previa en la imagen de abajo.
Configuración de las variables de entorno
a) Edite los archivos 1-docker-build-push.ps1, 2-deploy-azure.ps1 y 3-cleanup.ps1 estableciendo un nuevo valor en la variable $app. No utilice caracteres especiales.
b) Edite el archivo deploy\main.bicep para cambiar la configuración de las variables de entorno.
code deploy\main.bicep
c) Copie el contenido de la tecla ‘Devprime_app’ en el ‘order. Devprime\kubernetes\deployment.yml’ en Order y cambie el archivo deploy\main.bicep a la clave de microservicio Order. Tenga en cuenta que en main.bicep crearemos dos instancias de Azure Container Apps y debe repetir los pasos de Pago.
// Container Apps: Order
// Container Apps: Payment
En este ejemplo, no cambiaremos ninguna otra configuración. Si necesita establecer más parámetros para la aplicación, repita el procedimiento para las otras claves.
Ejecución de la creación de entornos en Azure Container Apps
Ejecutaremos los scripts para que puedas seguirlos paso a paso. Al final, si todo va bien, ya tendrá la dirección URL de Azure Container Apps en los registros y consultará los servicios en Azure Portal.
a) Comenzaremos con la creación del grupo de recursos de Azure, Azure Container Registry (ACR), docker Build y Push las imágenes de microservicios al repositorio privado en ACR.
.\1-docker-build-push.ps1
b) Ahora usaremos bicep para crear Azure Container Apps, Azure Container App Environment, Azure CosmosDB, Log Analytics, Event Hubs.
.\2-deploy-azure.ps1
Acceso a microservicios en Azure Container Apps
En nuestro ejemplo, al crear los servicios en Container Apps, usamos la opción de recibir solicitudes (entrada) a través de un punto de conexión público.
Las siguientes urls son ejemplos de los accesos disponibles. Hazte con el tuyo.
-
https://appDevprimeorder.calmbush-62be1470.canadacentral.azurecontainerapps.io
-
https://appDevprimepayment.calmbush-62be1470.canadacentral.azurecontainerapps.io
Al realizar una publicación en la API de pedidos, procesará la regla de negocio, la persistencia en mongodb (Azure CosmosDB) y, a continuación, emitirá un evento a través de Kafka (Azure EventHub).
El segundo microservicio hospedará el evento y realizará su ciclo de procesamiento natural de acuerdo con la regla de negocio implementada.
Eliminación de todo el entorno creado
Para excluir todos los servicios creados en Azure, ejecute el script siguiente. Antes de confirmar, asegúrese del nombre del grupo de recursos creado en esta demostración
.\3-cleanup.ps1
Sugerencia para los próximos pasos
- Automatizar este proceso mediante Azure DevOps, Github…
- Agregar una configuración de seguridad en la exposición de la API
- Adición de un servicio Azure API Management
Para obtener más información:
Documentación de Azure Container Apps
Implementación de Azure Container Apps con Bicep
Implementación en Azure Container App desde un Azure DevOps de CI/CD
Cómo crear y entregar aplicaciones de forma rápida y escalable con Azure Container Apps
Última modificación April 16, 2024 (2b35fcc8)