Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os Aplicativos de Contêiner do Azure gerenciam a colocação em escala horizontal automático por meio de um conjunto de regras de colocação em escala declarativo. À medida que um aplicativo de contêiner é escalado, novas instâncias do aplicativo de contêiner são criadas sob demanda. Essas instâncias são conhecidas como réplicas.
Neste tutorial, você adiciona uma regra de escala HTTP ao seu aplicativo de contêiner e observa como seu aplicativo é dimensionado.
Pré-requisitos
| Requisito | Instruções |
|---|---|
| Conta do Azure | Se você ainda não tiver uma conta do Azure, poderá criar uma conta gratuitamente. Você precisa da permissão de Colaborador na assinatura do Azure para continuar. Consulte Atribuir funções do Azure usando o portal do Azure para obter detalhes. |
| Conta do GitHub | Obtenha uma gratuitamente. |
| CLI do Azure | Instale a CLI do Azure. |
Instalação
Para entrar no Azure usando a CLIl, execute o comando a seguir e siga os prompts para concluir o processo de autenticação.
az login
Para garantir que você esteja executando a versão mais recente da CLI, execute o comando “upgrade”.
az upgrade
Em seguida, instale ou atualize a extensão dos Aplicativos de Contêiner do Azure para a CLI.
Se você receber erros sobre parâmetros ausentes ao executar comandos az containerapp na CLI do Azure ou cmdlets do módulo Az.App no PowerShell, verifique se está usando a última versão da extensão Aplicativos de Contêiner do Azure instalada.
az extension add --name containerapp --upgrade
Observação
A partir de maio de 2024, as extensões da CLI do Azure já não permitem funcionalidades de versão prévia do recurso por padrão. Para acessar as versões prévias dos recursos dos Aplicativos de Contêiner, instale a extensão Aplicativos de Contêiner com --allow-preview true.
az extension add --name containerapp --upgrade --allow-preview true
Agora que a extensão ou módulo atual está instalado, registre os namespaces Microsoft.App e Microsoft.OperationalInsights.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Criar e implantar o aplicativo de contêiner
Crie e implante seu aplicativo de contêiner com o comando containerapp up. Este comando cria um:
- Grupo de recursos
- Ambiente de Aplicativos de Contêiner
- espaço de trabalho do Log Analytics
Se algum desses recursos já existir, o comando usará os recursos existentes em vez de criar novos.
Por fim, o comando cria e implanta o aplicativo de contêiner usando uma imagem de contêiner público. mcr.microsoft.com/dotnet/samples:aspnetapp Essa imagem é usada para disparar as regras de escala criadas neste artigo. Você não precisa saber ou usar o .NET para concluir este procedimento.
az containerapp up \
--name my-container-app \
--resource-group my-container-apps \
--location centralus \
--environment 'my-container-apps' \
--image mcr.microsoft.com/dotnet/samples:aspnetapp \
--target-port 8080 \
--ingress external \
--query properties.configuration.ingress.fqdn \
Observação
Certifique-se de que o valor do parâmetro --image está em menor caso.
Ao definir --ingress como external, você torna as solicitações públicas disponíveis do aplicativo de contêiner.
O comando up retorna o FQDN (nome de domínio totalmente qualificado) do aplicativo de contêiner. Copie este FQDN para um arquivo de texto. Use-o na seção Enviar solicitações . Seu FQDN se parece com o exemplo a seguir:
https://my-container-app.icydune-96848328.centralus.azurecontainerapps.io
Adicionar regra de escala
Adicione uma regra de escala HTTP ao seu aplicativo de contêiner executando o comando az containerapp update.
az containerapp update \
--name my-container-app \
--resource-group my-container-apps \
--min-replicas 1 \
--max-replicas 10 \
--scale-rule-name my-http-scale-rule \
--scale-rule-http-concurrency 1
Esse comando adiciona uma regra de escala HTTP ao seu aplicativo de contêiner com o nome my-http-scale-rule e uma configuração de simultaneidade de 1. Se seu aplicativo receber mais de uma solicitação HTTP simultânea, o tempo de execução criará réplicas do aplicativo para lidar com as solicitações.
O comando update retorna a nova configuração como uma resposta JSON para verificar se sua solicitação foi bem-sucedida.
Iniciar saída de log
Você pode observar os efeitos do dimensionamento do aplicativo exibindo os logs gerados pelo tempo de execução dos Aplicativos de Contêiner. Use o comando az containerapp logs show para começar a escutar entradas de log.
az containerapp logs show \
--name my-container-app \
--resource-group my-container-apps \
--type=system \
--follow=true
O comando show retorna entradas dos logs do sistema para seu aplicativo de contêiner em tempo real. Você pode esperar uma resposta como o exemplo a seguir:
{
"TimeStamp":"2023-08-01T16:49:03.02752",
"Log":"Connecting to the container 'my-container-app'..."
}
{
"TimeStamp":"2023-08-01T16:49:03.04437",
"Log":"Successfully Connected to container:
'my-container-app' [Revision: 'my-container-app--9uj51l6',
Replica: 'my-container-app--9uj51l6-5f96557ffb-5khg9']"
}
{
"TimeStamp":"2023-08-01T16:47:31.9480811+00:00",
"Log":"Microsoft.Hosting.Lifetime[14]"
}
{
"TimeStamp":"2023-08-01T16:47:31.9481264+00:00",
"Log":"Now listening on: http://[::]:80"
}
{
"TimeStamp":"2023-08-01T16:47:31.9490917+00:00",
"Log":"Microsoft.Hosting.Lifetime[0]"
}
{
"TimeStamp":"2023-08-01T16:47:31.9491036+00:00",
"Log":"Application started. Press Ctrl+C to shut down."
}
{
"TimeStamp":"2023-08-01T16:47:31.949723+00:00",
"Log":"Microsoft.Hosting.Lifetime[0]"
}
{
"TimeStamp":"2023-08-01T16:47:31.9497292+00:00",
"Log":"Hosting environment: Production"
}
{
"TimeStamp":"2023-08-01T16:47:31.9497325+00:00",
"Log":"Microsoft.Hosting.Lifetime[0]"
}
{
"TimeStamp":"2023-08-01T16:47:31.9497367+00:00",
"Log":"Content root path: /app/"
}
Para obter mais informações, consulte Logs containerapp do Azure.
Solicitações de envio
Abra um novo shell bash. Execute o comando a seguir, substituindo <YOUR_CONTAINER_APP_FQDN> pelo nome de domínio totalmente qualificado para seu aplicativo de contêiner que você salvou na seção Criar e implantar o aplicativo de contêiner.
seq 1 50 | xargs -Iname -P10 curl "<YOUR_CONTAINER_APP_FQDN>"
Esses comandos enviam 50 solicitações para seu aplicativo de contêiner em lotes simultâneos de dez solicitações cada.
| Comando ou argumento | Descrição |
|---|---|
seq 1 50 |
Gera uma sequência de números de 1 a 50. |
| |
O operador de pipe envia a sequência para o comando xargs. |
xargs |
Executa curl com a URL especificada |
-Iname |
Atua como um espaço reservado para a saída de seq. Esse argumento impede que o valor de retorno seja enviado para o comando curl. |
curl |
Chama a URL fornecida. |
-P10 |
Instrui xargs a executar até dez processos por vez. |
Para obter mais informações, consulte a documentação para:
No primeiro shell, onde você executou o comando az containerapp logs show, a saída agora contém uma ou mais entradas de log como as seguintes.
{
"TimeStamp":"2023-08-01 18:09:52 +0000 UTC",
"Type":"Normal",
"ContainerAppName":"my-container-app",
"RevisionName":"my-container-app--00001111",
"ReplicaName":"my-container-app--00001111-aaaaa22222-bbbb",
"Msg":"Replica 'my-container-app--00001111-aaaaa22222-bbbb' has been scheduled to run on a node.",
"Reason":"AssigningReplica",
"EventSource":"ContainerAppController",
"Count":0
}
Exibir dimensionamento no portal do Azure (opcional)
Entre no portal do Azure.
Na barra Pesquisar na parte superior, digite my-container-app.
Nos resultados da pesquisa, em Recursos, selecione my-container-app.
Na barra de navegação à esquerda, expanda Aplicativo e selecione Escala e réplicas.
Na página Escala e réplicas selecione Réplicas.
Seu aplicativo de contêiner agora tem mais de uma réplica em execução.
Talvez seja necessário selecionar Atualizar para ver as novas réplicas.
Na barra de navegação à esquerda, expanda Monitoramento e selecione Métricas.
Na página Métricas, defina Métrica como Solicitações.
Selecione Aplicar divisão.
Expanda a lista suspensa Valores e marque Réplica.
Selecione o ícone de verificação azul para concluir a edição da divisão.
O gráfico mostra as solicitações recebidas pelo aplicativo de contêiner, divididas por réplica.
Por padrão, a escala do gráfico é definida para durar 24 horas, com uma granularidade de tempo de 15 minutos. Selecione a escala e altere-a para os últimos 30 minutos, com uma granularidade de tempo de um minuto. Clique no botão Aplicar.
Selecione no gráfico e arraste para destacar o aumento recente nas solicitações recebidas pelo seu aplicativo de contêiner.
A captura de tela a seguir mostra uma exibição ampliada de como as solicitações recebidas pelo aplicativo de contêiner são divididas entre réplicas.
Dimensionamento de CPU e memória
Você deve preferir regras de escala HTTP a regras de escala de CPU ou de memória quando possível. A CPU e o dimensionamento de memória não permitem que seu aplicativo de contêiner seja dimensionado para zero.
Depois de adicionar uma regra de CPU ou escala de memória, você pode testá-la enviando solicitações para seu aplicativo de contêiner e exibindo o dimensionamento no portal do Azure.
Depois de enviar solicitações para seu aplicativo de escala, pode levar um minuto até que a regra de escala seja disparada e as novas réplicas sejam criadas.
Dimensionamento de CPU
O dimensionamento da CPU permite que seu aplicativo seja ampliado ou reduzido conforme a utilização da CPU.
Por exemplo, se você criar uma regra de escala de CPU com um valor de utilização 50, os Aplicativos de Contêiner do Azure criarão mais réplicas do seu aplicativo de contêiner quando a utilização média da CPU para todas as réplicas atingir 50%.
O dimensionamento da CPU não permite que seu aplicativo de contêiner seja dimensionado para zero. Para obter mais informações sobre esse gatilho, consulte o gatilho de escala da CPU KEDA.
Adicione uma regra de escala de CPU ao seu aplicativo de contêiner executando o az containerapp update comando.
Observação
Quando você usa a CLI do Azure para adicionar uma regra de escala a um aplicativo de contêiner que já tem uma regra de escala, a nova regra de escala substitui a regra de escala antiga. Para ver como adicionar várias regras de escala, consulte várias regras de escala.
Antes de executar o comando a seguir, substitua <PLACEHOLDERS> pelos seus valores. Para este tutorial, substitua <UTILIZATION> por 1. Isso faz com que sua aplicação de contêiner escale quando a utilização média da CPU para todas as réplicas atingir 1%. Esse valor é apenas para demonstração. O número de réplicas é limitado a 10 pelo --max-replicas 10 especificado ao executar az containerapp update.
az containerapp update \
--name my-container-app \
--resource-group my-container-apps \
--min-replicas 1 \
--max-replicas 10 \
--scale-rule-name my-cpu-scale-rule \
--scale-rule-type cpu \
--scale-rule-metadata type=Utilization value=<UTILIZATION>
Dimensionamento de memória
O dimensionamento de memória permite que seu aplicativo seja dimensionado ou reduzido dependendo da quantidade de memória que está sendo usada.
Por exemplo, se você criar uma regra de escala de memória com um valor de utilização 50, os Aplicativos de Contêiner do Azure criarão mais réplicas do seu aplicativo de contêiner quando a utilização média de memória para todas as réplicas alcançar 50%.
O dimensionamento de memória não permite à sua aplicação de contêiner escalar para zero. Para obter mais informações sobre esse gatilho, consulte o gatilho de escala de memória do KEDA.
Adicione uma regra de escala de memória ao seu aplicativo de contêiner executando o az containerapp update comando.
Observação
Quando você usa a CLI do Azure para adicionar uma regra de escala a um aplicativo de contêiner que já tem uma regra de escala, a nova regra de escala substitui a regra de escala antiga. Para ver como adicionar várias regras de escala, consulte várias regras de escala.
Antes de executar o comando a seguir, substitua <PLACEHOLDERS> pelos seus valores. Para este tutorial, substitua <UTILIZATION> por 1. Isso faz com que seu aplicativo de contêiner escale quando a média de utilização de memória de todas as réplicas alcançar 1%. Esse valor é apenas para demonstração. O número de réplicas é limitado a 10 pelo --max-replicas 10 especificado ao executar az containerapp update.
az containerapp update \
--name my-container-app \
--resource-group my-container-apps \
--min-replicas 1 \
--max-replicas 10 \
--scale-rule-name my-memory-scale-rule \
--scale-rule-type memory \
--scale-rule-metadata type=Utilization value=<UTILIZATION>
Várias regras de escala
Para adicionar várias regras de escala ao seu aplicativo de contêiner usando a CLI do Azure, você deve usar YAML.
Exporte a configuração do aplicativo de contêiner para YAML com o
az containerapp showcomando.az containerapp show \ --name my-container-app \ --resource-group my-container-apps \ --output yaml > app.yamlproperties>template>scale>rulesNa seção deapp.yaml, adicione as propriedades a seguir. Substitua os<PLACEHOLDERS>pelos seus valores.... properties: ... template: ... scale: ... rules: - name: cpu-scaling-rule custom: type: cpu metadata: type: "Utilization" value: "<CPU_UTILIZATION>" - name: memory-scaling-rule custom: type: memory metadata: type: "Utilization" value: "<MEMORY_UTILIZATION>" ...Importe a configuração do aplicativo contêiner de
app.yamlcom o comandoaz containerapp update.az containerapp update \ --name my-container-app \ --resource-group my-container-apps \ --yaml app.yaml
Limpar os recursos
Caso não pretenda continuar usando este aplicativo, execute o comando a seguir para excluir o grupo de recursos junto com todos os recursos criados neste tutorial.
Cuidado
O comando a seguir exclui o grupo de recursos especificado e todos os recursos contidos nele. Se houver recursos fora do escopo deste tutorial no grupo de recursos especificado, eles também serão excluídos.
az group delete --name my-container-apps
Dica
Está enfrentando problemas? Deixe-nos saber sobre GitHub abrindo um problema no repositório dos Aplicativos de Contêiner do Azure.