Partilhar via


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

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

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

Criar e configurar uma loja 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 aberto".
  2. Selecione Criar para iniciar a implantação da instância Redis.

Verificar informações de recursos

  1. Depois que o recurso Redis for implantado, navegue até a página de visão geral.
  2. Tome nota:
    • O nome do host, encontrado na secção Essentials da página de visão geral do cache. O formato hostname é semelhante a: xxxxxx.redis.cache.windows.net.
    • A porta SSL, encontrada na folha Configurações avançadas do cache. O valor predefinido é 6380.
  3. Navegue até ao painel Autenticação e verifique se a Autenticação do Microsoft Entra está ativada no seu recurso.

Adicionar identidade gerenciada

  1. No painel Autenticação, digite o nome da Identidade Gerida que criou como pré-requisito no campo abaixo da 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 Redis.

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

Habilitar acesso à rede pública

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

  1. Navegue até ao Endpoint Privado painel.
  2. Clique em Ativar acesso à rede pública no menu superior.

Configurar os componentes do Dapr

No redis.yaml, o componente é configurado para usar a Autenticação de ID do Entra usando a identidade de carga de trabalho habilitada para o cluster AKS. Não são necessárias chaves de acesso.

- name: useEntraID
  value: "true"
- name: enableTLS
  value: true
  1. No editor de códigos da sua preferência, navegue até ao diretório deploy no exemplo e abra redis.yaml.

  2. Para redisHost, substitua o valor do marcador <REDIS_HOST>:<REDIS_PORT> pelo nome de host do cache Redis e pela porta do SSL que guardou anteriormente do portal do Azure.

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

Aplicar a configuração

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

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

    kubectl get components.redis -o yaml
    

    Resultados esperados

    component.dapr.io/statestore created
    

Implemente a aplicação Node.js com o sidecar Dapr

Configurar o aplicativo Node.js

Em node.yaml, a especificação do pod inclui o rótulo 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 de espaço reservado <SERVICE_ACCOUNT_NAME> para serviceAccountName pelo nome da conta de serviço que você criou.

    • Esse valor deve ser a mesma conta de serviço usada para criar a credencial de identidade federada.

Aplicar a configuração

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

    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 está concluída com o seguinte comando:

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

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

Verificar o serviço Node.js

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

    curl $EXTERNAL_IP/ports
    

    Exemplo de saída

    {"DAPR_HTTP_PORT":"3500","DAPR_GRPC_PORT":"50001"}
    
  2. Envie um pedido para o aplicativo.

    curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworder
    
  3. Confirme a encomenda.

    curl $EXTERNAL_IP/order
    

    Resultados esperados

    { "orderId": "42" }
    

Implante o aplicativo Python com o sidecar Dapr

Configurar o aplicativo Python

Em 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 diretório deploy e abra python.yaml.

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

    • Esse valor deve ser a mesma conta de serviço usada para criar a credencial de identidade federada.

Aplicar a configuração

  1. Implante o aplicativo Python em seu cluster Kubernetes usando o kubectl apply comando.

    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 está concluída com o seguinte comando:

    kubectl rollout status deploy/pythonapp
    

Observe as mensagens e confirme a persistência

Agora que os aplicativos Node.js e Python estão implantados, você pode ver as mensagens chegarem.

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

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

    Resultados esperados

    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 endpoint de pedidos da aplicação Node.js para obter o pedido mais recente.

    curl $EXTERNAL_IP/order
    

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

Limpar 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, cluster, namespace e todos os recursos relacionados usando o comando az group delete .

az group delete --name MyResourceGroup

Próximos passos