Rövid útmutató: Alkalmazás üzembe helyezése az Azure Kubernetes Service (AKS) vagy az Arc-kompatibilis Kubernetes Dapr-fürtbővítményével
Ebben a rövid útmutatóban a Dapr-fürtbővítményt használja egy AKS- vagy Arc-kompatibilis Kubernetes-fürtben. Üzembe helyez egy hello world
példát, amely egy olyan Python-alkalmazásból áll, amely üzeneteket hoz létre, és egy csomópontalkalmazásból, amely felhasználja és megőrzi az üzeneteket.
Előfeltételek
- Azure-előfizetés. Ha nem rendelkezik Azure-előfizetéssel, létrehozhat egy ingyenes fiókot.
- Az Azure CLI vagy az Azure PowerShell telepítve van.
- Egy AKS- vagy Arc-kompatibilis Kubernetes-fürt, amelyen engedélyezve van a Dapr-fürtbővítmény .
A tárház klónozása
Klónozza a Dapr rövid útmutatók adattárát a
git clone
paranccsal.git clone https://github.com/dapr/quickstarts.git
Váltson a könyvtárra a
hello-kubernetes
következő használatávalcd
: .cd quickstarts/tutorials/hello-kubernetes/
Állapottároló létrehozása és konfigurálása
A Dapr számos különböző állapottárolót használhat, például a Redist, az Azure Cosmos DB-t, a DynamoDB-t és a Cassandrát az állapot megőrzéséhez és lekéréséhez. Ebben a példában a Redist használjuk.
Redis-tároló létrehozása
Nyissa meg az Azure Portalt az Azure Cache for Redis létrehozási folyamatának elindításához.
Töltse ki a szükséges információkat.
Válassza a Létrehozás lehetőséget a Redis-példány üzembe helyezésének elindításához.
Jegyezze fel a Redis-példány állomásnevét, amelyet az Azure Áttekintés szakaszából tud lekérni. A gazdagépnév hasonló lehet a következő példához:
xxxxxx.redis.cache.windows.net:6380
.A Gépház alatt keresse meg az Access-kulcsokat a hozzáférési kulcsok lekéréséhez.
Hozzon létre egy Kubernetes-titkos kulcsot a Redis-jelszó tárolásához a
kubectl create secret generic redis
parancs használatával.kubectl create secret generic redis --from-literal=redis-password=<your-redis-password>
A Dapr-összetevők konfigurálása
Az áruház létrehozása után hozzá kell adnia a kulcsokat a redis.yaml
fájlhoz a "Helló világ!" alkalmazás adattár üzembehelyezési könyvtárában. További információt itt talál.
Cserélje le az
redisHost
értéket a saját Redis-főcímére.Cserélje le a
redisPassword
saját titkos kódjára.Adja hozzá az alábbi
redisPassword
két sort a TLS-en keresztüli kapcsolat engedélyezéséhez- name: redisPassword secretKeyRef: name: redis key: redis-password - name: enableTLS value: true
A konfiguráció alkalmazása
Alkalmazza a
redis.yaml
fájlt akubectl apply
paranccsal.kubectl apply -f ./deploy/redis.yaml
Ellenőrizze, hogy az állapottároló sikeresen konfigurálva lett-e a
kubectl get components.redis
paranccsal.kubectl get components.redis -o yaml
A következő példakimenethez hasonló kimenetnek kell megjelennie:
component.dapr.io/statestore created
A Node.js alkalmazás üzembe helyezése a Dapr oldalkocsival
Alkalmazza a Node.js alkalmazás üzembe helyezését a fürtre a
kubectl apply
parancs használatával.kubectl apply -f ./deploy/node.yaml
Feljegyzés
A Kubernetes-telepítések aszinkronok, ami azt jelenti, hogy meg kell várnia az üzembe helyezés befejezését, mielőtt továbblépne a következő lépésekre. Ezt a következő paranccsal teheti meg:
kubectl rollout status deploy/nodeapp
Ezzel üzembe helyezi a Node.js alkalmazást a Kubernetesben. A Dapr vezérlősík automatikusan befecskendezi a Dapr oldalkocsit a podba. Ha áttekinti a
node.yaml
fájlt, láthatja, hogyan engedélyezve van a Dapr az adott üzembe helyezéshez:dapr.io/enabled: true
: arra utasítja a Dapr vezérlősíkot, hogy injektáljon egy oldalkocsit az üzembe helyezéshez.dapr.io/app-id: nodeapp
: egyedi azonosítót vagy nevet rendel a Dapr-alkalmazáshoz, így más Dapr-alkalmazások is küldhetnek neki üzeneteket, és kommunikálhatnak vele.
A parancs használatával érheti el a
kubectl get svc
szolgáltatást.kubectl get svc nodeapp
Jegyezze fel a
EXTERNAL-IP
kimenetet.
A szolgáltatás ellenőrzése
Hívja meg a szolgáltatást
curl
aEXTERNAL-IP
sajátjával.curl $EXTERNAL_IP/ports
A következő példakimenethez hasonló kimenetnek kell megjelennie:
{"DAPR_HTTP_PORT":"3500","DAPR_GRPC_PORT":"50001"}
Megrendelés elküldése az alkalmazásnak a következő használatával
curl
: .curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworder
Ellenőrizze, hogy a rendelés megőrződött-e, ha a következőt
curl
kéri: .curl $EXTERNAL_IP/order
A következő példakimenethez hasonló kimenetnek kell megjelennie:
{ "orderId": "42" }
A Python-alkalmazás üzembe helyezése a Dapr oldalkocsival
Lépjen a Python-alkalmazás könyvtárára a
hello-kubernetes
rövid útmutatóban, és nyissa megapp.py
.Ez a példa egy alapszintű Python-alkalmazás, amely JSON-üzeneteket
localhost:3500
küld a Dapr alapértelmezett figyelési portjának. A Node.js alkalmazás végpontjátneworder
a következőbe való közzétételsel hívhatja megv1.0/invoke/nodeapp/method/neworder
. Az üzenet olyan adatokatorderId
tartalmaz, amelyek másodpercenként egyszer növeksenek: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)
Helyezze üzembe a Python-alkalmazást a Kubernetes-fürtben a
kubectl apply
paranccsal.kubectl apply -f ./deploy/python.yaml
Feljegyzés
Az előző parancshoz hasonlóan meg kell várnia az üzembe helyezés befejezését, mielőtt továbblépne a következő lépésekre. Ezt a következő paranccsal teheti meg:
kubectl rollout status deploy/pythonapp
Üzenetek megfigyelése és az adatmegőrzés megerősítése
Most, hogy mind a Node.js, mind a Python-alkalmazás üzembe lett helyezve, figyelheti az üzeneteket.
Kérje le a Node.js alkalmazás naplóit a
kubectl logs
parancs használatával.kubectl logs --selector=app=node -c node --tail=-1
Ha az üzemelő példányok sikeresek voltak, a következő példanaplókhoz hasonló naplókat kell látnia:
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
Hívja meg a Node.js alkalmazás rendelési végpontját a legújabb rendelés
curl
lekéréséhez.curl $EXTERNAL_IP/order {"orderID":"42"}
A válaszban meg kell jelennie a legújabb JSON-nak.
Az erőforrások eltávolítása
Távolítsa el az erőforráscsoportot, a fürtöt, a névteret és az összes kapcsolódó erőforrást az az group delete paranccsal.
az group delete --name MyResourceGroup