Partilhar via


Configurar sidecars no Serviço de Aplicativos do Azure

Este artigo fornece etapas práticas para habilitar e configurar sidecars na sua aplicação no serviço App Service.

Criar um sidecar no portal do Azure

  1. Vá para o recurso do Serviço de Aplicativo no portal do Azure.
  2. Selecione Centro de Implantação e vá para a guia Contêineres .
  3. Clique em Adicionar contêiner para adicionar um sidecar.
  4. Preencha o nome da imagem, a autenticação do Registro (se necessário) e as variáveis de ambiente.
  5. Salve suas alterações. O sidecar será implantado ao lado do contêiner principal do aplicativo.

Habilite o suporte de sidecar para contêineres personalizados do Linux

Para um contêiner personalizado, você precisa habilitar explicitamente o suporte a sidecar. No portal, você pode fazer a seleção no assistente de criação do Serviço de Aplicativo. Você também pode habilitá-lo para um aplicativo existente na páginaContêineres do > de Implantação de um aplicativo existente, conforme mostrado na captura de tela a seguir:

Uma captura de tela mostrando as configurações de contêiner de um aplicativo de contêiner personalizado com o botão Iniciar atualização realçado.

Com a CLI do Azure, converta seu aplicativo Web para usar a sitecontainers configuração. Por exemplo:

az webapp sitecontainers convert --mode sitecontainers --name <YourWebAppName> --resource-group <YourResourceGroup>

Isso atualiza o LinuxFxVersion para sitecontainers e habilita suporte para o padrão sidecar.

Reverter para o modo clássico de contêiner personalizado (Docker)

Se você precisar voltar da configuração habilitada para sidecar para a configuração clássica baseada no Docker, execute o seguinte comando:

az webapp sitecontainers convert \
  --mode docker \
  --name <app-name> \
  --resource-group <resource-group>

Este comando remove todos os contêineres de sidecar e redefine seu aplicativo para usar a configuração de estilo clássico DOCKER|<image> . Para obter detalhes completos, consulte a documentação da CLI do Azure para az webapp sitecontainers convert.

Para obter mais informações, consulte Quais são as diferenças para contentores personalizados com suporte para sidecar?

Quais são as diferenças para contêineres personalizados habilitados para sidecar?

As aplicações compatíveis com sidecar são configuradas de forma diferente das aplicações que não são compatíveis com sidecar.

  • As aplicações habilitadas para sidecar são designadas por LinuxFxVersion=sitecontainers e configuradas com sitecontainers recursos.
  • Os aplicativos que não estão habilitados para sidecar configuram o nome do contêiner e digitam diretamente com LinuxFxVersion=DOCKER|<image-details>.

Para obter mais informações, consulte az webapp config set --linux-fx-version.

As aplicações que não têm suporte para sidecar configuram o contêiner principal com as configurações da aplicação, como:

  • DOCKER_REGISTRY_SERVER_URL
  • DOCKER_REGISTRY_SERVER_USERNAME
  • DOCKER_REGISTRY_SERVER_PASSWORD
  • WEBSITES_PORT

Essas configurações não se aplicam a aplicações habilitadas para sidecar.

Definir um sidecar com um modelo ARM

Adicione o Microsoft.Web/sites/sitecontainers tipo de recurso a um aplicativo. Para extrair uma imagem do sidecar do ACR usando uma identidade gerenciada atribuída pelo usuário, especifique authType como UserAssigned e forneça o userManagedIdentityClientId:

{
  "type": "Microsoft.Web/sites/sitecontainers",
  "apiVersion": "2024-04-01",
  "name": "<app-name>/<sidecar-name>",
  "properties": {
    "image": "<acr-name>.azurecr.io/<image-name>:<version>",
    "isMain": false,
    "authType": "UserAssigned",
    "userManagedIdentityClientId": "<client-id>",
    "environmentVariables": [
      { "name": "MY_ENV_VAR", "value": "my-value" }
    ]
  }
}

Importante

Somente o contêiner principal ("isMain": true) recebe tráfego externo. Em um aplicativo de contêiner personalizado do Linux com suporte a sidecar habilitado, seu contêiner principal está isMain definido para true. Todos os contentores para sidecar devem ter "isMain": false.

Para obter mais informações, consulte Microsoft.Web sites/sitecontainers.

Criar sidecars com a CLI do Azure

Crie uma aplicação com suporte a sidecar com az webapp create. Por exemplo:

az webapp create --name <app-name> --resource-group <group-name> --sitecontainers-app

Crie um contêiner sidecar com az webapp sitecontainers create. Por exemplo:

az webapp sitecontainers create --name <app-name> --resource-group <group-name> --container-name <container> --image <image> --target-port <port>

Crie um contêiner de sidecar com um arquivo JSON:

az webapp sitecontainers create --name <app-name> --resource-group <group-name> --sitecontainers-spec-file <file-path>

Para obter todos os comandos do sidecar, consulte az webapp sitecontainers.

Definir variáveis de ambiente

Em um aplicativo Linux, todos os contêineres (principais e sidecars) compartilham variáveis de ambiente. Para substituir uma variável específica para um sidecar, adicione-a na configuração do sidecar.

  • Em modelos ARM, use a environmentVariables matriz nas propriedades do sidecar.
  • No Portal, adicione variáveis de ambiente na interface do usuário de configuração do contêiner.
  • As variáveis de ambiente podem fazer referência às configurações da aplicação pelo nome; o valor será resolvido no momento de execução.

