Compartir a través de


Tutorial: Configurar un contenedor sidecar para un contenedor personalizado en Azure App Service

En este tutorial, agregará un recopilador de OpenTelemetry como un contenedor sidecar a una aplicación de contenedor personalizado de Linux en Azure App Service. Para obtener aplicaciones de Linux de traiga su propio código, consulte Tutorial: Configurar un contenedor sidecar para una aplicación Linux en Azure App Service.

Si no tiene una cuenta de Azure, cree una cuenta gratuita antes de comenzar.

¿Qué es un contenedor "sidecar"?

En Azure App Service, puede agregar hasta nueve contenedores sidecar para cada aplicación Linux. Los contenedores de Sidecar le permiten implementar servicios y características adicionales en las aplicaciones de Linux sin acoplarlos estrechamente al contenedor principal (integrado o personalizado). 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.

Los contenedores sidecar se ejecutan junto con el contenedor de aplicaciones principal en el mismo plan de App Service.

1. Configuración de los recursos necesarios

En primer lugar, cree los recursos que usa el tutorial. Se usan para este escenario en particular y no son necesarios para los contenedores sidecar en general.

  1. 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 env new my-sidecar-env
    azd provision
    
  2. Cuando se le solicite, proporcione la suscripción y la región que desee. Por ejemplo:

    • 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/...
     
  3. 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:

2. Creación de una aplicación habilitada para sidecar

  1. En la página de administración del grupo de recursos, seleccione Crear.

  2. Busque aplicación web y, a continuación, seleccione la flecha abajo en Crear y seleccione Aplicación web.

    Captura de pantalla en la que se muestra la página de Azure Marketplace con la aplicación web en la que se busca y se crean los botones de la aplicación web en los que se hace clic.

  3. 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

    Captura de pantalla que muestra el Asistente para crear aplicaciones web y la configuración de una aplicación de contenedor personalizada de Linux resaltada.

  4. 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

    Captura de pantalla que muestra el Asistente para crear la aplicación web y la configuración de la imagen de contenedor y la compatibilidad con sidecar resaltada.

    Nota:

    Estas opciones se configuran de manera diferente en aplicaciones habilitadas para sidecar. Para obtener más información, consulte ¿Cuáles son las diferencias de los contenedores personalizados con compatibilidad con sidecar?.

  5. Seleccione Revisar y crear y, luego, Crear.

  6. Cuando finalice la implementación, seleccione Ir al recurso.

  7. 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.

  1. 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.

  2. 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
  3. Seleccione Aplicar.

    Captura de pantalla que muestra cómo configurar un contenedor sidecar en el centro de implementación de una aplicación web.

    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.

  1. En la página de administración de la aplicación, en el menú de la izquierda, seleccione Variables de entorno.

  2. Para agregar una configuración de aplicación, seleccione Agregar y configúrela de la siguiente manera:

    • Nombre: APPLICATIONINSIGHTS_CONNECTION_STRING
    • Valor: cadena de conexión en la salida de azd provision. Si perdió la sesión de Cloud Shell, también puede encontrarla en la página Información general del recurso de Application Insight, en Cadena de conexión.
  3. Seleccione Aplicar y, después, Aplicar y, en seguida, Confirmar.

    Captura de pantalla que muestra la página Configuración de una aplicación web con dos configuraciones de aplicación agregadas.

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 ¿Cuáles son las diferencias de los contenedores personalizados con compatibilidad con sidecar?

5. Comprobar en Application Insights

El sidecar otel-collector debe exportar datos a Application Insights ahora.

  1. 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.

  2. Vuelva a la página de información general del grupo de recursos y, después, seleccione el recurso de Application Insights. Ahora debería ver algunos datos en los gráficos predeterminados.

    Captura de pantalla de la página de Application Insights en la que se muestran los 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

Preguntas más frecuentes

¿Cuáles son las diferencias de los contenedores personalizados con compatibilidad con sidecar?

Las aplicaciones habilitadas para sidecar se configuran de manera diferente a las que no están habilitadas para sidecar.

