Hızlı Başlangıç: Azure Kubernetes Service (AKS) veya Arc özellikli Kubernetes için Dapr uzantısını kullanarak uygulama dağıtma

Bu hızlı başlangıçta AKS veya Arc özellikli Kubernetes kümesinde Dapr uzantısını kullanacaksınız. İleti oluşturan bir hello world Python uygulamasından ve iletileri kullanan ve kalıcı hale getiren bir Node.js 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/Azure-Samples/dapr-aks-extension-quickstart.git
    
  2. Dizine dapr-aks-extension-quickstart geçin.

    cd dapr-aks-extension-quickstart
    

Redis deposu oluşturma ve yapılandırma

Azure Yönetilen Redis oluşturma akışını başlatmak için Azure portalını açın.

  1. Azure Yönetilen Redis örneği oluşturma hızlı başlangıcındaki yönergelere göre önerilen bilgileri doldurun.

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

Kaynak bilgilerini doğrulama

  1. Redis kaynağı dağıtıldıktan sonra genel bakış sayfasına gidin.

  2. Şunlara dikkat edin:

    • Kaynağın genel bakış sayfasındaki Temel Bilgiler bölümünde bulunan ana bilgisayar adı. Konak adı biçimi şuna benzer: <your-cache-name>.<region>.redis.azure.net.
    • Ayarlar>Gelişmiş ayarlar bölümünde bulunan SSL bağlantı noktası. Varsayılan değer şudur: 10000.
  3. Terminalinizde, varsayılan veritabanında erişim anahtarı kimlik doğrulamasını etkinleştirin.

    az redisenterprise database update \
        --cluster-name <REDIS_NAME> \
        --resource-group <RESOURCE_GROUP> \
        --access-keys-auth Enabled
    
  4. Varsayılan veritabanı için birincil anahtarı alın ve bir ortam değişkenine kaydedin.

    export REDIS_PRIMARY_KEY=$(az redisenterprise database list-keys \
        --cluster-name <REDIS_NAME> \
        --resource-group <RESOURCE_GROUP> \
        --query primaryKey \
        -o tsv)
    

Genel ağ erişimini etkinleştirme

Bu senaryoda, Azure Yönetilen Redis örneğiniz genel ağ erişimini kullanır. Bu hızlı başlangıcı tamamladıktan sonra kaynakları temizlediğinizden emin olun.

  1. Kaynak menüsünde, Ayarlar altında Ağ'ı seçin.

  2. Genel ağ erişiminiEtkin olarak ayarlayın.

Dapr bileşenlerini yapılandırma

redis.yaml dosyasında, bileşeni TLS ile erişim anahtarı kimlik doğrulamasını kullanacak şekilde yapılandıracaksınız.

- name: redisPassword
    secretKeyRef:
        name: redis-secret
        key: redisPassword
- name: useEntraID
    value: "false"
- name: enableTLS
  value: true
  1. Tercih ettiğiniz kod düzenleyicisinde örnek depodaki deploy dizinine gidin ve redis.yaml dosyasını açın.

  2. redisHost için, <REDIS_HOST>:10000 yer tutucu değerini daha önce Azure portalında kaydettiğiniz Azure Managed Redis ana bilgisayar adıyla değiştirin.

    - name: redisHost
      value: <your-cache-name>.<region>.redis.azure.net:10000
    
  3. redisPassword tarafından kullanılan Kubernetes secret'ını oluşturun.

    kubectl create secret generic redis-secret \
        --from-literal=redisPassword="$REDIS_PRIMARY_KEY"
    

Yapılandırmayı uygulama

komutunu kullanarak kubectl apply dosyasını uygulayın.

kubectl apply -f ./deploy/redis.yaml

Beklenen çıkış

component.dapr.io/statestore created

Dapr yan arabirimi ile Node.js uygulamasını dağıtın

Node.js uygulamasını yapılandırma

  1. dizinine deploy gidin ve workload-identity.yaml dosyasını açın.

  2. <MANAGED_IDENTITY_CLIENT_ID> değerini, oluşturduğunuz kullanıcı tarafından atanmış yönetilen kimliğin istemci kimliğiyle değiştirin.

  3. Uygulama bildirimlerini dağıtmadan önce hizmet hesabı bildirimini uygulayın.

    kubectl apply -f ./deploy/workload-identity.yaml
    

node.yaml dosyasında pod belirtimi iş yükü kimlik etiketini ve paylaşılan workload-sa hizmet hesabını kullanır:

labels:
  app: node
  azure.workload.identity/use: "true"

Yapılandırmayı uygulama

  1. komutunu kullanarak Node.js uygulama dağıtımını kubectl apply kümenize uygulayın.

    kubectl apply -f ./deploy/node.yaml
    
  2. Kubernetes dağıtımları zaman uyumsuz olduğundan, sonraki adımlara geçmeden önce aşağıdaki komutla dağıtımın tamamlanmasını doğrulayın:

    kubectl rollout status deploy/nodeapp
    
  3. komutunu kullanarak hizmetinize erişin kubectl get svc .

    kubectl get svc nodeapp
    
  4. Çıktıdaki EXTERNAL-IP öğesini not alın ve bunu bir ortam değişkeni olarak ayarlayın.

    export EXTERNAL_IP=<EXTERNAL-IP>
    

Node.js hizmetini doğrulama

  1. curl kullanarak hizmeti EXTERNAL-IP ile çağırın.

    curl $EXTERNAL_IP/ports
    

    Örnek çıkış

    {"DAPR_HTTP_ENDPOINT":"http://localhost:3500","DAPR_GRPC_ENDPOINT":"http://localhost:50001"}
    
  2. Uygulamaya bir sipariş gönderin.

    curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworder
    
  3. Siparişi onaylayın.

    curl $EXTERNAL_IP/order
    

    Beklenen çıkış

    { "orderId": "42" }
    

Python uygulamasını Dapr yan arabirim ile dağıtın

Python uygulamasını yapılandırma

python.yaml dosyasında pod belirtimi iş yükü kimlik etiketini ve paylaşılan workload-sa hizmet hesabını kullanır:

labels:
    app: python
    azure.workload.identity/use: "true"

Yapılandırmayı uygulama

  1. komutunu kullanarak Python uygulamasını Kubernetes kümenize dağıtın kubectl apply .

    kubectl apply -f ./deploy/python.yaml
    
  2. Kubernetes dağıtımları zaman uyumsuz olduğundan, sonraki adımlara geçmeden önce aşağıdaki komutla dağıtımın tamamlanmasını doğrulayın:

    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. kubectl logs komutunu kullanarak Node.js uygulamasının günlüklerini alın.

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

    Beklenen çıkış

    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 curl, en son siparişi almak için Node.js uygulamasının sipariş uç noktasını çağırın.

    curl $EXTERNAL_IP/order
    

    Yanıtta en son JSON çıkışını görmeniz gerekir.

Kaynakları temizleme

Bu hızlı başlangıçtaki kaynakları artık kullanmayı planlamazsa az group delete komutunu kullanarak kaynak grubunu, kümeyi, ad alanını ve tüm ilgili kaynakları kaldırabilirsiniz.

az group delete --name <your-resource-group>

Sonraki adım