Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Neste início rápido, é utilizada a extensão Dapr num cluster Kubernetes com 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, pode criar uma conta gratuita.
- CLI do Azure instalada
- Um cluster AKS com:
- Identidade de carga de trabalho ativada
- Identidade gerenciada criada na mesma assinatura
- Uma conta de serviço do Kubernetes
- Credencial de identidade federada
- Extensão Dapr instalada no cluster AKS
- Kubectl instalou-se localmente
Clonar o repositório
Clona o repositório Dapr de início rápido usando o
git clonecomando.git clone https://github.com/Azure-Samples/dapr-aks-extension-quickstart.gitMude para o
dapr-aks-extension-quickstartdiretório.cd dapr-aks-extension-quickstart
Criar e configurar uma loja Redis
Abra o portal do Azure para iniciar o fluxo de criação do Azure Managed Redis.
Preencha a informação recomendada de acordo com o início rápido de criação de uma instância Azure Managed Redis.
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.
Toma nota de:
- O nome do anfitrião, encontra-se na secção Essenciais da página de resumo de recursos. O formato hostname é semelhante a:
<your-cache-name>.<region>.redis.azure.net. - A porta SSL, encontrada nas Definições>Definições avançadas. O valor predefinido é
10000.
- O nome do anfitrião, encontra-se na secção Essenciais da página de resumo de recursos. O formato hostname é semelhante a:
No seu terminal, ative a autenticação por chave de acesso na base de dados predefinida.
az redisenterprise database update \ --cluster-name <REDIS_NAME> \ --resource-group <RESOURCE_GROUP> \ --access-keys-auth EnabledRecupere a chave primária da base de dados padrão e guarde-a numa 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
Neste cenário, a sua instância Azure Managed Redis utiliza acesso público à rede. Certifique-se de limpar os recursos depois de terminar este quickstart.
No menu de recursos, em Configurações, selecione Rede.
Defina o acesso à rede pública como Ativado.
Configurar os componentes do Dapr
No ficheiro redis.yaml , configuras o componente para usar autenticação por chave de acesso com TLS.
- name: redisPassword
secretKeyRef:
name: redis-secret
key: redisPassword
- name: useEntraID
value: "false"
- name: enableTLS
value: true
No seu editor de código preferido, navegue até ao diretório de deploy no repositório de exemplo e abra o redis.yaml.
Para
redisHost, substitui o valor provisório<REDIS_HOST>:10000pelo nome de host Azure Managed Redis que guardaste anteriormente do portal Azure.- name: redisHost value: <your-cache-name>.<region>.redis.azure.net:10000Crie o segredo do Kubernetes usado por
redisPassword.kubectl create secret generic redis-secret \ --from-literal=redisPassword="$REDIS_PRIMARY_KEY"
Aplicar a configuração
Aplica o ficheiro redis.yaml usando o kubectl apply comando.
kubectl apply -f ./deploy/redis.yaml
Resultados esperados
component.dapr.io/statestore created
Implemente a aplicação Node.js com o sidecar Dapr
Configurar o aplicativo Node.js
Vai ao
deploydiretório e abre workload-identity.yaml.Substitua
<MANAGED_IDENTITY_CLIENT_ID>pelo ID do cliente da identidade gerida atribuída pelo utilizador que criou.Aplica o manifesto da conta de serviço antes de implementares os manifestos da app.
kubectl apply -f ./deploy/workload-identity.yaml
No node.yaml, a especificação do pod usa o rótulo de identidade da carga de trabalho e a conta de serviço partilhada workload-sa:
labels:
app: node
azure.workload.identity/use: "true"
Aplicar a configuração
Aplique a implantação do aplicativo Node.js ao cluster usando o
kubectl applycomando.kubectl apply -f ./deploy/node.yamlAs 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/nodeappAcesse seu serviço usando o
kubectl get svccomando.kubectl get svc nodeappRegista o
EXTERNAL-IPna saída e define-o como variável de ambiente.export EXTERNAL_IP=<EXTERNAL-IP>
Verificar o serviço Node.js
Usando
curl, chame o serviço com o seuEXTERNAL-IP.curl $EXTERNAL_IP/portsExemplo de saída
{"DAPR_HTTP_ENDPOINT":"http://localhost:3500","DAPR_GRPC_ENDPOINT":"http://localhost:50001"}Envie um pedido para o aplicativo.
curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworderConfirme a encomenda.
curl $EXTERNAL_IP/orderResultados esperados
{ "orderId": "42" }
Implante o aplicativo Python com o sidecar Dapr
Configurar o aplicativo Python
Em python.yaml, a especificação do pod utiliza o rótulo de identidade da carga de trabalho e a conta de serviço partilhada workload-sa:
labels:
app: python
azure.workload.identity/use: "true"
Aplicar a configuração
Implante o aplicativo Python em seu cluster Kubernetes usando o
kubectl applycomando.kubectl apply -f ./deploy/python.yamlAs 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 logscomando.kubectl logs --selector=app=node -c node --tail=-1Resultados 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 stateUsando
curl, chame o endpoint de pedidos da aplicação Node.js para obter o pedido mais recente.curl $EXTERNAL_IP/orderVocê deve ver a saída JSON mais recente na resposta.
Limpar recursos
Se já não planeia usar os recursos deste quickstart, pode remover o grupo de recursos, cluster, namespace e todos os recursos relacionados usando o comando azgroup delete .
az group delete --name <your-resource-group>