Quickstart: Een toepassing implementeren met behulp van de Dapr-extensie voor Azure Kubernetes Service (AKS) of Kubernetes met Arc

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

De opslagplaats klonen

  1. Kloon de QuickStart-opslagplaats voor Dapr met behulp van de git clone opdracht.

    git clone https://github.com/Azure-Samples/dapr-aks-extension-quickstart.git
    
  2. Ga naar de dapr-aks-extension-quickstart directory.

    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.

  1. Vul de aanbevolen gegevens in aan de hand van de quickstart Een Azure Managed Redis-exemplaar maken.

  2. Selecteer Maken om de implementatie van het Redis-exemplaar te starten.

Resourcegegevens verifiëren

  1. Zodra de Redis-resource is geïmplementeerd, gaat u naar de overzichtspagina.

  2. 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.
  3. 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 Enabled
    
  4. Haal 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.

  1. Selecteer in het resourcemenu onder InstellingenNetwerken.

  2. 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
  1. Navigeer in de code-editor van uw voorkeur naar de implementatiemap in de voorbeeldopslagplaats en open redis.yaml.

  2. Voor redisHost, vervangt u de waarde van de plaatsaanduiding <REDIS_HOST>:10000 door 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:10000
    
  3. Maak de Kubernetes-secret die door redisPassword wordt 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

  1. Ga naar de deploy map en open workload-identity.yaml.

  2. Vervang <MANAGED_IDENTITY_CLIENT_ID> door de client-id van de door de gebruiker toegewezen beheerde identiteit die u hebt gemaakt.

  3. 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

  1. Pas de Node.js-app-implementatie toe op uw cluster met behulp van de kubectl apply opdracht.

    kubectl apply -f ./deploy/node.yaml
    
  2. Kubernetes-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/nodeapp
    
  3. Open uw service met behulp van de kubectl get svc opdracht.

    kubectl get svc nodeapp
    
  4. Noteer de EXTERNAL-IP in de uitvoer en stel die in als omgevingsvariabele.

    export EXTERNAL_IP=<EXTERNAL-IP>
    

De Node.js-service controleren

  1. Gebruik curl om de dienst met uw EXTERNAL-IP aan te roepen.

    curl $EXTERNAL_IP/ports
    

    Voorbeelduitvoer

    {"DAPR_HTTP_ENDPOINT":"http://localhost:3500","DAPR_GRPC_ENDPOINT":"http://localhost:50001"}
    
  2. Dien een bestelling in bij de applicatie.

    curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworder
    
  3. Bevestig de bestelling.

    curl $EXTERNAL_IP/order
    

    Verwachte 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

  1. Implementeer de Python-app in uw Kubernetes-cluster met behulp van de kubectl apply opdracht.

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

  1. Haal de logboeken van de Node.js-app op met behulp van de kubectl logs opdracht.

    kubectl logs --selector=app=node -c node --tail=-1
    

    Verwachte 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 state
    
  2. Gebruik curl om het ordereindpunt van de Node.js-app aan te roepen en de nieuwste bestelling op te halen.

    curl $EXTERNAL_IP/order
    

    U 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>

Volgende stap