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

In deze quickstart gebruikt u de Dapr-clusterextensie 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 knooppunttoepassing die de berichten verbruikt en persistent maakt.

Vereisten

De opslagplaats klonen

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

    git clone https://github.com/dapr/quickstarts.git
    
  2. Ga naar de hello-kubernetes map met behulp van cd.

    cd quickstarts/tutorials/hello-kubernetes/
    

Een statusarchief maken en configureren

Dapr kan veel verschillende statusarchieven gebruiken, zoals Redis, Azure Cosmos DB, DynamoDB en Cassandra, om de status te behouden en op te halen. In dit voorbeeld gebruiken we Redis.

Een Redis-archief maken

  1. Open Azure Portal om de stroom voor het maken van Azure Cache voor Redis te starten.

  2. Vul de benodigde gegevens in.

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

  4. Noteer de hostnaam van uw Redis-exemplaar, die u kunt ophalen uit de sectie Overzicht in Azure. De hostnaam kan vergelijkbaar zijn met het volgende voorbeeld: xxxxxx.redis.cache.windows.net:6380.

  5. Navigeer onder Instellingen naar Toegangssleutels om uw toegangssleutels op te halen.

  6. Maak een Kubernetes-geheim om uw Redis-wachtwoord op te slaan met behulp van de kubectl create secret generic redis opdracht.

    kubectl create secret generic redis --from-literal=redis-password=<your-redis-password>
    

De Dapr-onderdelen configureren

Zodra uw archief is gemaakt, moet u de sleutels toevoegen aan het redis.yaml bestand in de implementatiemap van de Hallo wereld opslagplaats. U vindt here meer informatie.

  1. Vervang de redisHost waarde door uw eigen Redis-hoofdadres.

  2. Vervang het redisPassword door uw eigen geheim.

  3. Voeg de volgende twee regels hieronder redisPassword toe om verbinding via TLS in te schakelen

    - name: redisPassword
        secretKeyRef:
          name: redis
          key: redis-password
    - name: enableTLS
      value: true
    

De configuratie toepassen

  1. Pas het redis.yaml bestand toe met behulp van de kubectl apply opdracht.

    kubectl apply -f ./deploy/redis.yaml
    
  2. Controleer of uw statusarchief is geconfigureerd met behulp van de kubectl get components.redis opdracht.

    kubectl get components.redis -o yaml
    

    Als het goed is, ziet u uitvoer die vergelijkbaar is met de volgende voorbeelduitvoer:

    component.dapr.io/statestore created
    

De Node.js-app implementeren met de Dapr-sidecar

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

    kubectl apply -f ./deploy/node.yaml
    

    Notitie

    Kubernetes-implementaties zijn asynchroon. Dit betekent dat u moet wachten totdat de implementatie is voltooid voordat u verdergaat met de volgende stappen. U kunt dit doen met de volgende opdracht:

    kubectl rollout status deploy/nodeapp
    

    Hiermee wordt de Node.js-app geïmplementeerd in Kubernetes. Het Dapr-besturingsvlak injecteert automatisch de Dapr-sidecar naar de pod. Als u het node.yaml bestand bekijkt, ziet u hoe Dapr is ingeschakeld voor die implementatie:

    • dapr.io/enabled: true: geeft aan dat het dapr-besturingsvlak een sidecar aan deze implementatie moet injecteren.
    • dapr.io/app-id: nodeapp: wijst een unieke id of naam toe aan de Dapr-toepassing, zodat deze berichten kan worden verzonden naar en gecommuniceerd met andere Dapr-apps.
  2. Open uw service met behulp van de kubectl get svc opdracht.

    kubectl get svc nodeapp
    
  3. Noteer de EXTERNAL-IP in de uitvoer.

De service controleren

  1. Roep de service aan met uw curlEXTERNAL-IP.

    curl $EXTERNAL_IP/ports
    

    Als het goed is, ziet u uitvoer die vergelijkbaar is met de volgende voorbeelduitvoer:

    {"DAPR_HTTP_PORT":"3500","DAPR_GRPC_PORT":"50001"}
    
  2. Dien een bestelling in bij de toepassing met behulp van curl.

    curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworder
    
  3. Bevestig dat de bestelling is behouden door deze aan te vragen met behulp van curl.

    curl $EXTERNAL_IP/order
    

    Als het goed is, ziet u uitvoer die vergelijkbaar is met de volgende voorbeelduitvoer:

    { "orderId": "42" }
    

De Python-app implementeren met de Dapr-sidecar

  1. Navigeer in de quickstart naar de Map van de hello-kubernetes Python-app en open app.pydeze.

    Dit voorbeeld is een eenvoudige Python-app waarmee JSON-berichten localhost:3500worden geplaatst. Dit is de standaard luisterpoort voor Dapr. U kunt het eindpunt van neworder de Node.js toepassing aanroepen door deze te posten naar v1.0/invoke/nodeapp/method/neworder. Het bericht bevat enkele gegevens met een gegevens orderId die één keer per seconde worden verhoogd:

    n = 0
    while True:
        n += 1
        message = {"data": {"orderId": n}}
    
        try:
            response = requests.post(dapr_url, json=message)
        except Exception as e:
            print(e)
    
        time.sleep(1)
    
  2. Implementeer de Python-app in uw Kubernetes-cluster met behulp van de kubectl apply opdracht.

    kubectl apply -f ./deploy/python.yaml
    

    Notitie

    Net als bij de vorige opdracht moet u wachten totdat de implementatie is voltooid voordat u verdergaat met de volgende stappen. U kunt dit doen met de volgende opdracht:

    kubectl rollout status deploy/pythonapp
    

Berichten observeren en persistentie bevestigen

Nu zowel de Node.js als python-toepassingen zijn geïmplementeerd, ziet u berichten die worden weergegeven.

  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
    

    Als de implementaties zijn geslaagd, ziet u logboeken zoals de volgende voorbeeldlogboeken:

    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. Roep het ordereindpunt van de Node.js-app aan om de nieuwste bestelling op te halen met behulp van curl.

    curl $EXTERNAL_IP/order
    {"orderID":"42"}
    

    U ziet nu de meest recente JSON in het antwoord.

Resources opschonen

  • Verwijder de resourcegroep, het cluster, de naamruimte en alle gerelateerde resources met behulp van de opdracht az group delete .

    az group delete --name MyResourceGroup
    

Volgende stappen