Tutorial: Configuración de un contenedor sidecar para un contenedor personalizado en Azure App Service (versión preliminar)
En este tutorial, agregará el recopilador OpenTelemetry como un contenedor sidecar a una aplicación de contenedor personalizado de Linux en Azure App Service.
En Azure App Service, puede agregar hasta 4 contenedores sidecar para cada aplicación de contenedor personalizada habilitada para sidecar. Los contenedores sidecar le permiten implementar servicios y características adicionales en la aplicación de contenedor sin acoplarlos estrechamente al contenedor de la aplicación principal. Por ejemplo, puede agregar servicios de supervisión, registro, configuración y redes como contenedores sidecar. Un sidecar de recopilador OpenTelemetry es uno de estos ejemplos de supervisión.
Para obtener más información sobre los sidecars, consulte Patrón sidecar.
Nota:
Para el período de versión preliminar, la compatibilidad con sidecar debe estar habilitada en la creación de la aplicación. Actualmente no hay ninguna manera de habilitar la compatibilidad con sidecar para una aplicación existente.
Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
1. Configuración de los recursos necesarios
En primer lugar, cree los recursos que usa el tutorial (para obtener más información, consulte Introducción a Cloud Shell). Se usan para este escenario en particular y no son necesarios para los contenedores sidecar en general.
En Azure Cloud Shell, ejecute los comandos siguientes:
git clone https://github.com/Azure-Samples/app-service-sidecar-tutorial-prereqs cd app-service-sidecar-tutorial-prereqs azd provision
Cuando se le solicite, proporcione el nombre del entorno, la suscripción y la región que desee. Por ejemplo:
- Nombre del entorno: my-sidecar-env
- Suscripción: su suscripción
- Región: (Europa) Oeste de Europa
Cuando se complete la implementación, debería ver la siguiente salida:
APPLICATIONINSIGHTS_CONNECTION_STRING = InstrumentationKey=...;IngestionEndpoint=...;LiveEndpoint=... Open resource group in the portal: https://portal.azure.com/#@/resource/subscriptions/.../resourceGroups/...
Abra el vínculo del grupo de recursos en una pestaña del explorador. Tendrá que usar la cadena de conexión más adelante.
Nota:
azd provision
usa las plantillas incluidas para crear los siguientes recursos de Azure:- Un grupo de recursos
- Un registro de contenedor con dos imágenes implementadas:
- Imagen Nginx con el módulo OpenTelemetry.
- Imagen del recopilador OpenTelemetry configurado para exportar a Azure Monitor.
- Un área de trabajo de Log Analytics
- Un componente de Application Insights
2. Creación de una aplicación habilitada para sidecar
En la página de administración del grupo de recursos, seleccione Crear.
Busque aplicación web y, a continuación, seleccione la flecha abajo en Crear y seleccione Aplicación web.
Configure el panel Aspectos básicos de la manera siguiente:
- Nombre: un nombre único
- Publicar: Contenedor
- Sistema operativo: Linux.
- Región: misma región que la que eligió con
azd provision
- Plan de Linux: un nuevo plan de App Service
Seleccione Contenedor. Configure el panel Contenedor de la manera siguiente:
- Compatibilidad con sidecar: Habilitado
- Origen de la imagen: Azure Container Registry
- Registro: registro creado por
azd provision
- Imagen: nginx
- Etiqueta: más reciente
- Puerto: 80
Nota:
Estas opciones se configuran de manera diferente en aplicaciones habilitadas para sidecar. Para obtener más información, consulte Diferencias para aplicaciones habilitadas para sidecar.
Seleccione Revisar y crear y, luego, Crear.
Cuando finalice la implementación, seleccione Ir al recurso.
En una nueva pestaña del explorador, vaya a
https://<app-name>.azurewebsites.net
y vea la página de Nginx predeterminada.
3. Agregar un contenedor sidecar
En esta sección, agregará un contenedor sidecar a la aplicación de contenedor personalizada.
En la página de administración de la aplicación, en el menú izquierdo, seleccione Centro de implementación.
El centro de implementación muestra todos los contenedores de la aplicación. En este momento, solo tiene el contenedor principal.
Seleccione Agregar y configure el nuevo contenedor de la siguiente manera:
- Nombre: otel-collector
- Origen de la imagen: Azure Container Registry
- Registro: registro creado por
azd provision
- Imagen: otel-collector
- Etiqueta: más reciente
- Puerto: 4317
El puerto 4317 es el puerto predeterminado que usa el contenedor de ejemplo para recibir datos de OpenTelemetry. Es accesible desde cualquier otro contenedor de la aplicación en
localhost:4317
. Así es exactamente cómo el contenedor Nginx envía datos al sidecar (consulte la Configuración del módulo OpenTelemetry para la imagen Nginx de ejemplo).Seleccione Aplicar.
Ahora debería ver dos contenedores en el centro de implementación. El contenedor principal está marcado como Principaly el contenedor sidecar está marcado como Sidecar. Cada aplicación debe tener un contenedor principal, pero puede tener varios contenedores sidecar.
4. Configuración de las variables de entorno
Para el escenario de ejemplo, el sidecar otel-collector está configurado para exportar los datos de OpenTelemetry a Azure Monitor, pero necesita la cadena de conexión como una variable de entorno (consulte el Archivo de configuración de OpenTelemetry para la imagen otel-collector).
Puede configurar variables de entorno para los contenedores como cualquier aplicación de App Service mediante la configuración de la aplicación. La configuración de la aplicación es accesible para todos los contenedores de la aplicación.
En la página de administración de la aplicación, en el menú izquierdo, seleccione Configuración.
Para agregar una configuración de aplicación, seleccione Nueva configuración de aplicación y configúrela de la siguiente manera:
- Nombre: APPLICATIONINSIGHTS_CONNECTION_STRING
- Valor: cadena de conexión en la salida de
azd provision
Seleccione Guardar y, a continuación, seleccione Continuar.
Nota:
Algunas opciones de configuración de la aplicación no se aplican a las aplicaciones habilitadas para sidecar. Para obtener más información, consulte Diferencias para aplicaciones habilitadas para sidecar.
5. Comprobar en Application Insights
El sidecar otel-collector debe exportar datos a Application Insights ahora.
De nuevo en la pestaña del explorador para
https://<app-name>.azurewebsites.net
, actualice la página varias veces para generar algunas solicitudes web.Vuelva a la página de información general del grupo de recursos y seleccione el recurso de Application Insights. Ahora debería ver algunos datos en los gráficos predeterminados.
Nota:
En este escenario de supervisión muy común, Application Insights es solo uno de los destinos de OpenTelemetry que puede usar, como Jaeger, Prometheus y Zipkin.
Limpieza de recursos
Cuando ya no necesite el entorno, puede eliminar el grupo de recursos, App Service y todos los recursos relacionados. Solo tiene que ejecutar este comando en Cloud Shell, en el repositorio clonado:
azd down
Diferencias en las aplicaciones habilitadas para sidecar
Las aplicaciones habilitadas para sidecar se configuran de manera diferente a las que no están habilitadas para sidecar. En concreto, no configura el contenedor principal y los sidecars con la configuración de la aplicación, sino directamente en las propiedades del recurso. Esta configuración de la aplicación no se aplica a las aplicaciones habilitadas para sidecar:
- Configuración de autenticación del Registro:
DOCKER_REGISTRY_SERVER_URL
,DOCKER_REGISTRY_SERVER_USERNAME
yDOCKER_REGISTRY_SERVER_PASSWORD
. - Puerto de contenedor:
WEBSITES_PORT