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
- Uma assinatura do Azure. Caso não tenha uma assinatura do Azure, é possível criar uma conta gratuita.
- CLI do Azure ou Azure PowerShell instalados.
- Um cluster do AKS com:
- Identidade da carga de trabalho habilitada
- Identidade gerenciada criada na mesma assinatura
- Uma conta de serviço do Kubernetes
- Credencial de identidade federada
- Extensão de cluster Dapr instalada no cluster do AKS
- kubectl instalado localmente.
Clonar o repositório
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
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.
- Preencha as informações recomendadas de acordo com as instruções de início rápido "Criar um cache Redis de software livre".
- Selecione criar para iniciar a implantação da instância do Redis.
Verificar as informações do recurso
- Depois que o recurso Redis for implantado, navegue até sua página de visão geral.
- 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
.
- 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:
- Navegue até a folha Autenticação e verifique se a Autenticação do Microsoft Entra está habilitada em seu recurso.
Adicionar identidade gerenciada
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.
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.
- Navegue até a folha Ponto de Extremidade Privado.
- 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
No editor de código preferido, navegue até o diretório
deploy
no exemplo e abraredis.yaml
.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
Aplique o arquivo
redis.yaml
usando o comandokubectl apply
.kubectl apply -f ./deploy/redis.yaml
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"
Navegue até o diretório
deploy
e abranode.yaml
.Substitua o valor do espaço reservado
<SERVICE_ACCOUNT_NAME>
peloserviceAccountName
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
Aplique a implantação do aplicativo Node.js ao seu cluster com o comando
kubectl apply
.kubectl apply -f ./deploy/node.yaml
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
Acesse seu serviço usando o comando
kubectl get svc
.kubectl get svc nodeapp
Anote o
EXTERNAL-IP
na saída.
Verificar o serviço de Node.js
Usando
curl
, chame o serviço com seuEXTERNAL-IP
.curl $EXTERNAL_IP/ports
Saída de exemplo
{"DAPR_HTTP_PORT":"3500","DAPR_GRPC_PORT":"50001"}
Envie uma ordem para o aplicativo.
curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworder
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"
Navegue até o diretório
deploy
e abrapython.yaml
.Substitua o valor do espaço reservado
<SERVICE_ACCOUNT_NAME>
peloserviceAccountName
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
Implemente o aplicativo Python em seu cluster do Kubernetes com o comando
kubectl apply
.kubectl apply -f ./deploy/python.yaml
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.
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
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
Azure Kubernetes Service