Adicione a extensão Redis sidecar

No portal do Azure, pode adicionar uma extensão Redis sidecar à sua aplicação para armazenamento em cache. O sidecar Redis é apenas para cache leve, não é apenas um substituto para o Azure Cache para Redis.

Para usar o sidecar Redis:

  • No código do aplicativo, defina a cadeia de conexão Redis como localhost:6379.
  • Configure o Redis no código de inicialização do seu aplicativo.
  • Use padrões de cache para armazenar e recuperar dados.
  • Teste acessando seu aplicativo e verificando os logs para confirmar o uso do cache.

Adicionar a extensão do sidecar Datadog

No portal do Azure, você pode adicionar uma extensão de sidecar Datadog para coletar logs, métricas e rastreamentos para observabilidade sem modificar o código do aplicativo. Ao adicionar a extensão, você especifica as informações da sua conta Datadog para que a extensão sidecar possa enviar telemetria diretamente para a Datadog.

Para aplicativos baseados em código:

  1. Crie um startup.sh script para baixar e inicializar o rastreador Datadog. O script a seguir é um exemplo para um aplicativo .NET:

    #!/bin/bash
    
    # Create log directory. This should correspond to the "Datadog Trace Log Directory" extension setting
    mkdir -p /home/LogFiles/dotnet
    
    # Download the Datadog tracer tarball
    wget -O /datadog/tracer/datadog-dotnet-apm-2.49.0.tar.gz https://github.com/DataDog/dd-trace-dotnet/releases/download/v2.49.0/datadog-dotnet-apm-2.49.0.tar.gz
    
    # Navigate to the tracer directory, extract the tarball, and return to the original directory
    mkdir -p /datadog/tracer
    pushd /datadog/tracer
    tar -zxf datadog-dotnet-apm-2.49.0.tar.gz
    popd
    
    dotnet /home/site/wwwroot/<yourapp>.dll
    
  2. Defina o comando de inicialização no Serviço de Aplicativo para executar esse script.

  3. Execute o aplicativo e confirme se a telemetria foi enviada entrando no painel do Datadog.

Para aplicativos baseados em contêiner:

Antes de adicionar a extensão do sidecar Datadog, adicione a configuração do rastreador Datadog em seu Dockerfile, semelhante ao exemplo de script para aplicativos baseados em código.

Adicione a extensão do sidecar Phi-3/Phi-4

No portal do Azure, você pode adicionar uma extensão de sidecar Phi-3 ou Phi-4 ao seu aplicativo para fornecer um modelo de inferência local para cargas de trabalho de IA. Seu aplicativo deve estar em uma camada de preço que ofereça suporte às necessidades de inferência. Para níveis sem suporte, não serão exibidas as opções para as extensões de sidecar Phi-3/Phi-4.

  • O sidecar Phi-3/Phi-4 expõe uma API de conclusão de bate-papo em http://localhost:11434/v1/chat/completions.
  • Depois que o sidecar é adicionado, a inicialização inicial pode ser lenta devido ao carregamento do modelo.
  • Para invocar a API, envie solicitações POST para esse ponto de extremidade, no mesmo estilo da API de conclusão de bate-papo OpenAPI.

Para obter instruções passo a passo de ponta a ponta, consulte:

Aceda a um sidecar a partir do contentor principal ou de outro sidecar

Os contêineres sidecar compartilham o mesmo host de rede que o contêiner principal. O contêiner principal e outros sidecars podem chegar a qualquer porto em um sidecar usando localhost:<port>. Por exemplo, se um sidecar estiver a escutar na porta 4318, a aplicação principal poderá aceder-lhe em localhost:4318.

O campo Porta no Portal é apenas metadados e não é usado pelo Serviço de Aplicativo para roteamento.

Adicionar montagens de volume

Por padrão, o volume padrão /home é montado em todos os contêineres, a menos que seja desativado. Pode configurar pontos de montagem de volume adicionais para os seus sidecars.

As montagens de volume permitem que você compartilhe arquivos e diretórios não persistentes entre contêineres em seu aplicativo Web.

  • Subcaminho do volume: Caminho de diretório lógico criado pelo Serviço de Aplicativo. Contêineres com o mesmo subcaminho compartilham arquivos.
  • Caminho de montagem do contêiner: Caminho do diretório dentro do contêiner mapeado para o subcaminho do volume.

Exemplo de configuração:

Nome do sidecar Subcaminho do volume Caminho de montagem do contêiner Somente leitura
Contentor1 /directory1/directory2 /container1Vol Falso
Contentor 2 /directory1/directory2 /container2Vol Verdade
Contentor3 /directory1/directory2/directory3 /container3Vol Falso
Contentor4 /diretório4 /container1Vol Falso
  • Se Container1 criar /container1Vol/myfile.txt, Container2 pode lê-lo via /container2Vol/myfile.txt.
  • Se Container1 criar /container1Vol/directory3/myfile.txt, Container2 pode lê-lo via /container2Vol/directory3/myfile.txt, e Container3 pode ler/gravar via /container3Vol/myfile.txt.
  • O Container4 não partilha um volume com os outros.

Observação

Para aplicativos Linux baseados em código, o contêiner Linux integrado não pode usar montagens de volume.

Mais recursos