No habilitado para sidecar

  • El nombre del contenedor y los tipos se configuran directamente con LinuxFxVersion=DOCKER|<image-details> (consulte az webapp config set --linux-fx-version).
  • El contenedor principal se configura con la configuración de la aplicación, como:
    • DOCKER_REGISTRY_SERVER_URL
    • DOCKER_REGISTRY_SERVER_USERNAME
    • DOCKER_REGISTRY_SERVER_PASSWORD
    • WEBSITES_PORT

Habilitado para sidecar

  • Una aplicación con compatibilidad para sidecar está designada por LinuxFxVersion=sitecontainers (consulte az webapp config set --linux-fx-version).
  • El contenedor principal se configura con un recurso sitecontainers . Esta configuración no se aplica a las aplicaciones habilitadas para sidecar
    • DOCKER_REGISTRY_SERVER_URL
    • DOCKER_REGISTRY_SERVER_USERNAME
    • DOCKER_REGISTRY_SERVER_PASSWORD
    • WEBSITES_PORT

¿Cómo controlan los contenedores sidecar la comunicación interna?

Los contenedores sidecar comparten el mismo host de red que el contenedor principal, por lo que el contenedor principal (y otros contenedores sidecar) pueden llegar a cualquier puerto del sidecar con localhost:<port>. En el ejemplo startup.sh se usa localhost:4318 para acceder al puerto 4318 en el sidecar de otel-collector.

En el cuadro de diálogo Editar contenedor, App Service no usa actualmente el cuadro Puerto. Puede usarlo como parte de los metadatos de sidecar, así como para indicar el puerto al que escucha el sidecar.

¿Puede un contenedor sidecar recibir solicitudes de Internet?

No. App Service enruta las solicitudes de Internet solo al contenedor principal. En el caso de las aplicaciones Linux basadas en código, el contenedor de Linux integrado es el contenedor principal y cualquier contenedor sidecar (sitecontainers) debe agregarse con IsMain=false. En el caso de contenedores personalizados, todos, excepto uno de los sitecontainers, deben tener IsMain=false.

Para obtener más información sobre cómo configurar IsMain, vea Microsoft.Web sites/sitecontainers.

¿Cómo uso montajes de volumen?

La característica Montajes de volúmenes permite compartir archivos y directorios no persistentes entre contenedores dentro de la aplicación web.

Recorte de pantalla que muestra una configuración de montaje de volumen para un contenedor sidecar.

Subruta de volumen: Se trata de una ruta de acceso de directorio lógica que se crea automáticamente y no se hace referencia a él dentro del contenedor. Los contenedores configurados con la misma subruta de volumen pueden compartir archivos y directorios entre sí.

Ruta de acceso de montaje del contenedor: Esto corresponde a una ruta de acceso de directorio a la que se hace referencia dentro del contenedor. La ruta de acceso de montaje del contenedor se asigna a la subruta del volumen.

Por ejemplo, supongamos que se configuran los siguientes montajes de volumen:

Nombre de Sidecar Subruta de volumen Ruta de acceso de montaje del contenedor Solo lectura
Contenedor1 /directory1/directory2 /container1Vol Falso
Container2 /directory1/directory2 /container2Vol Cierto
Contenedor3 /directory1/directory2/directory3 /container3Vol Falso
Container4 /directory4 /container1Vol Falso

En función de esta configuración, se aplican las condiciones siguientes:

  • Si Container1 crea /container1Vol/myfile.txt, Container2 puede leer el archivo a través de /container2Vol/myfile.txt.
  • Si Container1 crea /container1Vol/directory3/myfile.txt, Container2 puede leer el archivo a través de /container2Vol/directory3/myfile.txt, y Container3 puede leer y escribir en el archivo a través de /container3Vol/myfile.txt.
  • Container4 no comparte un montaje de volumen en común con ninguno de los otros contenedores.

Nota:

El contenedor de Linux integrado no puede usar montaje de volúmenes para las aplicaciones de Linux basadas en código.

Más recursos