Hızlı Başlangıç: Azure Kubernetes Service (AKS) veya Arc özellikli Kubernetes için Dapr küme uzantısını kullanarak uygulama dağıtma
Bu hızlı başlangıçta AKS veya Arc özellikli Kubernetes kümesinde Dapr küme uzantısını kullanacaksınız. İleti oluşturan bir hello world
Python uygulamasından ve iletileri kullanan ve kalıcı hale getiren bir düğüm uygulamasından oluşan bir örnek dağıtırsınız.
Önkoşullar
- Azure aboneliği. Azure aboneliğiniz yoksa ücretsiz hesap oluşturabilirsiniz.
- Azure CLI veya Azure PowerShell yüklü.
- Dapr küme uzantısının etkinleştirildiği AKS veya Arc özellikli bir Kubernetes kümesi.
Depoyu kopyalama
komutunu kullanarak Dapr hızlı başlangıç deposunu
git clone
kopyalayın.git clone https://github.com/dapr/quickstarts.git
kullanarak
cd
dizininehello-kubernetes
geçin.cd quickstarts/tutorials/hello-kubernetes/
Durum deposu oluşturma ve yapılandırma
Dapr, durumu kalıcı hale getirmek ve almak için Redis, Azure Cosmos DB, DynamoDB ve Cassandra gibi birçok farklı durum deposu kullanabilir. Bu örnekte Redis kullanılır.
Redis deposu oluşturma
Redis için Azure Cache oluşturma akışını başlatmak için Azure portalını açın.
Gerekli bilgileri doldurun.
Redis örneği dağıtımını başlatmak için Oluştur'u seçin.
Redis örneğinizin ana bilgisayar adını not alın. Bu adı Azure'daki Genel Bakış bölümünden alabilirsiniz. Konak adı aşağıdaki örneğe benzer olabilir:
xxxxxx.redis.cache.windows.net:6380
.erişim anahtarlarınızı almak için Ayarlar altında Erişim anahtarları'na gidin.
Komutunu kullanarak Redis parolanızı depolamak için bir Kubernetes gizli dizisi
kubectl create secret generic redis
oluşturun.kubectl create secret generic redis --from-literal=redis-password=<your-redis-password>
Dapr bileşenlerini yapılandırma
Deponuz oluşturulduktan sonra, anahtarları redis.yaml
Merhaba Dünya deposunun dağıtım dizinindeki dosyaya eklemeniz gerekir. Buradan daha fazla bilgi edinebilirsiniz.
redisHost
değerini kendi Redis ana adresinizle değiştirin.öğesini
redisPassword
kendi Gizli Dizinizle değiştirin.TLS üzerinden bağlantıyı etkinleştirmek için aşağıdaki iki satırı ekleyin
redisPassword
- name: redisPassword secretKeyRef: name: redis key: redis-password - name: enableTLS value: true
Yapılandırmayı uygulama
redis.yaml
komutunu kullanarakkubectl apply
dosyayı uygulayın.kubectl apply -f ./deploy/redis.yaml
komutunu kullanarak
kubectl get components.redis
durum deponuzun başarıyla yapılandırıldığını doğrulayın.kubectl get components.redis -o yaml
Aşağıdaki örnek çıktıya benzer bir çıktı görmeniz gerekir:
component.dapr.io/statestore created
Dapr sepet ile Node.js uygulamasını dağıtma
komutunu kullanarak Node.js uygulama dağıtımını
kubectl apply
kümenize uygulayın.kubectl apply -f ./deploy/node.yaml
Not
Kubernetes dağıtımları zaman uyumsuz olduğundan sonraki adımlara geçmeden önce dağıtımın tamamlanmasını beklemeniz gerekir. Bunu aşağıdaki komutla yapabilirsiniz:
kubectl rollout status deploy/nodeapp
Bu, Node.js uygulamasını Kubernetes'e dağıtır. Dapr kontrol düzlemi Dapr sepetini poda otomatik olarak ekler. Dosyaya
node.yaml
bakarsanız Dapr'ın bu dağıtım için nasıl etkinleştirildiğini görürsünüz:dapr.io/enabled: true
: Dapr denetim düzlemine bu dağıtıma sepet eklemesini söyler.dapr.io/app-id: nodeapp
: Dapr uygulamasına benzersiz bir kimlik veya ad atar, böylece diğer Dapr uygulamalarına ileti gönderilebilir ve bu uygulamalarla iletişim kurabilir.
komutunu kullanarak hizmetinize erişin
kubectl get svc
.kubectl get svc nodeapp
Çıkıştaki öğesini
EXTERNAL-IP
not edin.
Hizmeti doğrulama
ile kullanarak
curl
hizmetini çağırınEXTERNAL-IP
.curl $EXTERNAL_IP/ports
Aşağıdaki örnek çıktıya benzer bir çıktı görmeniz gerekir:
{"DAPR_HTTP_PORT":"3500","DAPR_GRPC_PORT":"50001"}
kullanarak
curl
uygulamaya bir sipariş gönderin.curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworder
kullanarak
curl
sipariş isteğinde bulunarak siparişin kalıcı olduğunu onaylayın.curl $EXTERNAL_IP/order
Aşağıdaki örnek çıktıya benzer bir çıktı görmeniz gerekir:
{ "orderId": "42" }
Python uygulamasını Dapr sepet ile dağıtma
Hızlı başlangıçta Python uygulama dizinine
hello-kubernetes
gidin ve dosyasını açınapp.py
.Bu örnek, Dapr için varsayılan dinleme bağlantı noktası olan öğesine JSON iletileri
localhost:3500
gönderen temel bir Python uygulamasıdır. uygulamasına göndererekv1.0/invoke/nodeapp/method/neworder
Node.js uygulamasınınneworder
uç noktasını çağırabilirsiniz. İleti, saniye başına bir kez artan birorderId
veri içerir: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)
komutunu kullanarak Python uygulamasını Kubernetes kümenize dağıtın
kubectl apply
.kubectl apply -f ./deploy/python.yaml
Not
Önceki komutta olduğu gibi, sonraki adımlara geçmeden önce dağıtımın tamamlanmasını beklemeniz gerekir. Bunu aşağıdaki komutla yapabilirsiniz:
kubectl rollout status deploy/pythonapp
İletileri gözlemleyin ve kalıcılığı onaylayın
Artık hem Node.js hem de Python uygulamaları dağıtıldığından iletilerin gelmesini izleyebilirsiniz.
komutunu kullanarak Node.js uygulamasının günlüklerini
kubectl logs
alın.kubectl logs --selector=app=node -c node --tail=-1
Dağıtımlar başarılı olursa, aşağıdaki örnek günlükler gibi günlükleri görmeniz gerekir:
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
kullanarak
curl
en son siparişi almak için Node.js uygulamasının sipariş uç noktasını çağırın.curl $EXTERNAL_IP/order {"orderID":"42"}
Yanıtta en son JSON'ı görmeniz gerekir.
Kaynakları temizleme
az group delete komutunu kullanarak kaynak grubunu, kümeyi, ad alanını ve tüm ilgili kaynakları kaldırın.
az group delete --name MyResourceGroup
Sonraki adımlar
Diğer küme uzantıları hakkında daha fazla bilgi edinin.