Compartilhar via


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

Neste início rápido, você usará a extensão de cluster do Dapr em um cluster do Kubernetes habilitado para o 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 Inícios rápidos do Dapr usando o comando git clone.

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

Criar e configurar um repositório 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 as instruções de início rápido "Criar um cache Redis de software livre".
  2. Selecione criar para iniciar a implantação da instância do Redis.

Verificar as informações do recurso

  1. Depois que o recurso Redis for implantado, navegue até sua página de visão geral.
  2. Anote:
    • 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 na folha Configurações Avançadas do cache. O valor padrão é 6380.
  3. Navegue até a folha Autenticação e verifique se a Autenticação do Microsoft Entra está habilitada em seu recurso.

Adicionar identidade gerenciada

  1. Na folha Autenticação, digite o nome da Identidade Gerenciada que você criou como um pré-requisito no campo na caixa de seleção Habilitar Autenticação do Microsoft Entra.

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

  2. Verifique se sua identidade gerenciada foi adicionada como permissões da Política de Acesso do Proprietário de Dados atribuída pelo usuário redis.

Habilitar o acesso à rede pública

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

  1. Navegue até a folha Ponto de Extremidade Privado.
  2. Clique em Habilitar o acesso à rede pública no menu superior.

Configurar os componentes da Dapr

Em redis.yaml, o componente é configurado para usar a Autenticação de ID de Entra usando a 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 deploy no exemplo e abra redis.yaml.

  2. Para redisHost, substitua o valor do espaço reservado <REDIS_HOST>:<REDIS_PORT> pelo nome do host do cache Redis e pela 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

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

    kubectl apply -f ./deploy/redis.yaml
    
  2. Verifique se o armazenamento do estado foi configurado com êxito usando o comando kubectl get components.redis.

    kubectl get components.redis -o yaml
    

    Saída esperada

    component.dapr.io/statestore created
    

Implantar o aplicativo Node.js com o sidecar do Dapr

Configurar o aplicativo Node.js

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

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

  2. Substitua o valor do espaço reservado <SERVICE_ACCOUNT_NAME> pelo serviceAccountName com o 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 passar 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 uma ordem para o 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 Python

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

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

  2. Substitua o valor do espaço reservado <SERVICE_ACCOUNT_NAME> pelo serviceAccountName com o 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 passar 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 ver as mensagens serem enviadas.

  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 pedido do aplicativo Node.js para obter o pedido mais recente.

    curl $EXTERNAL_IP/order
    

    Você deve ver a saída JSON mais recente na resposta.

Limpar os recursos

Se você não planeja mais usar os recursos deste início rápido, poderá excluir todos os recursos associados removendo o grupo de recursos.

Remova o grupo de recursos, o cluster, o namespace e todos os recursos relacionados usando o comando az group delete.

az group delete --name MyResourceGroup

Próximas etapas