Hızlı Başlangıç: Azure Kubernetes Service (AKS) için Dapr küme uzantısını (önizleme) kullanarak uygulama dağıtma
Bu hızlı başlangıçta AKS kümesinde Dapr küme uzantısını kullanma hakkında bilgi sahibi olacak. İletiler oluşturan bir Python uygulaması ve bunları tüketen ve kalıcı olarak bulunduran bir Node uygulamasından oluşan bir merhaba dünya örneği dağıtacaksınız.
Önemli
AKS önizleme özellikleri self servis, kabul etme temelinde kullanılabilir. Önizlemeler "olduğu gibi" ve "kullanılabilir" olarak sağlanır ve hizmet düzeyi sözleşmelerinden ve sınırlı garantiden dışlanmıştır. AKS önizlemeleri en iyi çaba temelinde müşteri desteği kapsamındadır. Bu nedenle bu özellikler üretimde kullanım için uygun değil. Daha fazla bilgi için aşağıdaki destek makalelerini okuyun:
Önkoşullar
- Azure aboneliği. Azure aboneliğiniz yoksa ücretsiz hesap oluşturabilirsiniz.
- Yüklü Azure CLI.
- Dapr küme uzantısı etkin bir AKS kümesi
Depoyu kopyalama
Örnek uygulamayı dağıtmak için kullanmakta olacağınız dosyaları almak için Hızlı Başlangıçlar deposunu kopya edin ve dizinine hello-kubernetes değişiklik olun:
git clone https://github.com/dapr/quickstarts.git
cd quickstarts/hello-kubernetes
Durum deposu oluşturma ve yapılandırma
Dapr, durumu kalıcı yapmak ve almak için bir dizi farklı durum depolarını (Redis, CosmosDB, DynamoDB, Cassandra vb.) kullanabilir. Bu örnekte Redis'i kullan kullanıriz.
Redis deposu oluşturma
- Azure Azure portal oluşturma akışını başlatmak için Redis Cache açın.
- Gerekli bilgileri doldurun
- Redis örneğinizin dağıtımını başlatan "Oluştur"a tıklayın.
- Redis örneğinizin ana bilgisayar adını not alın. Bu adı Azure'daki "Genel Bakış"tan edinabilirsiniz. Gibi görünüyor olması
xxxxxx.redis.cache.windows.net:6380gerekir. - Örneğiniz oluşturulduktan sonra erişim anahtarınızı alasiniz. "Ayarlar" altındaki "Erişim Anahtarları"Ayarlar gidin ve Redis parolanızı depolamak için bir Kubernetes gizli anahtarı oluşturun:
kubectl create secret generic redis --from-literal=redis-password=<your-redis-password>
Dapr bileşenlerini yapılandırma
Depoyu oluşturduktan sonra anahtarları deponun dağıtım dizininde redis.yaml dosyasına Merhaba Dünya gerekir. değerini redisHost kendi Redis ana adresinizle, değerini ise redisPassword kendi Gizli Adresinizle değiştirin. Daha fazla bilgi için buraya bakarak öğrensiniz.
TLS üzerinden bağlantıyı etkinleştirmek için aşağıdaki iki redisPassword satırı da eklemeniz gerekir:
- name: redisPassword
secretKeyRef:
name: redis
key: redis-password
- name: enableTLS
value: true
Yapılandırmayı uygulama
Dosyayı redis.yaml uygulama:
kubectl apply -f ./deploy/redis.yaml
Çıkışta durum deposnizin başarıyla yapılandırıldığından emin olur:
component.dapr.io/statestore created
Dapr Node.js uygulama dağıtma
Uygulamanın Node.js kümenize uygulama:
kubectl apply -f ./deploy/node.yaml
Not
Kubernetes dağıtımları zaman uyumsuz. Bu, sonraki adımlara ilerlemeden önce dağıtımın tamamlandıktan sonra tamamlanacak şekilde beklemenin gerek olduğu anlamına gelir. Bunu aşağıdaki komutla yapabilirsiniz:
kubectl rollout status deploy/nodeapp
Bu, Node.js Kubernetes'e dağıtır. Dapr denetim düzlemi, Dapr kenar arabalarını otomatik olarak Pod'a eklenir. Dosyaya göz atacak node.yaml olursanız, Dapr'ın bu dağıtım için nasıl etkinleştiril olduğunu gösterir:
dapr.io/enabled: true- Bu, Dapr denetim düzlemi'ne bu dağıtıma bir araba eklemesini söyler.dapr.io/app-id: nodeapp- Bu, 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.
Hizmetinize erişmek için aracılığıyla alın ve not EXTERNAL-IP kubectl edin:
kubectl get svc nodeapp
Hizmeti doğrulama
Hizmeti aramak için şu çalıştırın:
curl $EXTERNAL_IP/ports
Aşağıdakine benzer bir çıktı görmeniz gerekir:
{"DAPR_HTTP_PORT":"3500","DAPR_GRPC_PORT":"50001"}
Ardından uygulamaya bir sipariş gönderin:
curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworder
Siparişin istenen şekilde kalıcı olduğunu onaylayın:
curl $EXTERNAL_IP/order
Aşağıdakine benzer bir çıktı görmeniz gerekir:
{ "orderId": "42" }
İpucu
Bu, Dapr üzerinde çalışan uygulamaların durumunu, bilgilerini ve günlüklerini denetlemeye uygun bir arabirim olan Dapr panosuyla tanışın. Aşağıdaki komut, üzerinde kullanılabilir hale http://localhost:8080/ gelecek:
kubectl port-forward svc/dapr-dashboard -n dapr-system 8080:8080
Dapr araba ile Python uygulamasını dağıtma
Python uygulamasına hızlıca göz atabilirsiniz. Hızlı başlangıçta Python uygulama dizinine hello-kubernetes gidin ve 'i app.py açın.
Bu, JSON iletilerini Dapr için varsayılan dinleme bağlantı noktası olan uygulamasına gönderen temel bir Python localhost:3500 uygulamasıdır. uygulamasına göndererek Node.js uç neworder noktasını v1.0/invoke/nodeapp/method/neworder çağırabilirsiniz. İleti, saniye başına bir orderId artıran 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)
Python uygulamasını Kubernetes kümenize dağıtın:
kubectl apply -f ./deploy/python.yaml
Not
Yukarıdaki gibi, aşağıdaki komut dağıtımın tamamlandıktan sonra tamamlanır:
kubectl rollout status deploy/pythonapp
İletileri gözlemle ve kalıcılığı onayla
Artık hem Node.js hem de Python uygulamaları dağıtıldığından, iletileri izleyin.
Uygulamanın günlüklerini Node.js:
kubectl logs --selector=app=node -c node --tail=-1
Dağıtımlar başarılı olursa aşağıdaki gibi günlükler görüyor olun:
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
En Node.js almak için uygulamanın sipariş uç noktasını arayın. Daha önce kaydedilen dış IP adresini alın ve "/order" ifadesini ekleyin ve bu adrese bir GET isteği girin (tarayıcınıza girin, Postman'i kullanın curl veya bunu kullanın!):
curl $EXTERNAL_IP/order
{"orderID":"42"}
Yanıtta en son JSON'u görüyor gerekir.
Kaynakları temizleme
Kaynak grubunu, AKS kümesi, ad alanını ve tüm ilgili kaynakları kaldırmak için az group delete komutunu kullanın.
az group delete --name MyResourceGroup
Sonraki adımlar
Bu örnek uygulama başarıyla dağıtıldıktan sonra: