Início Rápido: Implantar um aplicativo Dapr nos Aplicativos de Contêiner do Azure com um modelo do Azure Resource Manager ou do Bicep
O Dapr (Distributed Application Runtime) ajuda os desenvolvedores a criar microsserviços confiáveis e resilientes. Neste início rápido, você permite que os sidecars da Dapr sejam executados junto com dois aplicativos de contêiner que produzem e consomem mensagens, armazenados em um repositório de estado do Armazenamento de Blobs do Azure. Usando modelos do Azure Resource Manager ou do Bicep, você:
- Passe comandos da CLI do Azure para implantar um modelo que inicie tudo o que você precisa para executar microsserviços.
- Verifique a interação entre os dois microsserviços no portal do Azure.
Este início rápido replica os aplicativos que você implanta no início rápido Olá, Mundo do Dapr de código aberto.
Pré-requisitos
- Instalar a CLI do Azure
- Instalar o Git
- É necessária uma conta do Azure com uma assinatura ativa. Se ainda não tem uma, crie uma conta gratuita.
- Uma conta do GitHub. Caso ainda não tenha uma, inscreva-se gratuitamente.
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 Azure PowerShell, verifique se está com a versão mais recente 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
Definir variáveis de ambiente
Defina as variáveis de ambiente a seguir. Substitua o <PLACEHOLDERS>
pelos seus valores:
RESOURCE_GROUP="<RESOURCE_GROUP>"
LOCATION="<LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<CONTAINERAPPS_ENVIRONMENT>"
Criar um grupo de recursos do Azure
Crie um grupo de recursos para organizar os serviços relacionados à implantação do aplicativo de contêiner.
az group create \
--name $RESOURCE_GROUP \
--location "$LOCATION"
Preparar o repositório GitHub
Vá para o repositório que contém os modelos do ARM e Bicep usados para implantar a solução.
Selecione o botão Criar fork na parte superior do repositório para criar um fork do repositório em sua conta.
Agora você pode clonar seu fork para trabalhar com ele localmente.
Use o seguinte comando git para clonar seu repositório com fork no diretório acadapr-templates.
git clone https://github.com/$GITHUB_USERNAME/Tutorial-Deploy-Dapr-Microservices-ACA.git acadapr-templates
Implantar
Navegue até o diretório acadapr-templates e execute o seguinte comando:
az deployment group create \
--resource-group "$RESOURCE_GROUP" \
--template-file ./azuredeploy.json \
--parameters environment_name="$CONTAINERAPPS_ENVIRONMENT"
Um aviso (BCP081) pode ser exibido. Esse aviso não tem nenhum efeito sobre a implantação bem-sucedida do aplicativo.
az deployment group create \
--resource-group "$RESOURCE_GROUP" \
--template-file ./azuredeploy.bicep \
--parameters environment_name="$CONTAINERAPPS_ENVIRONMENT"
Este comando implanta:
- O ambiente de Aplicativos de Contêiner e o workspace associado do Log Analytics para hospedar a solução Dapr "Olá, Mundo".
- Uma instância do Application Insights para rastreamento distribuído do Dapr.
- O servidor de aplicativos
nodeapp
emtargetPort: 3000
com o Dapr habilitado e configurado usando:"appId": "nodeapp"
"appPort": 3000
- Uma identidade atribuída pelo usuário com acesso ao Armazenamento de Blobs do Azure por meio de uma atribuição de função colaborador de dados de armazenamento
- Um componente Dapr com escopo
"type": "state.azure.blobstorage"
para uso pelonodeapp
para o estado de armazenamento. - O
pythonapp
sem periféricos habilitado para Dapr, que invoca o serviçonodeapp
usando a invocação do serviço Dapr. - Uma atribuição de função do Microsoft Entra ID para o aplicativo Node.js usado pelo componente Dapr para estabelecer uma conexão com o Armazenamento de Blobs.
Verifique o resultado
Confirmar a permanência de estado bem-sucedida
Você pode confirmar que os serviços estão funcionando corretamente exibindo os dados da sua conta de Armazenamento do Microsoft Azure.
Abra o portal do Azure no navegador.
Vá para a conta de armazenamento recém-criada em seu grupo de recursos.
Selecione Armazenamento de Dados>Contêineres no menu à esquerda.
Selecione o contêiner criado.
Verifique se você pode ver o arquivo chamado
order
no contêiner.Selecione o arquivo .
Selecione a guia Editar.
Selecione o botão Atualizar para procurar atualizações.
Exibir Logs
Os logs de aplicativos de contêiner são armazenados na tabela personalizada ContainerAppConsoleLogs_CL
no workspace do Log Analytics. Você pode exibir logs pelo portal do Azure ou por meio da CLI. Pode haver um pequeno atraso inicial para a tabela aparecer no workspace.
Use o comando a seguir para exibir logs no Bash ou no PowerShell.
LOG_ANALYTICS_WORKSPACE_CLIENT_ID=`az containerapp env show --name $CONTAINERAPPS_ENVIRONMENT --resource-group $RESOURCE_GROUP --query properties.appLogsConfiguration.logAnalyticsConfiguration.customerId --out tsv`
az monitor log-analytics query \
--workspace "$LOG_ANALYTICS_WORKSPACE_CLIENT_ID" \
--analytics-query "ContainerAppConsoleLogs_CL | where ContainerAppName_s == 'nodeapp' and (Log_s contains 'persisted' or Log_s contains 'order') | project ContainerAppName_s, Log_s, TimeGenerated | take 5" \
--out table
A saída a seguir mostra o tipo de resposta a esperar do comando.
ContainerAppName_s Log_s TableName TimeGenerated
-------------------- ------------------------------- ------------- ------------------------
nodeapp Got a new order! Order ID: 61 PrimaryResult 2021-10-22T21:31:46.184Z
nodeapp Successfully persisted state. PrimaryResult 2021-10-22T21:31:46.184Z
nodeapp Got a new order! Order ID: 62 PrimaryResult 2021-10-22T22:01:57.174Z
nodeapp Successfully persisted state. PrimaryResult 2021-10-22T22:01:57.174Z
nodeapp Got a new order! Order ID: 63 PrimaryResult 2021-10-22T22:45:44.618Z
Limpar os recursos
Como pythonapp
faz chamadas continuamente para nodeapp
com mensagens que são mantidas em seu repositório de estado configurado, é importante concluir essas etapas de limpeza para evitar operações faturáveis em andamento.
Se você quiser excluir os recursos criados como parte deste passo a passo, execute o comando a seguir.
az group delete \
--resource-group $RESOURCE_GROUP
Dica
Está enfrentando problemas? Deixe-nos saber sobre GitHub abrindo um problema no repositório dos Aplicativos de Contêiner do Azure.