Compartilhar via


Configurar sidecars no Serviço de Aplicativo do Azure

Este artigo fornece etapas práticas para habilitar e configurar sidecars no seu aplicativo do Serviço de Aplicativo.

Criar um sidecar no portal do Azure

  1. Acesse o recurso do Serviço de Aplicativo no portal do Azure.
  2. Selecione o 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 junto com o contêiner do aplicativo principal.

Habilitar 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 ativá-lo para um aplicativo existente na página Contêineres do > de um aplicativo existente, conforme mostrado na seguinte captura de tela:

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 LinuxFxVersionsitecontainers para e habilita o suporte para o padrão sidecar.

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

Se você precisar alternar de volta 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>

Esse comando remove todos os contêineres 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, confira Quais são as diferenças dos contêineres personalizados habilitados para sidecar?

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

Aplicativos que têm a funcionalidade sidecar habilitada são configurados de forma diferente daqueles que não têm essa funcionalidade habilitada.

  • Os aplicativos habilitados para sidecar são designados por LinuxFxVersion=sitecontainers e configurados com recursos sitecontainers.
  • Os aplicativos que não estão habilitados para sidecar configuram o nome do contêiner e o tipo diretamente com LinuxFxVersion=DOCKER|<image-details>.

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

Aplicativos que não são compatíveis com sidecar configuram o contêiner principal com configurações de aplicativo, como:

  • DOCKER_REGISTRY_SERVER_URL
  • DOCKER_REGISTRY_SERVER_USERNAME
  • DOCKER_REGISTRY_SERVER_PASSWORD
  • WEBSITES_PORT

Essas configurações não são aplicáveis a aplicativos habilitados para sidecar.

Definir um sidecar com um modelo do ARM

Adicione o Microsoft.Web/sites/sitecontainers tipo de recurso a um aplicativo. Para efetuar pull de uma imagem sidecar do ACR usando uma identidade gerenciada atribuída pelo usuário, especifique authType como UserAssigned forneça e o 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 tem isMain definido como true. Todos os contêineres de sidecar devem ter "isMain": false.

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

Como criar sidecars com a CLI do Azure

Crie um aplicativo habilitado para sidecar com az webapp create. Por exemplo:

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

Crie um contêiner de 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 todos os comandos de sidecar, consulte az webapp sitecontainers.

Definir variáveis de ambiente

Em um aplicativo Linux, todos os contêineres (main 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 do ARM, use a matriz environmentVariables 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 do aplicativo por nome; o valor será resolvido em runtime.

Adicionar a extensão de sidecar do Redis

No portal do Azure, você pode adicionar uma extensão de sidecar do Redis ao seu aplicativo para cache. O sidecar do Redis é apenas para cache leve, não um substituto para o Cache do Azure 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 aplicativo.
  • Use padrões de cache para armazenar e recuperar dados.
  • Teste acessando seu aplicativo e verificando logs para confirmar o uso do cache.

Adicionar a extensão de sidecar do Datadog

No portal do Azure, você pode adicionar uma extensão de sidecar do Datadog para coletar logs, métricas e rastreamentos para observabilidade sem modificar o código do aplicativo. Ao adicionar a extensão, especifique suas informações de conta do Datadog para que a extensão sidecar possa enviar telemetria diretamente ao 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 é enviada entrando no painel do Datadog.

Para aplicativos baseados em contêiner:

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

Adicionar a extensão de 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 faixa de preço que dê suporte às necessidades de inferência. Para camadas sem suporte, você não vê 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 chat 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 chamar a API, envie solicitações POST para este endpoint, no mesmo estilo da API de conclusão de chat do OpenAPI.

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

Acessar um sidecar do contêiner principal ou de outro sidecar

Contêineres acessórios compartilham o mesmo anfitrião de rede que o contêiner principal. O contêiner principal e outros sidecars podem alcançar qualquer porta em um sidecar usando localhost:<port>. Por exemplo, se um sidecar escutar na porta 4318, o aplicativo principal poderá acessá-lo em localhost:4318.

O campo Porta no Portal é somente 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 desabilitado. Você pode configurar montagens de volume adicionais para seus sidecars.

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

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

Exemplo de configuração:

Nome do sidecar Subcaminho do volume Caminho de montagem do contêiner Somente leitura
Contêiner1 /directory1/directory2 /container1Vol Falso
Contêiner2 /directory1/directory2 /container2Vol Verdade
Contêiner3 /diretório1/diretório2/diretório3 /container3Vol Falso
Contêiner4 /directory4 /container1Vol Falso
  • Se Container1 criar /container1Vol/myfile.txt, Container2 poderá lê-lo por meio de /container2Vol/myfile.txt.
  • Se Container1 criar /container1Vol/directory3/myfile.txt, Container2 poderá lê-lo por meio /container2Vol/directory3/myfile.txte Container3 poderá ler/gravar via /container3Vol/myfile.txt.
  • O Container4 não compartilha um volume com as outras pessoas.

Observação

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

Mais recursos