Rychlý průvodce: Nasazení aplikace pomocí rozšíření Dapr pro Azure Kubernetes Service (AKS) nebo Kubernetes s podporou Arc

V tomto rychlém startu použijete rozšíření Dapr v clusteru Kubernetes s podporou AKS nebo Arc. Nasadíte hello world příklad, který se skládá z aplikace Pythonu, která generuje zprávy a Node.js aplikaci, která zprávy spotřebovává a zachovává.

Prerequisites

Klonování úložiště

  1. Naklonujte úložiště rychlého startugit clone Dapr pomocí příkazu.

    git clone https://github.com/Azure-Samples/dapr-aks-extension-quickstart.git
    
  2. Přejděte do dapr-aks-extension-quickstart adresáře.

    cd dapr-aks-extension-quickstart
    

Vytvoření a konfigurace úložiště Redis

Otevřete portál Azure a spusťte tok vytváření Azure Managed Redis.

  1. Vyplňte doporučené údaje podle pokynů v rychlém startu Vytvoření instance Azure Managed Redis.

  2. Vyberte Vytvořit pro spuštění nasazení instance Redis.

Ověření informací o zdroji

  1. Po nasazení prostředku Redis přejděte na stránku s přehledem.

  2. Poznamenejte si:

    • Název hostitele, který najdete v části Základy na stránce přehledu prostředků. Formát názvu hostitele vypadá nějak takto: <your-cache-name>.<region>.redis.azure.net.
    • Port SSL, který se nachází v>pokročilých nastaveních. Výchozí hodnota je 10000.
  3. V terminálu povolte ověřování pomocí přístupového klíče ve výchozí databázi.

    az redisenterprise database update \
        --cluster-name <REDIS_NAME> \
        --resource-group <RESOURCE_GROUP> \
        --access-keys-auth Enabled
    
  4. Načtěte primární klíč pro výchozí databázi a uložte ho do proměnné prostředí.

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

Povolení přístupu k veřejné síti

V tomto scénáři vaše instance Azure Managed Redis používá přístup k veřejné síti. Po dokončení tohoto rychlého startu nezapomeňte prostředky vyčistit .

  1. V nabídce prostředků v části Nastavení vyberte Sítě.

  2. Nastavte přístup k veřejné síti na Povoleno.

Nakonfigurujte komponenty Dapr

V souboru redis.yaml nakonfigurujete komponentu tak, aby používala ověřování pomocí přístupového klíče s protokolem TLS.

- name: redisPassword
    secretKeyRef:
        name: redis-secret
        key: redisPassword
- name: useEntraID
    value: "false"
- name: enableTLS
  value: true
  1. V preferovaném editoru kódu přejděte do adresáře nasazení v ukázkovém úložišti a otevřete redis.yaml.

  2. Pro redisHost nahraďte zástupnou hodnotu <REDIS_HOST>:10000 hodnotou názvu hostitele Azure Managed Redis , kterou jste si dříve uložili z portálu Azure.

    - name: redisHost
      value: <your-cache-name>.<region>.redis.azure.net:10000
    
  3. Vytvořte tajný kód Kubernetes, který redisPasswordpoužívá .

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

Aplikovat konfiguraci

Použijte soubor redis.yaml pomocí kubectl apply příkazu.

kubectl apply -f ./deploy/redis.yaml

Očekávaný výstup

component.dapr.io/statestore created

Nasazení aplikace Node.js pomocí sajdkáru Dapr

Konfigurace aplikace Node.js

  1. Přejděte do deploy adresáře a otevřete workload-identity.yaml.

  2. Nahraďte <MANAGED_IDENTITY_CLIENT_ID> za ID klienta spravované identity přiřazené uživatelem, kterou jste vytvořili.

  3. Před nasazením manifestů aplikace použijte manifest účtu služby.

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

Ve node.yaml specifikace podu používá štítek identity úlohy a sdílený účet služby workload-sa:

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

Aplikovat konfiguraci

  1. Nasazení aplikace Node.js na váš cluster proveďte pomocí příkazu kubectl apply.

    kubectl apply -f ./deploy/node.yaml
    
  2. Nasazení Kubernetes jsou asynchronní, takže než přejdete k dalším krokům, ověřte, že nasazení je hotové pomocí následujícího příkazu:

    kubectl rollout status deploy/nodeapp
    
  3. Pomocí příkazu kubectl get svc přistupte ke službě.

    kubectl get svc nodeapp
    
  4. Poznamenejte si EXTERNAL-IP ve výstupu a nastavte ji jako proměnnou prostředí.

    export EXTERNAL_IP=<EXTERNAL-IP>
    

Ověření služby Node.js

  1. Pomocí curl zavolejte službu s vaším EXTERNAL-IP.

    curl $EXTERNAL_IP/ports
    

    Příklad výstupu

    {"DAPR_HTTP_ENDPOINT":"http://localhost:3500","DAPR_GRPC_ENDPOINT":"http://localhost:50001"}
    
  2. Odešlete do aplikace objednávku.

    curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworder
    
  3. Potvrďte objednávku.

    curl $EXTERNAL_IP/order
    

    Očekávaný výstup

    { "orderId": "42" }
    

Nasazení aplikace v Pythonu pomocí sajdkáru Dapr

Konfigurace aplikace v Pythonu

V python.yaml specifikace podu používá štítek identity úlohy a sdílený účet služby workload-sa:

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

Aplikovat konfiguraci

  1. Pomocí příkazu nasaďte aplikaci Python do clusteru kubectl apply Kubernetes.

    kubectl apply -f ./deploy/python.yaml
    
  2. Nasazení Kubernetes jsou asynchronní, takže než přejdete k dalším krokům, ověřte, že nasazení je hotové pomocí následujícího příkazu:

    kubectl rollout status deploy/pythonapp
    

Sledování zpráv a potvrzení trvalosti

Teď, když jsou nasazené Node.js i aplikace Pythonu, můžete sledovat zprávy, které přicházejí.

  1. Získejte protokoly aplikace Node.js pomocí příkazu kubectl logs.

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

    Očekávaný výstup

    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. Pomocí curl volání koncového bodu objednávky aplikace Node.js získejte nejnovější objednávku.

    curl $EXTERNAL_IP/order
    

    V odpovědi by se měl zobrazit nejnovější výstup JSON.

Vyčistěte zdroje

Pokud už nebudete chtít používat prostředky z tohoto rychlého startu, můžete pomocí příkazu az group delete odebrat skupinu prostředků, cluster, obor názvů a všechny související prostředky.

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

Další krok