Rychlý start: Nasazení aplikace pomocí rozšíření clusteru Dapr (Preview) pro Azure Kubernetes Service (AKS)

V tomto rychlém startu se seznámíte s používáním rozšíření clusteru Dapr v clusteru AKS. Budete nasazovat příklad Hello World skládající se z aplikace Pythonu, která generuje zprávy, a aplikace Node, která je využívá a uchová.

Důležité

Funkce AKS ve verzi Preview jsou k dispozici na základě samoobslužných možností. Verze Preview se poskytují "tak, jak jsou" a "jak jsou k dispozici" a jsou vyloučené ze smluv o úrovni služeb a omezené záruky. Verze Preview služby AKS částečně pokryje zákaznická podpora na základě maximálního úsilí. Proto nejsou tyto funkce určeny pro použití v produkčním prostředí. Další informace najdete v následujících článcích podpory:

Požadavky

Klonování úložiště

Pokud chcete získat soubory, které budete používat k nasazení ukázkové aplikace, naklonujte úložiště Rychlý start a změňte ho do hello-kubernetes adresáře :

git clone https://github.com/dapr/quickstarts.git
cd quickstarts/hello-kubernetes

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

Dapr může k zachování a načítání stavu použít řadu různých úložišť stavů (Redis, CosmosDB, DynamoDB, Cassandra atd.). V tomto příkladu použijeme Redis.

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

  1. Otevřete Azure Portal a spusťte tok vytváření Redis Cache Azure.
  2. Vyplňte potřebné informace.
  3. Kliknutím na Vytvořit zakažte nasazení instance Redis.
  4. Poznamenejte si název hostitele vaší instance Redis, který můžete načíst z přehledu v Azure. Měl by vypadat jako xxxxxx.redis.cache.windows.net:6380 .
  5. Po vytvoření instance budete muset získat přístupový klíč. Přejděte do části Přístupové klíče pod Nastavení a vytvořte tajný kód Kubernetes pro uložení hesla Redisu:
kubectl create secret generic redis --from-literal=redis-password=<your-redis-password>

Konfigurace komponent Dapr

Po vytvoření úložiště budete muset přidat klíče do souboru redis.yaml v adresáři deploy úložiště Hello World úložiště. Nahraďte redisHost hodnotu vlastní hlavní adresou Redis a redisPassword hodnotou vlastním tajným kódem. Další informace najdete tady:.

Pokud chcete povolit připojení přes protokol TLS, budete také muset redisPassword přidat následující dva řádky:

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

Použití konfigurace

Použijte redis.yaml soubor:

kubectl apply -f ./deploy/redis.yaml

A ověřte, že vaše úložiště stavů bylo ve výstupu úspěšně nakonfigurováno:

component.dapr.io/statestore created

Nasazení Node.js saplikádou Dapr

Použijte Node.js nasazení aplikace na cluster:

kubectl apply -f ./deploy/node.yaml

Poznámka

Nasazení Kubernetes jsou asynchronní. To znamená, že před přechodem k dalším krokům budete muset počkat na dokončení nasazení. Můžete to provést pomocí následujícího příkazu:

kubectl rollout status deploy/nodeapp

Tím se nasadí Node.js do Kubernetes. Řídicí rovina Dapr automaticky vloží sacar Dapr do podu. Když se na soubor podíváte, uvidíte, jak je pro toto nasazení node.yaml povolený Dapr:

  • dapr.io/enabled: true – říká řídicí rovině Dapr, že má do tohoto nasazení vložit sakaru.

  • dapr.io/app-id: nodeapp – aplikace Dapr přiřadí jedinečné ID nebo název, aby bylo možné odesílat zprávy do aplikace Dapr a komunikovat s ní.

Pokud chcete získat přístup ke službě, získejte a poznamenejte si EXTERNAL-IP prostřednictvím kubectl :

kubectl get svc nodeapp

Ověření služby

Pokud chcete službu volat, spusťte:

curl $EXTERNAL_IP/ports

Zobrazený výstup by měl vypadat přibližně takto:

{"DAPR_HTTP_PORT":"3500","DAPR_GRPC_PORT":"50001"}

Dále odešlete objednávku do aplikace:

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

Potvrďte trvalé uchování objednávky tím, že ji požádáte o:

curl $EXTERNAL_IP/order

Zobrazený výstup by měl vypadat přibližně takto:

{ "orderId": "42" }

Tip

Teď je vhodná doba, abyste se seznámili s řídicím panelem Dapr– pohodlným rozhraním pro kontrolu stavu, informací a protokolů aplikací spuštěných v Dapr. Následující příkaz ho z dostupných v systému http://localhost:8080/ :

kubectl port-forward svc/dapr-dashboard -n dapr-system 8080:8080

Nasazení aplikace v Pythonu pomocí saplikády Dapr

Rychle se podívejte na aplikaci v Pythonu. V rychlém startu přejděte do adresáře aplikace v hello-kubernetes Pythonu a otevřete app.py .

Jedná se o základní aplikaci v Pythonu, která odešle zprávy JSON do , což je výchozí port naslouchání localhost:3500 pro Dapr. Koncový bod aplikace Node.js vyvolat neworder odesláním na . v1.0/invoke/nodeapp/method/neworder Zpráva obsahuje nějaká data s objektem , orderId který se zvýší jednou za sekundu:

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)

Nasazení aplikace v Pythonu do clusteru Kubernetes:

kubectl apply -f ./deploy/python.yaml

Poznámka

Stejně jako výše uvedený příkaz počká na dokončení nasazení:

kubectl rollout status deploy/pythonapp

Sledování zpráv a potvrzení trvalosti

Teď, když jsou nasazené Node.js i Pythonu, prochádí zprávy.

Získejte protokoly Node.js aplikace:

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

Pokud nasazení byla úspěšná, měly by se zobrazit protokoly, jako jsou tyto:

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

Pokud Node.js nejnovější objednávku, zavolejte koncový bod objednávky aplikace. Získejte externí IP adresu, kterou jste si předtím uložili, a připojte příkaz /order a proveďte na ní požadavek GET (zadejte ji do prohlížeče, použijte nástroj Postman nebo curl ho použijte!):

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

V odpovědi by se měl zobrazit nejnovější json.

Vyčištění prostředků

K odebrání skupiny prostředků, clusteru AKS, oboru názvů a všech souvisejících prostředků použijte příkaz az group delete.

az group delete --name MyResourceGroup

Další kroky

Po úspěšném nasazení této ukázkové aplikace: