Partilhar via


Guia de início rápido: implantar um aplicativo Dapr em aplicativos de contêiner do Azure com um modelo do Azure Resource Manager ou Bicep

O Dapr (Distributed Application Runtime) ajuda os desenvolvedores a criar microsserviços resilientes e confiáveis. Neste início rápido, você permite que os sidecars do Dapr sejam executados ao lado de dois aplicativos de contêiner que produzem e consomem mensagens, armazenadas em um repositório de estado do Armazenamento de Blob do Azure. Usando modelos do Azure Resource Manager ou Bicep, você:

  • Passe os comandos da CLI do Azure para implantar um modelo que inicia tudo o que você precisa para executar microsserviços.
  • Verifique a interação entre os dois microsserviços no portal do Azure.

Diagrama de arquitetura para microsserviços Dapr Hello World em Aplicativos de Contêiner do Azure

Este guia de início rápido espelha os aplicativos que você implanta no início rápido de código aberto do Dapr Hello World .

Pré-requisitos

Configurar

Para entrar no Azure a partir da CLI, execute o seguinte comando 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 Aplicativos de Contêiner do Azure para a CLI.

Se você receber erros sobre parâmetros ausentes ao executar az containerapp comandos na CLI do Azure ou cmdlets do Az.App módulo no Azure PowerShell, certifique-se de ter a versão mais recente da extensão Aplicativos de Contêiner do Azure instalada.

az extension add --name containerapp --upgrade

Nota

A partir de maio de 2024, as extensões da CLI do Azure não habilitam mais recursos de visualização por padrão. Para acessar os recursos de visualização do Container Apps, instale a extensão Container Apps com --allow-preview trueo .

az extension add --name containerapp --upgrade --allow-preview true

Agora que a extensão ou módulo atual está instalado, registre os Microsoft.App namespaces e Microsoft.OperationalInsights .

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

Definir variáveis de ambiente

Defina as seguintes variáveis de ambiente. 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 seu 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 ARM e Bicep usados para implantar a solução.

Selecione o botão Fork na parte superior do repositório para bifurcar o repositório para sua conta.

Agora você pode clonar seu fork para trabalhar com ele localmente.

Use o seguinte comando git para clonar seu repositório bifurcado no diretório acadapr-templates .

git clone https://github.com/$GITHUB_USERNAME/Tutorial-Deploy-Dapr-Microservices-ACA.git acadapr-templates

Implementar

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 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 Container Apps e o espaço de trabalho associado do Log Analytics para hospedar a solução hello world Dapr.
  • Uma instância do Application Insights para rastreamento distribuído do Dapr.
  • O nodeapp servidor de aplicativos em targetPort: 3000 execução com o Dapr habilitado e configurado usando:
    • "appId": "nodeapp"
    • "appPort": 3000
    • Uma identidade atribuída pelo usuário com acesso ao armazenamento de Blob do Azure por meio de uma atribuição de função de Colaborador de Dados de Armazenamento
  • Um componente Dapr do "type": "state.azure.blobstorage" escopo para uso pelo nodeapp estado de armazenamento.
  • O headless pythonapp habilitado para Dapr que invoca o serviço usando a nodeapp chamada de serviço Dapr.
  • Uma atribuição de função de ID do Microsoft Entra para o aplicativo Node.js usado pelo componente Dapr para estabelecer uma conexão com o armazenamento de Blob.

Verificar o resultado

Confirmar persistência de estado bem-sucedida

Você pode confirmar se os serviços estão funcionando corretamente exibindo dados em sua conta de Armazenamento do Azure.

  1. No browser, abra o portal do Azure.

  2. Vá para a conta de armazenamento recém-criada no seu grupo de recursos.

  3. Selecione Contêineres de armazenamento de>dados no menu do lado esquerdo.

  4. Selecione o contêiner criado.

  5. Verifique se você pode ver o arquivo nomeado order no contêiner.

  6. Selecione o arquivo.

  7. Selecione a guia Editar .

  8. Selecione o botão Atualizar para observar as atualizações.

Ver registos

Os logs de aplicativos de contêiner são armazenados na ContainerAppConsoleLogs_CL tabela personalizada no espaço de trabalho do Log Analytics. Você pode exibir logs por meio do portal do Azure ou da CLI. Pode haver um pequeno atraso inicialmente para que a tabela apareça no espaço de trabalho.

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 demonstra 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

Clean up resources (Limpar recursos)

Como pythonapp continuamente faz chamadas com nodeapp mensagens que são persistentes em seu armazenamento de estado configurado, é importante concluir essas etapas de limpeza para evitar operações faturáveis contínuas.

Se quiser excluir os recursos criados como parte desta explicação passo a passo, execute o seguinte comando.

az group delete \
  --resource-group $RESOURCE_GROUP

Gorjeta

Tem problemas? Informe-nos no GitHub abrindo um problema no repositório de Aplicativos de Contêiner do Azure.

Próximos passos