Snabbstart: Distribuera ett program med Dapr-tillägget för Azure Kubernetes Service (AKS) eller Arc-aktiverade Kubernetes

I den här snabbstarten använder du Dapr-tillä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.

Prerequisites

Klona lagringsplatsen

  1. Klona Dapr-snabbstartslagringsplatsen med kommandot git clone .

    git clone https://github.com/Azure-Samples/dapr-aks-extension-quickstart.git
    
  2. Byt till dapr-aks-extension-quickstart-katalogen.

    cd dapr-aks-extension-quickstart
    

Skapa och konfigurera ett Redis-arkiv

Öppna Azure-portalen för att starta skapandeflödet Azure Managed Redis.

  1. Fyll i den rekommenderade informationen enligt snabbstarten Skapa en Azure Hanterad Redis-instans.

  2. Välj Skapa för att starta distributionen av Redis-instansen.

Verifiera resursinformation

  1. När Redis-resursen har distribuerats går du till översiktssidan.

  2. Observera:

    • Värdnamnet finns i avsnittet Essentials på resursöversiktssidan. Värdnamnsformatet ser ut ungefär så här: <your-cache-name>.<region>.redis.azure.net.
    • SSL-porten finns i Inställningar>Avancerade inställningar. Standardvärdet är 10000.
  3. Aktivera åtkomstnyckelautentisering på standarddatabasen i terminalen.

    az redisenterprise database update \
        --cluster-name <REDIS_NAME> \
        --resource-group <RESOURCE_GROUP> \
        --access-keys-auth Enabled
    
  4. Hämta primärnyckeln för standarddatabasen och spara den i en miljövariabel.

    export REDIS_PRIMARY_KEY=$(az redisenterprise database list-keys \
        --cluster-name <REDIS_NAME> \
        --resource-group <RESOURCE_GROUP> \
        --query primaryKey \
        -o tsv)
    

Aktivera åtkomst till offentligt nätverk

I det här scenariot använder din Azure Managed Redis-instans offentlig nätverksåtkomst. Se till att rensa resurser när du har slutfört den här snabbstarten.

  1. På resursmenyn går du till Inställningaroch väljer Nätverk.

  2. Ange Åtkomst till offentligt nätverktill Aktiverad.

Konfigurera Dapr-komponenterna

I filen redis.yaml konfigurerar du komponenten så att den använder åtkomstnyckelautentisering med TLS.

- name: redisPassword
    secretKeyRef:
        name: redis-secret
        key: redisPassword
- name: useEntraID
    value: "false"
- name: enableTLS
  value: true
  1. I önskad kodredigerare navigerar du till distributionskatalogen i exempellagringsplatsen och öppnar redis.yaml.

  2. För redisHostersätter du platshållarvärdet <REDIS_HOST>:10000 med det Azure hanterade Redis-värdnamnet som du sparade tidigare från Azure-portalen.

    - name: redisHost
      value: <your-cache-name>.<region>.redis.azure.net:10000
    
  3. Skapa Kubernetes-hemligheten som används av redisPassword.

    kubectl create secret generic redis-secret \
        --from-literal=redisPassword="$REDIS_PRIMARY_KEY"
    

Tillämpa konfigurationen

Använd filen redis.yaml med kommandot kubectl apply .

kubectl apply -f ./deploy/redis.yaml

Förväntade utdata

component.dapr.io/statestore created

Distribuera Node.js-appen med Dapr-sidovagnen

Konfigurera Node.js-appen

  1. Gå till deploy katalogen och öppna workload-identity.yaml.

  2. Ersätt <MANAGED_IDENTITY_CLIENT_ID> med klient-ID:t för den användartilldelade hanterade identiteten som du skapade.

  3. Använd tjänstkontomanifestet innan du distribuerar appmanifest.

    kubectl apply -f ./deploy/workload-identity.yaml
    

I node.yaml används podspecifikationen med etiketten för workload identity och det delade workload-sa servicekontot:

labels:
  app: node
  azure.workload.identity/use: "true"

Tillämpa konfigurationen

  1. Använd Node.js app-distribution till klustret med hjälp av kommandot kubectl apply.

    kubectl apply -f ./deploy/node.yaml
    
  2. 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
    
  3. Få åtkomst till din tjänst med hjälp av kubectl get svc kommandot .

    kubectl get svc nodeapp
    
  4. Anteckna EXTERNAL-IP i utdata och ange det som en miljövariabel.

    export EXTERNAL_IP=<EXTERNAL-IP>
    

Verifiera Node.js-tjänsten

  1. Använd curl för att anropa tjänsten med EXTERNAL-IP.

    curl $EXTERNAL_IP/ports
    

    Exempel på utdata

    {"DAPR_HTTP_ENDPOINT":"http://localhost:3500","DAPR_GRPC_ENDPOINT":"http://localhost:50001"}
    
  2. Skicka en beställning till applikationen.

    curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworder
    
  3. 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 använder podspecifikationen etiketten för arbetsbelastningsidentitet och det delade tjänstkontot workload-sa:

labels:
    app: python
    azure.workload.identity/use: "true"

Tillämpa konfigurationen

  1. Distribuera Python-appen till ditt Kubernetes-kluster med hjälp av kubectl apply kommandot .

    kubectl apply -f ./deploy/python.yaml
    
  2. 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.

  1. 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
    
  2. 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 resursgruppen, klustret, namnområdet och alla relaterade resurser med kommandot az group delete .

az group delete --name <your-resource-group>

Nästa steg