Snabbstart: Distribuera ett program med hjälp av Dapr-klustertillägget för Azure Kubernetes Service (AKS) eller Arc-aktiverade Kubernetes
I den här snabbstarten använder du Dapr-klustertillägget i ett AKS- eller Arc-aktiverat Kubernetes-kluster. Du distribuerar ett hello world
exempel som består av ett Python-program som genererar meddelanden och ett Node.js program som använder och bevarar meddelandena.
Förutsättningar
- En Azure-prenumeration. Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto.
- Azure CLI eller Azure PowerShell installerat.
- Ett AKS-kluster med:
- Arbetsbelastningsidentitet aktiverad
- Hanterad identitet som skapats i samma prenumeration
- Ett Kubernetes-tjänstkonto
- Federerade identitetsautentiseringsuppgifter
- Dapr-klustertillägget installerat på AKS-klustret
- kubectl installerat lokalt.
Klona lagringsplatsen
Klona dapr-snabbstartslagringsplatsen med kommandot
git clone
.git clone https://github.com/Azure-Samples/dapr-aks-extension-quickstart.git
Ändra till
dapr-aks-extension-quickstart
katalogen.
Skapa och konfigurera ett Redis-arkiv
Öppna Azure Portal för att starta flödet för att skapa Azure Cache for Redis.
- Fyll i den rekommenderade informationen enligt snabbstartsinstruktionerna "Skapa en Redis-cache med öppen källkod".
- Välj Skapa för att starta distributionen av Redis-instansen.
Verifiera resursinformation
- När Redis-resursen har distribuerats går du till översiktssidan.
- Anteckna:
- Värdnamnet finns i avsnittet Essentials på cacheöversiktssidan. Värdnamnsformatet ser ut ungefär så här:
xxxxxx.redis.cache.windows.net
. - SSL-porten finns på cachens bladet Avancerade inställningar . Standardvärdet är
6380
.
- Värdnamnet finns i avsnittet Essentials på cacheöversiktssidan. Värdnamnsformatet ser ut ungefär så här:
- Gå till bladet Autentisering och kontrollera att Microsoft Entra-autentisering är aktiverat på din resurs.
Lägga till hanterad identitet
På bladet Autentisering skriver du namnet på den hanterade identitet som du skapade som en förutsättning i fältet under Kryssrutan Aktivera Microsoft Entra-autentisering.
Kontrollera att din hanterade identitet har lagts till som behörigheter för redis-användare som tilldelats åtkomstprincip för dataägare.
Aktivera åtkomst till offentligt nätverk
I det här scenariot använder Redis-cachen åtkomst till offentliga nätverk. Se till att rensa resurser när du är klar med den här snabbstarten.
- Gå till bladet Privat slutpunkt .
- Klicka på Aktivera åtkomst till offentligt nätverk på den översta menyn.
Konfigurera Dapr-komponenterna
I redis.yaml
konfigureras komponenten för att använda Entra ID-autentisering med arbetsbelastningsidentitet aktiverad för AKS-kluster. Inga åtkomstnycklar krävs.
- name: useEntraID
value: "true"
- name: enableTLS
value: true
I önskad kodredigerare navigerar du till
deploy
katalogen i exemplet och öppnarredis.yaml
.För
redisHost
ersätter du platshållarvärdet<REDIS_HOST>:<REDIS_PORT>
med redis-cachens värdnamn och SSL-port som du sparade tidigare från Azure Portal.- name: redisHost value: <your-cache-name>.redis.cache.windows.net:6380
Tillämpa konfigurationen
redis.yaml
Använd filen med kommandotkubectl apply
.kubectl apply -f ./deploy/redis.yaml
Kontrollera att tillståndsarkivet har konfigurerats med kommandot
kubectl get components.redis
.kubectl get components.redis -o yaml
Förväntade utdata
component.dapr.io/statestore created
Distribuera Node.js-appen med Dapr-sidovagnen
Konfigurera Node.js-appen
I node.yaml
har poddspecifikationen etiketten tillagd för att använda arbetsbelastningsidentitet:
labels:
app: node
azure.workload.identity/use: "true"
Gå till
deploy
katalogen och öppnanode.yaml
.Ersätt platshållarvärdet
<SERVICE_ACCOUNT_NAME>
förserviceAccountName
med namnet på tjänstkontot som du skapade.- Det här värdet ska vara samma tjänstkonto som du använde för att skapa den federerade identitetsautentiseringsuppgiften.
Tillämpa konfigurationen
Använd Node.js appdistribution på klustret med hjälp av
kubectl apply
kommandot .kubectl apply -f ./deploy/node.yaml
Kubernetes-distributioner är asynkrona, så innan du går vidare till nästa steg kontrollerar du att distributionen är klar med följande kommando:
kubectl rollout status deploy/nodeapp
Få åtkomst till din tjänst med hjälp av
kubectl get svc
kommandot .kubectl get svc nodeapp
Anteckna
EXTERNAL-IP
i utdata.
Verifiera Node.js-tjänsten
Anropa tjänsten med hjälp
EXTERNAL-IP
avcurl
.curl $EXTERNAL_IP/ports
Exempel på utdata
{"DAPR_HTTP_PORT":"3500","DAPR_GRPC_PORT":"50001"}
Skicka en beställning till programmet.
curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworder
Bekräfta beställningen.
curl $EXTERNAL_IP/order
Förväntade utdata
{ "orderId": "42" }
Distribuera Python-appen med Dapr-sidovagnen
Konfigurera Python-appen
I python.yaml
har poddspecifikationen etiketten tillagd för att använda arbetsbelastningsidentitet:
labels:
app: node
azure.workload.identity/use: "true"
Gå till
deploy
katalogen och öppnapython.yaml
.Ersätt platshållarvärdet
<SERVICE_ACCOUNT_NAME>
förserviceAccountName
med namnet på tjänstkontot som du skapade.- Det här värdet ska vara samma tjänstkonto som du använde för att skapa den federerade identitetsautentiseringsuppgiften.
Tillämpa konfigurationen
Distribuera Python-appen till ditt Kubernetes-kluster med hjälp av
kubectl apply
kommandot .kubectl apply -f ./deploy/python.yaml
Kubernetes-distributioner är asynkrona, så innan du går vidare till nästa steg kontrollerar du att distributionen är klar med följande kommando:
kubectl rollout status deploy/pythonapp
Observera meddelanden och bekräfta beständighet
Nu när både Node.js- och Python-programmen har distribuerats kan du se meddelanden komma igenom.
Hämta loggarna för Node.js-appen med hjälp av
kubectl logs
kommandot .kubectl logs --selector=app=node -c node --tail=-1
Förväntade utdata
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
Anropa Node.js-appens orderslutpunkt för att hämta den senaste ordern med hjälp av
curl
.curl $EXTERNAL_IP/order
Du bör se de senaste JSON-utdata i svaret.
Rensa resurser
Om du inte längre planerar att använda resurserna från den här snabbstarten kan du ta bort alla associerade resurser genom att ta bort resursgruppen.
Ta bort resursgruppen, klustret, namnområdet och alla relaterade resurser med kommandot az group delete .
az group delete --name MyResourceGroup
Nästa steg
Azure Kubernetes Service