Compartilhar via


Início Rápido: Implantar um aplicativo usando a extensão Dapr para o AKS (Serviço de Kubernetes do Azure) ou o Kubernetes habilitado para Arc

Neste início rápido, você usará a extensão Dapr em um cluster Kubernetes com suporte a AKS ou Arc. Você implanta um hello world exemplo, que consiste em um aplicativo Python que gera mensagens e um aplicativo Node.js que consome e persiste as mensagens.

Pré-requisitos

Clonar o repositório

  1. Clone o repositório de início rápido do Dapr usando o git clone comando.

    git clone https://github.com/Azure-Samples/dapr-aks-extension-quickstart.git
    
  2. Altere para o diretório dapr-aks-extension-quickstart.

    cd dapr-aks-extension-quickstart
    

Criar e configurar um repositório de Redis

Abra o portal do Azure para iniciar o fluxo de criação do Cache do Azure para Redis.

  1. Preencha as informações recomendadas de acordo com o guia de início rápido Criar uma instância do Cache do Azure para Redis.

  2. Selecione criar para iniciar a implantação da instância do Redis.

Verifique as informações do recurso

  1. Depois que o recurso Redis for implantado, navegue até sua página de visão geral.

  2. Tome nota:

    • O nome do host, encontrado na seção Essentials da página de visão geral do cache. O formato do nome do host é semelhante a: xxxxxx.redis.cache.windows.net.
    • A porta SSL, encontrada em Configurações>Configurações avançadas. O valor padrão é 6380.
  3. Navegue até Configurações>Autenticação e verifique se a Autenticação do Microsoft Entra está habilitada em seu recurso.

Adicionar identidade gerenciada

  1. Na seção Autenticação , na caixa de seleção Habilitar Autenticação do Microsoft Entra , insira o nome da identidade gerenciada que você criou como um pré-requisito.

    Captura de tela que mostra o campo onde você pode selecionar uma identidade gerenciada para adicionar como um usuário do Redis.

  2. Verifique se a sua identidade gerenciada foi adicionada como um usuário do Redis com permissões de Política de Acesso de Proprietário de Dados atribuídas.

Habilitar acesso à rede pública

Para esse cenário, o cache do Redis usa o acesso à rede pública. Certifique-se de limpar os recursos depois de concluir este início rápido.

  1. Navegue até Configurações>Ponto de Extremidade Privado.

  2. Selecione Habilitar acesso à rede pública no menu.

Configurar os componentes da Dapr

No arquivo redis.yaml, o componente é configurado para usar a autenticação por ID do Entra com identidade de carga de trabalho habilitada para o cluster do AKS. Nenhuma chave de acesso é necessária.

- name: useEntraID
  value: "true"
- name: enableTLS
  value: true
  1. No editor de código preferido, navegue até o diretório de implantação no repositório de exemplo e abra redis.yaml.

  2. Para redisHost, substitua o valor do placeholder <REDIS_HOST>:<REDIS_PORT> pelo hostname do cache Redis e a porta SSL que você salvou anteriormente no portal do Azure.

    - name: redisHost
      value: <your-cache-name>.redis.cache.windows.net:6380
    

Aplicar a configuração

Aplique o arquivo redis.yaml usando o kubectl apply comando.

kubectl apply -f ./deploy/redis.yaml

Saída esperada

component.dapr.io/statestore created

Implantar o aplicativo Node.js com o sidecar do Dapr

Configure o aplicativo Node.js

No node.yaml, a especificação do pod tem o rótulo adicionado para usar a identidade da carga de trabalho:

labels:
  app: node
  azure.workload.identity/use: "true"
  1. Navegue até o deploy diretório e abra node.yaml.

  2. Substitua o valor do espaço reservado <SERVICE_ACCOUNT_NAME> pelo nome da conta de serviço que você criou.

    • Esse valor deve ser a mesma conta de serviço que você usou para criar a credencial de identidade federada.

Aplicar a configuração

  1. Aplique a implantação do aplicativo Node.js ao seu cluster com o comando kubectl apply.

    kubectl apply -f ./deploy/node.yaml
    
  2. As implantações do Kubernetes são assíncronas, portanto, antes de prosseguir para as próximas etapas, verifique se a implantação foi concluída com o seguinte comando:

    kubectl rollout status deploy/nodeapp
    
  3. Acesse seu serviço usando o comando kubectl get svc.

    kubectl get svc nodeapp
    
  4. Anote o EXTERNAL-IP na saída.

Verificar o serviço de Node.js

  1. Usando curl, chame o serviço com seu EXTERNAL-IP.

    curl <EXTERNAL-IP>/ports
    

    Saída de exemplo:

    {"DAPR_HTTP_PORT":"3500","DAPR_GRPC_PORT":"50001"}
    
  2. Envie um pedido através do aplicativo.

    curl --request POST --data "@sample.json" --header Content-Type:application/json <EXTERNAL-IP>/neworder
    
  3. Confirme o pedido.

    curl <EXTERNAL-IP>/order
    

    Saída esperada

    { "orderId": "42" }
    

Implantar o aplicativo Python com o sidecar do Dapr

Configurar o aplicativo do Python

No python.yaml, a especificação do pod tem o rótulo adicionado para usar a identidade da carga de trabalho:

labels:
  app: node
  azure.workload.identity/use: "true"
  1. Navegue até o deploy diretório e abra python.yaml.

  2. Substitua o valor do espaço reservado pelo nome da conta de serviço que você criou .

    • Esse valor deve ser a mesma conta de serviço que você usou para criar a credencial de identidade federada.

Aplicar a configuração

  1. Implemente o aplicativo Python em seu cluster do Kubernetes com o comando kubectl apply.

    kubectl apply -f ./deploy/python.yaml
    
  2. As implantações do Kubernetes são assíncronas, portanto, antes de prosseguir para as próximas etapas, verifique se a implantação foi concluída com o seguinte comando:

    kubectl rollout status deploy/pythonapp
    

Observar mensagens e confirmar a persistência

Agora que os aplicativos Node.js e Python estão implantados, você pode acompanhar a chegada das mensagens.

  1. Obtenha os logs do aplicativo Node.js usando o comando kubectl logs.

    kubectl logs --selector=app=node -c node --tail=-1
    

    Saída esperada

    Got a new order! Order ID: 1
    Successfully persisted state
    Got a new order! Order ID: 2
    Successfully persisted state
    Got a new order! Order ID: 3
    Successfully persisted state
    
  2. Usando curl, chame o ponto de extremidade de pedidos do aplicativo Node.js para obter o pedido mais recente.

    curl <EXTERNAL-IP>/order
    

    Você deverá ver a última saída JSON na resposta.

Limpar os recursos

Se você não planeja mais usar os recursos deste início rápido, poderá remover o grupo de recursos, o cluster, o namespace e todos os recursos relacionados usando o comando az group delete .

az group delete --name <your-resource-group>

Próxima etapa