Tutorial: Configurar um contêiner sidecar para contêiner personalizado no Serviço de Aplicativo do Azure (visualização)

Neste tutorial, você adiciona o coletor OpenTelemetry como um contêiner sidecar a um aplicativo de contêiner personalizado do Linux no Serviço de Aplicativo do Azure.

No Serviço de Aplicativo do Azure, você pode adicionar até 4 contêineres de sidecar para cada aplicativo de contêiner personalizado habilitado para sidecar. Os contêineres sidecar permitem que você implante serviços e recursos extras em seu aplicativo de contêiner sem torná-los firmemente acoplados ao contêiner de aplicativo principal. Por exemplo, você pode adicionar serviços de monitoramento, registro, configuração e rede como contêineres de sidecar. Um sidecar coletor OpenTelemetry é um desses exemplos de monitoramento.

Para obter mais informações sobre sidecars, consulte Sidecar pattern.

Nota

Durante o período de pré-visualização, o suporte para sidecar tem de estar ativado na criação da aplicação. Atualmente, não é possível ativar o suporte a sidecar para um aplicativo existente.

Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.

1. Configure os recursos necessários

Primeiro, você cria os recursos que o tutorial usa (para obter mais informações, consulte Visão geral do Cloud Shell). Eles são usados para este cenário específico e não são necessários para contêineres de sidecar em geral.

  1. No Azure Cloud Shell, execute os seguintes comandos:

    git clone https://github.com/Azure-Samples/app-service-sidecar-tutorial-prereqs
    cd app-service-sidecar-tutorial-prereqs
    azd provision
    
  2. Quando solicitado, forneça o nome do ambiente, a assinatura e a região desejada. Por exemplo:

    • Nome do ambiente: my-sidecar-env
    • Subscrição: a sua subscrição
    • Região: (Europa) Europa Ocidental

    Quando a implantação for concluída, você verá a seguinte saída:

     APPLICATIONINSIGHTS_CONNECTION_STRING = InstrumentationKey=...;IngestionEndpoint=...;LiveEndpoint=...
    
     Open resource group in the portal: https://portal.azure.com/#@/resource/subscriptions/.../resourceGroups/...
     
  3. Abra o link do grupo de recursos em uma guia do navegador. Você precisará usar a cadeia de conexão mais tarde.

    Nota

    azd provision usa os modelos incluídos para criar os seguintes recursos do Azure:

2. Crie um aplicativo habilitado para sidecar

  1. Na página de gerenciamento do grupo de recursos, selecione Criar.

  2. Procure por aplicativo Web e, em seguida, selecione a seta para baixo em Criar e selecione Aplicativo Web.

    Captura de ecrã a mostrar a página do Azure Marketplace com a aplicação Web a ser pesquisada e botões de criação de aplicações Web a serem clicados.

  3. Configure o painel Noções básicas da seguinte maneira:

    • Nome: Um nome exclusivo
    • Publicar: Contentor
    • Sistema Operacional: Linux
    • Região: mesma região que você escolheu com azd provision
    • Plano Linux: Um novo plano do Serviço de Aplicativo

    Captura de tela mostrando o assistente de criação de aplicativo Web e as configurações para um aplicativo de contêiner personalizado do Linux realçado.

  4. Selecione Contêiner. Configure o painel Contêiner da seguinte maneira:

    • Suporte para sidecar: Ativado
    • Origem da imagem: Azure Container Registry
    • Registo: O registo criado por azd provision
    • Imagem: nginx
    • Tag: últimas notícias
    • Porta: 80

    Captura de tela mostrando o assistente de criação do aplicativo Web e as configurações para a imagem do contêiner e o suporte do sidecar realçados.

    Nota

    Essas configurações são configuradas de forma diferente em aplicativos habilitados para sidecar. Para obter mais informações, consulte Diferenças para aplicativos habilitados para sidecar.

  5. Selecione Rever + criar e, em seguida, selecione Criar.

  6. Quando a implantação for concluída, selecione Ir para o recurso.

  7. Em uma nova guia do navegador, navegue até https://<app-name>.azurewebsites.net a página padrão do Nginx e veja ela.

3. Adicione um contentor para sidecar

