Schnellstart: Bereitstellen einer Anwendung mithilfe der Dapr-Clustererweiterung für Azure Kubernetes Service (AKS) oder Arc-fähige Kubernetes-Instanzen
In dieser Schnellstartanleitung verwenden Sie die Dapr-Clustererweiterung in einem AKS- oder Kubernetes-Cluster mit Arc-Unterstützung. Sie stellen ein hello world
-Beispiel bereit, das aus einer Python-Anwendung, die Nachrichten generiert, und einer Node.js-Anwendung besteht, die diese Nachrichten nutzt und dauerhaft speichert.
Voraussetzungen
- Ein Azure-Abonnement. Falls Sie über kein Azure-Abonnement verfügen, können Sie ein kostenloses Konto erstellen.
- Die Azure CLI oder Azure PowerShell muss installiert sein.
- Ein AKS-Cluster mit:
- Workloadidentität aktiviert
- Verwaltete Identität, die im selben Abonnement erstellt wurde
- Ein Kubernetes-Dienstkonto
- Anmeldeinformationen für Verbundidentität
- Dapr-Clustererweiterung auf dem AKS-Cluster installiert
- kubectl lokal installiert.
Klonen des Repositorys
Klonen Sie das Dapr-Schnellstartrepository mit dem Befehl
git clone
.git clone https://github.com/Azure-Samples/dapr-aks-extension-quickstart.git
Wechseln Sie in das Verzeichnis
dapr-aks-extension-quickstart
.
Erstellen und Konfigurieren eines Redis-Speichers
Öffnen Sie das Azure-Portal, um den Erstellungsflow für Azure Cache for Redis zu starten.
- Füllen Sie die empfohlenen Informationen gemäß den Schnellstartanweisungen „Erstellen eines Open-Source-Redis-Caches“ aus.
- Wählen Sie Erstellen aus, um die Bereitstellung der Redis-Instanz zu starten.
Überprüfen von Ressourceninformationen
- Navigieren Sie nach der Bereitstellung der Redis-Ressource zur Übersichtsseite.
- Notieren Sie sich Folgendes:
- Der Hostname, der im Abschnitt Essentials der Cacheübersichtsseite zu finden ist. Das Hostnamenformat ähnelt:
xxxxxx.redis.cache.windows.net
. - Der SSL-Port, der im Blatt Erweiterte Einstellungen des Caches gefunden wurde. Der Standardwert ist
6380
.
- Der Hostname, der im Abschnitt Essentials der Cacheübersichtsseite zu finden ist. Das Hostnamenformat ähnelt:
- Navigieren Sie zum Blatt Authentifizierung und überprüfen Sie, ob die Microsoft Entra-Authentifizierung für Ihre Ressource aktiviert ist.
Hinzufügen einer verwalteten Identität
Geben Sie im Blatt Authentifizierung den Namen der verwalteten Identität ein, die Sie als Voraussetzung im Feld unter Aktivieren der Microsoft Entra-Authentifizierung erstellt haben.
Überprüfen Sie, ob Ihre verwaltete Identität als Redis-Benutzer mit zugewiesenen Zugriffsrichtlinienberechtigungen für Datenbesitzer hinzugefügt wird.
Aktivieren des Zugriffs aus öffentlichen Netzwerken
In diesem Szenario verwendet Ihr Redis-Cache den Zugriff auf öffentliche Netzwerke. Achten Sie darauf, Ressourcen zu bereinigen, wenn Sie mit dieser Schnellstartanleitung fertig sind.
- Navigieren Sie zum Blatt Privater Endpunkt.
- Klicken Sie im oberen Menü auf Aktivieren des öffentlichen Netzwerkzugriffs.
Konfigurieren der Dapr-Komponenten
In redis.yaml
ist die Komponente für die Verwendung der Entra-ID-Authentifizierung mithilfe der Workload-Identität konfiguriert, die für AKS-Cluster aktiviert ist. Es sind keine Zugriffstasten erforderlich.
- name: useEntraID
value: "true"
- name: enableTLS
value: true
Navigieren Sie in Ihrem bevorzugten Code-Editor im Beispiel zum
deploy
-Verzeichnis und öffnen Sieredis.yaml
.Ersetzen Sie für
redisHost
den Platzhalterwert<REDIS_HOST>:<REDIS_PORT>
durch den Redis-Cache-Hostnamen und den SSL-Port, den Sie zuvor im Azure-Portal gespeichert haben.- name: redisHost value: <your-cache-name>.redis.cache.windows.net:6380
Anwenden der Konfiguration
Wenden Sie die Datei
redis.yaml
mithilfe des Befehlskubectl apply
an.kubectl apply -f ./deploy/redis.yaml
Vergewissern Sie sich mithilfe des Befehls
kubectl get components.redis
, dass Ihr Zustandsspeicher erfolgreich konfiguriert wurde.kubectl get components.redis -o yaml
Erwartete Ausgabe
component.dapr.io/statestore created
Bereitstellen der Node.js-App mit dem Dapr-Sidecar
Konfigurieren der Node.js-App
In node.yaml
hat die Pod-Spezifikation die Bezeichnung hinzugefügt, um die Workloadidentität zu verwenden:
labels:
app: node
azure.workload.identity/use: "true"
Navigieren Sie zum Verzeichnis
deploy
und öffnen Sienode.yaml
.Ersetzen Sie den Platzhalterwert
<SERVICE_ACCOUNT_NAME>
fürserviceAccountName
durch den Dienstkontonamen, den Sie erstellt haben.- Dieser Wert sollte dasselbe Dienstkonto sein, das Sie zum Erstellen der Verbundidentitätsanmeldeinformationen verwendet haben.
Anwenden der Konfiguration
Wenden Sie die Bereitstellung der Node.js-App mit dem Befehl
kubectl apply
auf Ihren Cluster an.kubectl apply -f ./deploy/node.yaml
Kubernetes-Bereitstellungen sind asynchron. Bevor Sie mit den nächsten Schritten fortfahren, stellen Sie sicher, dass die Bereitstellung mit dem folgenden Befehl abgeschlossen ist:
kubectl rollout status deploy/nodeapp
Greifen Sie mit dem Befehl
kubectl get svc
auf Ihren Dienst zu.kubectl get svc nodeapp
Notieren Sie sich die
EXTERNAL-IP
aus der Ausgabe.
Überprüfen des Node.js-Diensts
Rufen Sie mit
curl
den Dienst mit IhremEXTERNAL-IP
auf.curl $EXTERNAL_IP/ports
Beispielausgabe
{"DAPR_HTTP_PORT":"3500","DAPR_GRPC_PORT":"50001"}
Übermitteln Sie einen Auftrag an die Anwendung.
curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworder
Bestätigen Sie die Bestellung.
curl $EXTERNAL_IP/order
Erwartete Ausgabe
{ "orderId": "42" }
Bereitstellen der Python-App mit dem Dapr-Sidecar
Konfigurieren Sie die Python-App
In python.yaml
hat die Pod-Spezifikation die Bezeichnung hinzugefügt, um die Workloadidentität zu verwenden:
labels:
app: node
azure.workload.identity/use: "true"
Navigieren Sie zum Verzeichnis
deploy
und öffnen Siepython.yaml
.Ersetzen Sie den Platzhalterwert
<SERVICE_ACCOUNT_NAME>
fürserviceAccountName
durch den Dienstkontonamen, den Sie erstellt haben.- Dieser Wert sollte dasselbe Dienstkonto sein, das Sie zum Erstellen der Verbundidentitätsanmeldeinformationen verwendet haben.
Anwenden der Konfiguration
Stellen Sie die Python-App mit dem Befehl
kubectl apply
in Ihrem Kubernetes-Cluster bereit.kubectl apply -f ./deploy/python.yaml
Kubernetes-Bereitstellungen sind asynchron. Bevor Sie mit den nächsten Schritten fortfahren, stellen Sie sicher, dass die Bereitstellung mit dem folgenden Befehl abgeschlossen ist:
kubectl rollout status deploy/pythonapp
Beobachten von Nachrichten und Bestätigen der Persistenz
Nachdem nun sowohl die Node.js- als auch die Python-Anwendung bereitgestellt wurden, können Sie sehen, wie Nachrichten eingehen.
Rufen Sie die Protokolle der Node.js-App mithilfe des Befehls
kubectl logs
ab.kubectl logs --selector=app=node -c node --tail=-1
Erwartete Ausgabe
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
Rufen Sie den Auftragsendpunkt der Node.js-App mithilfe von
curl
auf, um den neuesten Auftrag zu erhalten.curl $EXTERNAL_IP/order
In der Antwort sollte die neueste JSON-Codeausgabe angezeigt werden.
Bereinigen von Ressourcen
Wenn Sie nicht mehr beabsichtigen, die Ressourcen aus dieser Schnellstartanleitung zu verwenden, können Sie alle zugeordneten Ressourcen löschen, indem Sie die Ressourcengruppe entfernen.
Entfernen Sie die Ressourcengruppe, den Cluster, den Namespace und alle zugehörigen Ressourcen mithilfe des Befehls az group delete.
az group delete --name MyResourceGroup
Nächste Schritte
Azure Kubernetes Service