Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste início rápido, você usará a extensão Dapr em um cluster Kubernetes com suporte a 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. Se você não tiver uma, poderá criar uma conta gratuita.
- CLI do Azure instalada
- 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 da identidade federada
- Extensão dapr instalada no cluster do AKS
- kubectl instalado localmente
Clonar o repositório
Clone o repositório de início rápido do Dapr usando o
git clonecomando.git clone https://github.com/Azure-Samples/dapr-aks-extension-quickstart.gitAltere para o diretório
dapr-aks-extension-quickstart.cd dapr-aks-extension-quickstart
Criar e configurar um repositório de Redis
Abra o portal Azure para iniciar o fluxo de criação do Azure Managed Redis.
Preencha as informações recomendadas de acordo com o guia de início rápido Criar uma instância do Azure Managed Redis.
Selecione criar para iniciar a implantação da instância do Redis.
Verifique as informações do recurso
Depois que o recurso Redis for implantado, navegue até sua 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 recurso. O formato do nome do host é semelhante a:
<your-cache-name>.<region>.redis.azure.net. - A porta SSL, encontrada em Configurações>Configurações avançadas. O valor padrão é
10000.
- O nome do host, encontrado na seção Essentials da página de visão geral do recurso. O formato do nome do host é semelhante a:
No terminal, habilite a autenticação de chave de acesso no banco de dados padrão.
az redisenterprise database update \ --cluster-name <REDIS_NAME> \ --resource-group <RESOURCE_GROUP> \ --access-keys-auth EnabledRecupere a chave primária do banco de dados padrão e salve-a em uma variável de ambiente.
export REDIS_PRIMARY_KEY=$(az redisenterprise database list-keys \ --cluster-name <REDIS_NAME> \ --resource-group <RESOURCE_GROUP> \ --query primaryKey \ -o tsv)
Habilitar acesso à rede pública
Para esse cenário, sua instância Azure Gerenciada do Redis usa o acesso à rede pública. Certifique-se de limpar os recursos depois de concluir este início rápido.
No menu de recursos, em Configurações, selecione Rede.
Defina o acesso à rede pública como Habilitado.
Configurar os componentes da Dapr
No arquivo redis.yaml , você configura o componente para usar a autenticação de chave de acesso com o TLS.
- name: redisPassword
secretKeyRef:
name: redis-secret
key: redisPassword
- name: useEntraID
value: "false"
- name: enableTLS
value: true
No editor de código preferido, navegue até o diretório de implantação no repositório de exemplo e abra redis.yaml.
Para
redisHost, substitua o valor do marcador<REDIS_HOST>:10000pelo nome do host do Redis gerenciado do Azure que você salvou anteriormente no portal do Azure.- name: redisHost value: <your-cache-name>.<region>.redis.azure.net:10000Criar o segredo do Kubernetes usado por
redisPassword.kubectl create secret generic redis-secret \ --from-literal=redisPassword="$REDIS_PRIMARY_KEY"
Aplicar a configuração
Aplique o arquivo redis.yaml usando o kubectl apply comando.
kubectl apply -f ./deploy/redis.yaml
Saída esperada
component.dapr.io/statestore created
Implantar o aplicativo Node.js com o sidecar do Dapr
Configure o aplicativo Node.js
Vá para o
deploydiretório e abra workload-identity.yaml.Substitua
<MANAGED_IDENTITY_CLIENT_ID>pela ID de cliente da identidade gerenciada atribuída pelo usuário que você criou.Aplique o manifesto da conta de serviço antes de implantar os manifestos do aplicativo.
kubectl apply -f ./deploy/workload-identity.yaml
Em node.yaml, a especificação do pod usa o rótulo de identidade da carga de trabalho e a conta de serviço compartilhada workload-sa:
labels:
app: node
azure.workload.identity/use: "true"
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.yamlAs 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/nodeappAcesse seu serviço usando o comando
kubectl get svc.kubectl get svc nodeappAnote o valor
EXTERNAL-IPna saída e defina-o como variável de ambiente.export EXTERNAL_IP=<EXTERNAL-IP>
Verificar o serviço de Node.js
Usando
curl, chame o serviço com seuEXTERNAL-IP.curl $EXTERNAL_IP/portsSaída de exemplo:
{"DAPR_HTTP_ENDPOINT":"http://localhost:3500","DAPR_GRPC_ENDPOINT":"http://localhost:50001"}Envie um pedido através do aplicativo.
curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworderConfirme o pedido.
curl $EXTERNAL_IP/orderSaída esperada
{ "orderId": "42" }
Implantar o aplicativo Python com o sidecar do Dapr
Configurar o aplicativo do Python
Em python.yaml, a especificação do pod usa o rótulo de identidade da carga de trabalho e a conta de serviço compartilhada workload-sa:
labels:
app: python
azure.workload.identity/use: "true"
Aplicar a configuração
Implemente o aplicativo Python em seu cluster do Kubernetes com o comando
kubectl apply.kubectl apply -f ./deploy/python.yamlAs 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.
Obtenha os logs do aplicativo Node.js usando o comando
kubectl logs.kubectl logs --selector=app=node -c node --tail=-1Saí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 stateUsando
curl, chame o ponto de extremidade de pedidos do aplicativo Node.js para obter o pedido mais recente.curl $EXTERNAL_IP/orderVocê deverá ver a última saída JSON na resposta.
Limpar os recursos
Se você não planeja mais usar os recursos deste início rápido, poderá remover o grupo de recursos, o cluster, o namespace e todos os recursos relacionados usando o comando az group delete .
az group delete --name <your-resource-group>