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
- Uma subscrição do Azure. Se não tiver uma subscrição do Azure, pode criar uma conta gratuita.
- CLI do Azure ou Azure PowerShell instalado.
- Um cluster AKS com:
- Identidade da carga de trabalho ativada
- 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 AKS
- Kubectl instalado localmente.
Clonar o repositório
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
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.
- Preencha as informações recomendadas de acordo com as instruções de início rápido "Criar um cache Redis de código aberto".
- Selecione Criar para iniciar a implantação da instância Redis.
Verificar informações de recursos
- Depois que o recurso Redis for implantado, navegue até a página de visão geral.
- 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
.
- O nome do host, encontrado na seção Essentials da página de visão geral do cache. O formato hostname é semelhante a:
- Navegue até a folha Autenticação e verifique se a Autenticação do Microsoft Entra está habilitada no seu recurso.
Adicionar identidade gerenciada
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.
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.
- Navegue até a folha Ponto Final Privado.
- 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
No editor de códigos de sua preferência, navegue até o
deploy
diretório no exemplo e abraredis.yaml
o .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
Aplique o
redis.yaml
arquivo usando okubectl apply
comando.kubectl apply -f ./deploy/redis.yaml
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"
Navegue até o diretório e abra
node.yaml
odeploy
.Substitua o valor de espaço reservado
<SERVICE_ACCOUNT_NAME>
paraserviceAccountName
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
Aplique a implantação do aplicativo Node.js ao cluster usando o
kubectl apply
comando.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 está concluída com o seguinte comando:
kubectl rollout status deploy/nodeapp
Acesse seu serviço usando o
kubectl get svc
comando.kubectl get svc nodeapp
Anote o
EXTERNAL-IP
na saída.
Verificar o serviço Node.js
Usando
curl
o , ligue para o serviço com o seuEXTERNAL-IP
arquivo .curl $EXTERNAL_IP/ports
Exemplo de saída
{"DAPR_HTTP_PORT":"3500","DAPR_GRPC_PORT":"50001"}
Envie um pedido para o aplicativo.
curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworder
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"
Navegue até o diretório e abra
python.yaml
odeploy
.Substitua o valor de espaço reservado
<SERVICE_ACCOUNT_NAME>
paraserviceAccountName
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
Implante o aplicativo Python em seu cluster Kubernetes usando o
kubectl apply
comando.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 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.
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
Usando
curl
o , 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
Azure Kubernetes Service