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

Depoyu kopyalama

  1. komutunu kullanarak Dapr hızlı başlangıç deposunugit clone kopyalayın.

    git clone https://github.com/dapr/quickstarts.git
    
  2. kullanarak cddizinine hello-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

  1. Redis için Azure Cache oluşturma akışını başlatmak için Azure portalını açın.

  2. Gerekli bilgileri doldurun.

  3. Redis örneği dağıtımını başlatmak için Oluştur'u seçin.

  4. 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.

  5. erişim anahtarlarınızı almak için Ayarlar altında Erişim anahtarları'na gidin.

  6. 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.

  1. redisHost değerini kendi Redis ana adresinizle değiştirin.

  2. öğesini redisPassword kendi Gizli Dizinizle değiştirin.

  3. 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

  1. redis.yaml komutunu kullanarak kubectl apply dosyayı uygulayın.

    kubectl apply -f ./deploy/redis.yaml
    
  2. 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

  1. 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.
  2. komutunu kullanarak hizmetinize erişin kubectl get svc .

    kubectl get svc nodeapp
    
  3. Çıkıştaki öğesini EXTERNAL-IP not edin.

Hizmeti doğrulama

  1. ile kullanarak curl hizmetini çağırın EXTERNAL-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"}
    
  2. kullanarak curluygulamaya bir sipariş gönderin.

    curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworder
    
  3. kullanarak curlsipariş 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

  1. Hızlı başlangıçta Python uygulama dizinine hello-kubernetes gidin ve dosyasını açın app.py.

    Bu örnek, Dapr için varsayılan dinleme bağlantı noktası olan öğesine JSON iletileri localhost:3500gönderen temel bir Python uygulamasıdır. uygulamasına göndererek v1.0/invoke/nodeapp/method/neworderNode.js uygulamasının neworder uç noktasını çağırabilirsiniz. İleti, saniye başına bir kez artan bir orderId 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)
    
  2. 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.

  1. 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
    
  2. kullanarak curlen 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

Sonraki adımlar

Diğer küme uzantıları hakkında daha fazla bilgi edinin.