Nesta seção, você adiciona um contêiner sidecar ao seu aplicativo de contêiner personalizado.

  1. Na página de gerenciamento do aplicativo, no menu à esquerda, selecione Centro de Implantação.

    O centro de implantação mostra todos os contêineres no aplicativo. Neste momento, só tem o contentor principal.

  2. Selecione Adicionar e configurar o novo contêiner da seguinte maneira:

    • Designação: otel-collector
    • Origem da imagem: Azure Container Registry
    • Registo: O registo criado por azd provision
    • Imagem: otel-collector
    • Tag: últimas notícias
    • Porta: 4317

    A porta 4317 é a porta padrão usada pelo contêiner de amostra para receber dados do OpenTelemetry . Ele pode ser acessado de qualquer outro contêiner no aplicativo em localhost:4317. É exatamente assim que o contêiner Nginx envia dados para o sidecar (veja a configuração do módulo OpenTelemetry para a imagem Nginx de exemplo).

  3. Selecione Aplicar.

    Captura de tela mostrando como configurar um contêiner de sidecar no centro de implantação de um aplicativo Web.

    Agora você deve ver dois contêineres no centro de implantação. O contentor principal está marcado como Principal e o contentor do sidecar está marcado como Sidecar. Cada aplicativo deve ter um contêiner principal, mas pode ter vários contêineres de sidecar.

4. Configurar variáveis de ambiente

Para o cenário de exemplo, o sidecar do coletor de otel está configurado para exportar os dados do OpenTelemetry para o Azure Monitor, mas ele precisa da cadeia de conexão como uma variável de ambiente (consulte o arquivo de configuração do OpenTelemetry para a imagem do coletor de otel).

Você configura variáveis de ambiente para os contêineres como qualquer aplicativo do Serviço de Aplicativo, definindo as configurações do aplicativo. As configurações do aplicativo são acessíveis a todos os contêineres no aplicativo.

  1. Na página de gerenciamento do aplicativo, no menu à esquerda, selecione Configuração.

  2. Adicione uma configuração de aplicativo selecionando Nova configuração de aplicativo e configure-a da seguinte maneira:

    • Designação: APPLICATIONINSIGHTS_CONNECTION_STRING
    • Valor: A cadeia de conexão na saída de azd provision
  3. Selecione Guardar e, em seguida, selecione Continuar.

    Captura de ecrã a mostrar a página Configuração de uma aplicação Web com duas definições de aplicação adicionadas.

Nota

Determinadas definições da aplicação não se aplicam a aplicações compatíveis com sidecar. Para obter mais informações, consulte Diferenças para aplicativos habilitados para sidecar

5. Verifique no Application Insights

O sidecar otel-collector deve exportar dados para o Application Insights agora.

  1. De volta à guia do navegador para https://<app-name>.azurewebsites.net, atualize a página algumas vezes para gerar algumas solicitações da Web.

  2. Volte para a página de visão geral do grupo de recursos, selecione o recurso do Application Insights. Agora você deve ver alguns dados nos gráficos padrão.

    Captura de tela da página Application Insights mostrando dados nos gráficos padrão.

Nota

Neste cenário de monitoramento muito comum, o Application Insights é apenas um dos destinos OpenTelemetry que você pode usar, como Jaeger, Prometheus e Zipkin.

Clean up resources (Limpar recursos)

Quando não precisar mais do ambiente, você poderá excluir o grupo de recursos, o Serviço de aplicativo e todos os recursos relacionados. Basta executar este comando no Cloud Shell, no repositório clonado:

azd down

Diferenças para aplicações compatíveis com sidecar

Você configura aplicativos habilitados para sidecar de forma diferente dos aplicativos que não são habilitados para sidecar. Especificamente, você não configura o contêiner principal e os sidecars com as configurações do aplicativo, mas diretamente nas propriedades do recurso. Estas definições de aplicações não se aplicam a aplicações compatíveis com sidecar:

  • Configurações de autenticação do Registro: DOCKER_REGISTRY_SERVER_URL, DOCKER_REGISTRY_SERVER_USERNAME e DOCKER_REGISTRY_SERVER_PASSWORD.
  • Porto de contentores: WEBSITES_PORT

Mais recursos