Gerenciar perfis de workload com a CLI do Azure

Saiba como gerenciar perfis de carga de trabalho em seu ambiente de Aplicativos de Contêiner usando a CLI do Azure.

Criar um aplicativo de contêiner em um perfil

Por padrão, seu ambiente de Aplicativos de Contêiner é criado com uma rede virtual gerenciada que é gerada automaticamente para você. As redes virtuais geradas são inacessíveis para você porque são criadas no locatário do Microsoft.

Como alternativa, você pode criar um ambiente com uma rede virtual personalizada. Use esta opção se precisar de qualquer um dos seguintes recursos:

  • Rotas definidas pelo usuário
  • Integração com o Gateway de Aplicativo
  • Grupos de segurança de rede
  • Comunicação com recursos por trás de pontos de extremidade privados em sua rede virtual
  1. Crie um ambiente para aplicativos de contêiner.

    az containerapp env create \
      --resource-group "<RESOURCE_GROUP>" \
      --name "<NAME>" \
      --location "<LOCATION>"
    

    Esse comando pode levar até 10 minutos para ser concluído.

  2. Verifique o status do seu ambiente. O comando a seguir relata se o ambiente foi criado com êxito.

    az containerapp env show \
      --name "<ENVIRONMENT_NAME>" \
      --resource-group "<RESOURCE_GROUP>"
    

    O provisioningState precisa relatar Succeeded antes de você seguir para o próximo comando.

  3. Criar um novo aplicativo de contêiner.

    az containerapp create \
      --resource-group "<RESOURCE_GROUP>" \
      --name "<CONTAINER_APP_NAME>" \
      --target-port 80 \
      --ingress external \
      --image mcr.microsoft.com/k8se/quickstart:latest \
      --environment "<ENVIRONMENT_NAME>" \
      --workload-profile-name "Consumption"
    

Esse comando implanta o aplicativo no perfil de workload de Consumo interno. Se você quiser criar um aplicativo em um perfil Dedicado, primeiro precisará adicionar o perfil ao ambiente.

Esse comando cria o novo aplicativo no ambiente usando um perfil de workload específico.

Ao criar um ambiente com uma rede virtual personalizada, você tem controle total sobre a configuração de rede virtual. Esse controle oferece a opção de implementar os seguintes recursos:

  • Rotas definidas pelo usuário
  • Integração com o Gateway de Aplicativo
  • Grupos de segurança de rede
  • Comunicação com recursos por trás de pontos de extremidade privados em sua rede virtual

Use os comandos a seguir para criar um ambiente de Aplicativos de Contêiner.

  1. Crie uma rede virtual.

    az network vnet create \
      --address-prefixes 13.0.0.0/23 \
      --resource-group "<RESOURCE_GROUP>" \
      --location "<LOCATION>" \
      --name "<VNET_NAME>"
    
  2. Crie uma sub-rede delegada para Microsoft.App/environments.

    az network vnet subnet create \
      --address-prefixes 13.0.0.0/23 \
      --delegations Microsoft.App/environments \
      --name "<SUBNET_NAME>" \
      --resource-group "<RESOURCE_GROUP>" \
      --vnet-name "<VNET_NAME>" \
      --query "id"
    

    Copie o valor da ID e cole no próximo comando.

    A delegação Microsoft.App/environments é necessária para conceder ao runtime do Container Apps o controle necessário sobre sua rede virtual para executar os perfis de carga de trabalho no ambiente do Container Apps.

    Você pode especificar um /27 CIDR (32 IPs, sendo 8 reservados) para a sub-rede. Se você quiser especificar um /27 CIDR, considere os seguintes itens:

    • Há 11 endereços IP reservados para a infraestrutura de Aplicativos de Contêiner. Portanto, um /27 CIDR tem um máximo de 21 endereços IP disponíveis.

    • Os endereços IP são alocados de forma diferente entre os planos Dedicado e somente Consumo:

      Apenas consumo Dedicado
      Cada réplica requer um IP. Os usuários não podem ter aplicativos com mais de 21 réplicas em todos os aplicativos. A implantação de tempo de inatividade zero requer o dobro dos IPs, pois a revisão antiga fica em execução até que a nova revisão seja implantada com sucesso. Cada instância (nó de VM) requer um único IP. Você pode ter até 21 instâncias em todos os perfis de workload e centenas ou mais réplicas em execução nesses perfis de workload.
  3. Crie um ambiente para aplicativos de contêiner.

    Observação

    Você pode configurar se seu aplicativo de contêiner permite entrada pública ou apenas entrada de dentro de sua rede virtual no nível do ambiente. Para restringir a entrada apenas à sua rede virtual, defina o --internal-only sinalizador.

    az containerapp env create \
      --resource-group "<RESOURCE_GROUP>" \
      --name "<NAME>" \
      --location "<LOCATION>"
    

    Esse comando pode levar até 10 minutos para ser concluído.

  4. Verifique o status do seu ambiente. O comando a seguir relata se o ambiente foi criado com êxito.

    az containerapp env show \
      --name "<ENVIRONMENT_NAME>" \
      --resource-group "<RESOURCE_GROUP>"
    

    O provisioningState precisa relatar Succeeded antes de você seguir para o próximo comando.

  5. Criar um novo aplicativo de contêiner.

    az containerapp create \
      --resource-group "<RESOURCE_GROUP>" \
      --name "<CONTAINER_APP_NAME>" \
      --target-port 80 \
      --ingress external \
      --image mcr.microsoft.com/k8se/quickstart:latest \
      --environment "<ENVIRONMENT_NAME>" \
      --workload-profile-name "Consumption"
    

