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 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 as instruções de início rápido "Criar um cache Redis de código-fonte aberto".
  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. 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 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 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 do Entra ID 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 deploy diretório 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 do 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

Configure o aplicativo Node.js

No node.yaml, a especificação do pod tem o rótulo adicionado para usar a identidade de 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 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 de 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 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 pretende mais usar os recursos deste guia de início rápido, pode 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