Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Neste tutorial, implementa uma aplicação container num ambiente conectado Container Apps existente num cluster Kubernetes compatível com Azure Arc. Depois verifica-se provisionamento, DNS, entrada, resposta à aplicação e registos.
- Obter um ambiente conectado específico pelo nome.
- Cria uma aplicação de contentores com entrada externa.
- Verifique a revisão da aplicação e o nome de domínio totalmente qualificado.
- Envie um pedido para a aplicação.
- Veja os registos de aplicação no Log Analytics, se configurado.
- Apaga a aplicação do tutorial.
Pré-requisitos
Antes de começar, verifique os seguintes requisitos:
- Um ambiente conectado criado ao concluir Ativar o Azure Container Apps no Kubernetes compatível com o Azure Arc.
- Acesso da CLI do Azure à subscrição que contém o ambiente ligado.
- Permissão no Azure para criar aplicações em contentor no grupo de recursos de destino e no ambiente ligado.
- O grupo de recursos e o nome do ambiente conectado.
- Acesso à rede e DNS a partir da sua estação de trabalho até ao endereço de entrada do ambiente conectado.
- Permissão opcional para consultar o espaço de trabalho Log Analytics configurado durante a instalação da extensão.
Antes de implementar uma aplicação de produção, consulte o Azure Container Apps no Azure Arc. Se a aplicação não for provisionada ou não se tornar acessível, veja Troubleshoot Azure Container Apps on Azure Arc-enabled Kubernetes.
Adicionar a extensão CLI do Azure
Inicie o ambiente Bash no Azure Cloud Shell.
De seguida, adicione a extensão necessária do CLI do Azure.
az extension add --name containerapp --upgrade --yes
Crie um grupo de recursos para a aplicação
A aplicação de contentores pode usar um grupo de recursos diferente do ambiente conectado. Defina o grupo de recursos da aplicação e a região Azure usada para armazenar os seus metadados de recursos. O contentor de aplicação corre no cluster Kubernetes associado ao ambiente conectado.
APP_RESOURCE_GROUP="my-container-apps-resource-group"
AZURE_LOCATION="eastus"
az group create --name $APP_RESOURCE_GROUP --location $AZURE_LOCATION
Obtenha o ambiente conectado
Defina o grupo de recursos e o nome do ambiente ligado:
CONNECTED_ENVIRONMENT_RESOURCE_GROUP="<CONNECTED_ENVIRONMENT_RESOURCE_GROUP>"
CONNECTED_ENVIRONMENT_NAME="<CONNECTED_ENVIRONMENT_NAME>"
Recupera esse ambiente ligado específico e verifica se está pronto:
CONNECTED_ENVIRONMENT_ID=$(az containerapp connected-env show \
--resource-group $CONNECTED_ENVIRONMENT_RESOURCE_GROUP \
--name $CONNECTED_ENVIRONMENT_NAME \
--query id \
--output tsv)
az containerapp connected-env show \
--resource-group $CONNECTED_ENVIRONMENT_RESOURCE_GROUP \
--name $CONNECTED_ENVIRONMENT_NAME \
--query "{Id:id,State:properties.provisioningState,Domain:properties.defaultDomain}" \
--output yaml
Continue apenas quando State for Succeeded.
Crie e verifique a aplicação
Crie o aplicativo de exemplo:
CONTAINER_APP_NAME="my-container-app"
az containerapp create \
--resource-group $APP_RESOURCE_GROUP \
--name $CONTAINER_APP_NAME \
--environment $CONNECTED_ENVIRONMENT_ID \
--environment-type connected \
--image mcr.microsoft.com/k8se/quickstart:latest \
--target-port 80 \
--ingress external
Aguarde que o aprovisionamento seja concluído com êxito:
CONTAINER_APP_ID=$(az containerapp show \
--resource-group $APP_RESOURCE_GROUP \
--name $CONTAINER_APP_NAME \
--query id \
--output tsv)
az resource wait --ids $CONTAINER_APP_ID --created --timeout 600
az containerapp show \
--resource-group $APP_RESOURCE_GROUP \
--name $CONTAINER_APP_NAME \
--query "{State:properties.provisioningState,Revision:properties.latestReadyRevisionName,FQDN:properties.configuration.ingress.fqdn}" \
--output yaml
APP_FQDN=$(az containerapp show \
--resource-group $APP_RESOURCE_GROUP \
--name $CONTAINER_APP_NAME \
--query properties.configuration.ingress.fqdn \
--output tsv)
Continue apenas quando State for o Succeeded, Revision não estiver vazio e FQDN contiver o domínio do ambiente conectado. Teste o DNS e a resposta da aplicação a partir de uma rede que pode alcançar o endereço de entrada do ambiente conectado:
nslookup $APP_FQDN
curl --fail --show-error "https://$APP_FQDN"
Também pode abrir a aplicação num navegador:
az containerapp browse \
--resource-group $APP_RESOURCE_GROUP \
--name $CONTAINER_APP_NAME
Se o DNS não resolver, o pedido exceder o tempo limite ou a resposta não for bem-sucedida, consulte O ingresso da aplicação não está acessível.
Obter registos de diagnóstico usando o Log Analytics
Nota
Esta secção aplica-se apenas quando configura o Log Analytics durante a instalação da extensão Container Apps. Se não configuraste o Log Analytics, salta esta secção.
Abra o espaço de trabalho Log Analytics configurado para a extensão Container Apps e selecione Logs. Execute a seguinte consulta para mostrar registos das últimas 72 horas. A ingestão inicial pode demorar entre 10 a 15 minutos.
let StartTime = ago(72h);
let EndTime = now();
ContainerAppConsoleLogs_CL
| where TimeGenerated between (StartTime .. EndTime)
| where ContainerAppName_s =~ "my-container-app"
Os registos de todas as aplicações hospedadas no seu cluster do Kubernetes são guardados no espaço de trabalho do Log Analytics na tabela de log personalizada chamada ContainerAppConsoleLogs_CL.
-
Log_scontém mensagens de registo de aplicação e mensagens do ciclo de vida do contentor. -
ContainerAppName_sIdentifica a aplicação do contentor. Este campo é usado pela consulta anterior.
Você pode saber mais sobre consultas de log em Introdução ao Kusto.
Limpar a aplicação do tutorial
Eliminar a aplicação de contentor de exemplo:
az containerapp delete \
--resource-group $APP_RESOURCE_GROUP \
--name $CONTAINER_APP_NAME \
--yes
Se criaste o grupo de recursos da aplicação apenas para este tutorial e este não contém outros recursos, apaga-o.
az group delete --name $APP_RESOURCE_GROUP --yes --no-wait
Não apague o ambiente conectado, localização personalizada, extensão ou cluster ligado porque outras aplicações podem partilhar esses recursos.