Esse comando implanta o aplicativo no perfil de workload de Consumo interno. Se você quiser criar um aplicativo em um perfil Dedicado, primeiro precisará adicionar o perfil ao ambiente.

Esse comando cria o novo aplicativo no ambiente usando um perfil de workload específico.

Adicionar perfis

Adicione um novo perfil de workload a um ambiente existente. Você precisa especificar um tipo de perfil de trabalho, conforme descrito nesta seção.

az containerapp env workload-profile add \
  --resource-group <RESOURCE_GROUP> \
  --name <ENVIRONMENT_NAME> \
  --workload-profile-type <WORKLOAD_PROFILE_TYPE> \
  --workload-profile-name <WORKLOAD_PROFILE_NAME> \
  --min-nodes <MIN_NODES> \
  --max-nodes <MAX_NODES>

Ao selecionar um perfil de carga de trabalho a ser adicionado, verifique a disponibilidade regional. O valor selecionado para o espaço reservado <WORKLOAD_PROFILE_NAME> é o nome amigável do perfil de workload.

O uso de nomes amigáveis permite adicionar vários perfis do mesmo tipo a um ambiente. O nome amigável é o que você utiliza ao implantar e manter um aplicativo de contêiner em um perfil de workload.

O tipo de perfil de trabalho é específico da região, não uma única lista codificada global. O caminho de descoberta pretendido é: az containerapp env workload-profile list-supported -l <REGION>. A implementação obtém, no ponto de extremidade de modelo do ARM, os valores com suporte para os tipos de perfil de carga de trabalho disponíveis nesse local.

Use este comando para ver os tipos de perfil de carga de trabalho válidos para sua região:

az containerapp env workload-profile list-supported -l <REGION>

Use um dos valores retornados para --workload-profile-type. Por exemplo, você pode usar D4 em regiões em que esse tipo está disponível.

Tenha em mente o seguinte comportamento:

  • O comando altera o valor de type para letras maiúsculas antes de enviá-lo.
  • Se você omitir --workload-profile-name, o comando definirá por padrão o nome do perfil como o valor do tipo.
  • Adicionar ou atualizar perfis de carga de trabalho só funciona para ambientes que dão suporte a perfis de carga de trabalho.

Editar perfis

Você pode modificar o número mínimo e máximo de nós usados por um perfil de carga de trabalho usando o update comando.

az containerapp env workload-profile update \
  --resource-group <RESOURCE_GROUP> \
  --name <ENV_NAME> \
  --workload-profile-type <WORKLOAD_PROFILE_TYPE> \
  --workload-profile-name <WORKLOAD_PROFILE_NAME> \
  --min-nodes <MIN_NODES> \
  --max-nodes <MAX_NODES>

Exclua um perfil

Use o seguinte comando para excluir um perfil de workload.

az containerapp env workload-profile delete \
  --resource-group "<RESOURCE_GROUP>" \
  --name <ENVIRONMENT_NAME> \
  --workload-profile-name <WORKLOAD_PROFILE_NAME> 

Observação

O perfil de workload de Consumo não pode ser excluído.

Inspecionar perfis

Os comandos a seguir permitem listar os perfis disponíveis em sua região e os perfis utilizados em um ambiente específico.

Listar perfis de workload disponíveis

Use o comando list-supported para listar os perfis de workload com suporte para sua região.

O seguinte comando da CLI do Azure exibe os resultados em uma tabela.

az containerapp env workload-profile list-supported \
  --location <LOCATION>  \
  --query "[].{Name: name, Cores: properties.cores, MemoryGiB: properties.memoryGiB, Category: properties.category}" \
  -o table

A resposta se assemelha a uma tabela semelhante a este exemplo:

Name                       Cores    MemoryGiB    Category
-------------------------  -------  -----------  --------------------
D4                         4        16           GeneralPurpose
D8                         8        32           GeneralPurpose
D16                        16       64           GeneralPurpose
D32                        32       128          GeneralPurpose
E4                         4        32           MemoryOptimized
E8                         8        64           MemoryOptimized
E16                        16       128          MemoryOptimized
E32                        32       256          MemoryOptimized
Consumption                4        8            Consumption
Consumption-GPU-NC24-A100  24       220          Consumption-GPU-A100
Consumption-GPU-NC8as-T4   8        56           Consumption-GPU-T4
Flex                       4        16           Consumption
NC24-A100                  24       220          GPU-NC-A100
NC48-A100                  48       440          GPU-NC-A100
NC96-A100                  96       880          GPU-NC-A100

Selecione um perfil de carga de trabalho e use o campo Nome ao adicionar ou atualizar perfis de carga de trabalho com os comandos az containerapp env workload-profile add ou az containerapp env workload-profile update para a opção --workload-profile-type.

Mostrar um perfil de workload

Exibir detalhes sobre um perfil de workload.

az containerapp env workload-profile show \
  --resource-group <RESOURCE_GROUP> \
  --name <ENVIRONMENT_NAME> \
  --workload-profile-name <WORKLOAD_PROFILE_NAME> 

Próxima etapa