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 seçã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é a folha Autenticação e verifique se a Autenticação do Microsoft Entra está habilitada no seu recurso.

Adicionar identidade gerenciada

  1. Na folha Autenticação, digite o nome da Identidade Gerenciada criada como pré-requisito no campo em 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 sua identidade gerenciada foi adicionada como uma Política de Acesso de Proprietário de Dados atribuída ao Usuário 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é a folha Ponto Final Privado.
  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 de sua preferência, navegue até o deploy diretório no exemplo e abra redis.yamlo .

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

Implante o aplicativo Node.js com o sidecar Dapr

Configurar 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 diretório e abra node.yamlo deploy .

  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 curlo , ligue para o serviço com o seu EXTERNAL-IParquivo .

    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

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

  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 curlo , 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.

Clean up resources (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