Azure Container Apps

Azure Container Apps ofrece un enfoque de contenedor sin servidor para implementar microservicios sin necesidad de usar Kubernetes. En este tutorial demostramos la publicación de dos microservicios desarrollados utilizando la plataforma Devprime.

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.

Servicios de Azure

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.
Pasta clonada localmente
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.
Variables de entorno

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.

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

Claves y cadenas de conexión de salida desde Azure Bicep

CosmosDB Bicep

Última modificación April 16, 2024 (2b35fcc8)