Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze quickstart gebruikt u de Dapr-extensie in een Kubernetes-cluster met AKS of Arc. U implementeert een hello world voorbeeld, dat bestaat uit een Python-toepassing die berichten genereert en een Node.js toepassing die de berichten verbruikt en persistent maakt.
Prerequisites
- Een Azure-abonnement. Als u nog geen account hebt, kunt u een gratis account aanmaken.
- Azure CLI is geïnstalleerd
- Een AKS-cluster met:
- Workloadidentiteit ingeschakeld
- Beheerde identiteit gemaakt in hetzelfde abonnement
- Een Kubernetes-serviceaccount
- Federatief identiteitsbewijs
- Dapr-extensie geïnstalleerd op het AKS-cluster
- kubectl lokaal geïnstalleerd
De opslagplaats klonen
Kloon de QuickStart-opslagplaats voor Dapr met behulp van de
git cloneopdracht.git clone https://github.com/Azure-Samples/dapr-aks-extension-quickstart.gitGa naar de
dapr-aks-extension-quickstartdirectory.cd dapr-aks-extension-quickstart
Een Redis-archief maken en configureren
Open de Azure Portal om het proces voor het maken van Azure Managed Redis te starten.
Vul de aanbevolen gegevens in aan de hand van de quickstart Een Azure Managed Redis-exemplaar maken.
Selecteer Maken om de implementatie van het Redis-exemplaar te starten.
Resourcegegevens verifiëren
Zodra de Redis-resource is geïmplementeerd, gaat u naar de overzichtspagina.
Noteer:
- De hostnaam, te vinden in de sectie Essentials op de overzichtspagina van de resource. De hostnaamindeling ziet er ongeveer als volgt uit:
<your-cache-name>.<region>.redis.azure.net. - De SSL-poort, te vinden in Instellingen>Geavanceerde instellingen. De standaardwaarde is
10000.
- De hostnaam, te vinden in de sectie Essentials op de overzichtspagina van de resource. De hostnaamindeling ziet er ongeveer als volgt uit:
Schakel in de terminal verificatie van de toegangssleutel in op de standaarddatabase.
az redisenterprise database update \ --cluster-name <REDIS_NAME> \ --resource-group <RESOURCE_GROUP> \ --access-keys-auth EnabledHaal de primaire sleutel voor de standaarddatabase op en sla deze op in een omgevingsvariabele.
export REDIS_PRIMARY_KEY=$(az redisenterprise database list-keys \ --cluster-name <REDIS_NAME> \ --resource-group <RESOURCE_GROUP> \ --query primaryKey \ -o tsv)
Openbare netwerktoegang inschakelen
Voor dit scenario maakt uw Azure Managed Redis-exemplaar gebruik van openbare netwerktoegang. Zorg ervoor dat u middelen opschoont nadat u klaar bent met deze snelstartgids.
Selecteer in het resourcemenu onder InstellingenNetwerken.
Stel openbare netwerktoegang in opIngeschakeld.
De Dapr-onderdelen configureren
In het bestand redis.yaml configureert u het onderdeel voor het gebruik van verificatie met toegangssleutels met TLS.
- name: redisPassword
secretKeyRef:
name: redis-secret
key: redisPassword
- name: useEntraID
value: "false"
- name: enableTLS
value: true
Navigeer in de code-editor van uw voorkeur naar de implementatiemap in de voorbeeldopslagplaats en open redis.yaml.
Voor
redisHost, vervangt u de waarde van de plaatsaanduiding<REDIS_HOST>:10000door de hostnaam van Azure Managed Redis die u eerder hebt opgeslagen in de Azure-portal.- name: redisHost value: <your-cache-name>.<region>.redis.azure.net:10000Maak de Kubernetes-secret die door
redisPasswordwordt gebruikt.kubectl create secret generic redis-secret \ --from-literal=redisPassword="$REDIS_PRIMARY_KEY"
De configuratie toepassen
Pas het bestand redis.yaml toe met behulp van de kubectl apply opdracht.
kubectl apply -f ./deploy/redis.yaml
Verwachte uitvoer
component.dapr.io/statestore created
De Node.js-app implementeren met de Dapr-sidecar
De Node.js-app configureren
Ga naar de
deploymap en open workload-identity.yaml.Vervang
<MANAGED_IDENTITY_CLIENT_ID>door de client-id van de door de gebruiker toegewezen beheerde identiteit die u hebt gemaakt.Pas het serviceaccountmanifest toe voordat u app-manifesten implementeert.
kubectl apply -f ./deploy/workload-identity.yaml
In node.yaml gebruikt de podspecificatie het identiteitslabel van de workload en het gedeelde workload-sa serviceaccount:
labels:
app: node
azure.workload.identity/use: "true"
De configuratie toepassen
Pas de Node.js-app-implementatie toe op uw cluster met behulp van de
kubectl applyopdracht.kubectl apply -f ./deploy/node.yamlKubernetes-implementaties zijn asynchroon, dus voordat u verdergaat met de volgende stappen, controleert u of de implementatie is voltooid met de volgende opdracht:
kubectl rollout status deploy/nodeappOpen uw service met behulp van de
kubectl get svcopdracht.kubectl get svc nodeappNoteer de
EXTERNAL-IPin de uitvoer en stel die in als omgevingsvariabele.export EXTERNAL_IP=<EXTERNAL-IP>
De Node.js-service controleren
Gebruik
curlom de dienst met uwEXTERNAL-IPaan te roepen.curl $EXTERNAL_IP/portsVoorbeelduitvoer
{"DAPR_HTTP_ENDPOINT":"http://localhost:3500","DAPR_GRPC_ENDPOINT":"http://localhost:50001"}Dien een bestelling in bij de applicatie.
curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworderBevestig de bestelling.
curl $EXTERNAL_IP/orderVerwachte uitvoer
{ "orderId": "42" }
De Python-app implementeren met de Dapr-sidecar
De Python-app configureren
In python.yaml gebruikt de podspecificatie het identiteitslabel van de workload en het gedeelde workload-sa serviceaccount:
labels:
app: python
azure.workload.identity/use: "true"
De configuratie toepassen
Implementeer de Python-app in uw Kubernetes-cluster met behulp van de
kubectl applyopdracht.kubectl apply -f ./deploy/python.yamlKubernetes-implementaties zijn asynchroon, dus voordat u verdergaat met de volgende stappen, controleert u of de implementatie is voltooid met de volgende opdracht:
kubectl rollout status deploy/pythonapp
Observeer berichten en bevestig persistentie.
Nu zowel de Node.js als python-toepassingen zijn geïmplementeerd, kunt u berichten bekijken.
Haal de logboeken van de Node.js-app op met behulp van de
kubectl logsopdracht.kubectl logs --selector=app=node -c node --tail=-1Verwachte uitvoer
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 stateGebruik
curlom het ordereindpunt van de Node.js-app aan te roepen en de nieuwste bestelling op te halen.curl $EXTERNAL_IP/orderU ziet nu de meest recente JSON-uitvoer in het antwoord.
De hulpbronnen opschonen
Als u niet langer van plan bent om de resources uit deze quickstart te gebruiken, kunt u de resourcegroep, het cluster, de naamruimte en alle gerelateerde resources verwijderen met behulp van de opdracht az group delete .
az group delete --name <your-resource-group>