Aracılığıyla paylaş


Dapr takılabilir bileşenlerini dağıtma

Dağıtılmış Uygulama Çalışma Zamanı (Dapr), dağıtılmış uygulamalar oluşturma işlemini basitleştiren taşınabilir, sunucusuz, olay odaklı bir çalışma zamanıdır. Dapr, yapı taşları nasıl çalışır diye endişelenmeden durum bilgisi olan veya durum bilgisi olmayan uygulamalar oluşturmanıza olanak tanır. Dapr çeşitli yapı taşları sağlar: pub/sub, state management, service invocation, actors ve daha fazlası.

Azure IoT İşlemleri, MQTT aracısı tarafından desteklenen bu yapı yapılarından ikisini destekler:

  • Yayımlama ve abone olma
  • Durum yönetimi

Dapr takılabilir bileşenlerini kullanmak için API'lerin her biri için bileşen belirtimini tanımlayın ve kümeye kaydolun. Dapr bileşenleri, paylaşılan birime yerleştirilen unix etki alanı yuvasını dinler. Dapr çalışma zamanı her yuvaya bağlanır ve bileşenin uyguladığı belirli bir yapı taşı API'sinden tüm hizmetleri bulur.

Dapr çalışma zamanını yükleme

Dapr çalışma zamanını yüklemek için aşağıdaki Helm komutunu kullanın:

Uyarı

Sağlanan Azure IoT İşlemleri hızlı başlangıcını tamamladıysanız, Dapr çalışma zamanını zaten yüklemişsinizdir ve aşağıdaki adımlar gerekli değildir.

helm repo add dapr https://dapr.github.io/helm-charts/
helm repo update
helm upgrade --install dapr dapr/dapr --version=1.14 --namespace dapr-system --create-namespace --wait

MQTT aracısı takılabilir bileşenlerini kaydetme

Pub/sub ve state management eklenebilir bileşenlerini kaydetmek için yaml bileşen bildirimini oluşturun ve kümenize uygulayın.

Yaml dosyasını oluşturmak için aşağıdaki bileşen tanımlarını kullanın:

Bileşen Açıklama
metadata:name Bileşen adı önemlidir ve Dapr uygulamasının bileşene nasıl başvurmuş olduğudur.
metadata:annotations:dapr.io/component-container Dapr sepet enjektör tarafından kullanılan bileşen ek açıklamaları, görüntü konumunu tanımlama, birim bağlamaları ve günlüğe kaydetme yapılandırması
spec:type Tam olarak gösterildiği gibi bildirilmesi gereken bileşenin türü
spec:metadata:keyPrefix Statestore arka ucuyla iletişim kurarken kullanılan anahtar ön ekini tanımlar. Daha fazla bilgi için bkz. Dapr belgeleri
spec:metadata:hostname MQTT aracısı ana bilgisayar adı. Varsayılan değer: aio-broker
spec:metadata:tcpPort MQTT aracısı bağlantı noktası numarası. Varsayılan değer: 18883
spec:metadata:useTls TLS'nin MQTT aracısı tarafından kullanılıp kullanılmadığına bakın. Varsayılan değer: true
spec:metadata:caFile MQTT aracısını doğrulamak için sertifika zinciri yolu. ise useTls gereklidir true. Bu dosya belirtilen birim adıyla pod'a bağlanmalıdır
spec:metadata:satAuthFile Hizmet Hesabı Belirteci (SAT) dosyası, MQTT aracısı ile Dapr bileşenlerinin kimliğini doğrulamak için kullanılır. Bu dosya belirtilen birim adıyla pod'a bağlanmalıdır
  1. Azure IoT İşlemleri bileşen tanımlarını içeren aşağıdaki yaml dosyasını adlı components.yamlbir dosyaya kaydedin:

    apiVersion: dapr.io/v1alpha1
    kind: Component
    metadata:
      name: iotoperations-pubsub
      namespace: azure-iot-operations
      annotations:
        dapr.io/component-container: >
          {
            "name": "iot-operations-dapr-components",
            "image": "ghcr.io/azure/iot-operations-dapr-components:latest",
            "volumeMounts": [
              { "name": "mqtt-client-token", "mountPath": "/var/run/secrets/tokens" },
              { "name": "aio-ca-trust-bundle", "mountPath": "/var/run/certs/aio-internal-ca-cert" }
            ],
            "env": [
                { "name": "pubSubLogLevel", "value": "Information" },
                { "name": "stateStoreLogLevel", "value": "Information" },
                { "name": "defaultLogLevel", "value": "Warning" }
            ]
          }
    spec:
      type: pubsub.azure.iotoperations
      version: v1
      metadata:
      - name: hostname
        value: aio-broker
      - name: tcpPort
        value: 18883
      - name: useTls
        value: true
      - name: caFile
        value: /var/run/certs/aio-internal-ca-cert/ca.crt
      - name: satAuthFile
        value: /var/run/secrets/tokens/mqtt-client-token
    ---
    apiVersion: dapr.io/v1alpha1
    kind: Component
    metadata:
      name: iotoperations-statestore
      namespace: azure-iot-operations
    spec:
      type: state.azure.iotoperations
      version: v1
      metadata:
      - name: hostname
        value: aio-broker
      - name: tcpPort
        value: 18883
      - name: useTls
        value: true
      - name: caFile
        value: /var/run/certs/aio-internal-ca-cert/ca.crt
      - name: satAuthFile
        value: /var/run/secrets/tokens/mqtt-client-token    
    
  2. Aşağıdaki komutu çalıştırarak Bileşeni kümenize uygulayın:

    kubectl apply -f components.yaml
    

    Aşağıdaki çıkışı doğrulayın:

    component.dapr.io/iotoperations-pubsub created
    component.dapr.io/iotoperations-statestore created
    

MQTT aracısı için yetkilendirme ilkesi oluşturma

Yetkilendirme ilkelerini MQTT aracısına yapılandırmak için önce bir BrokerAuthorization kaynağı oluşturursunuz.

Uyarı

Bu kümede Aracı Yetkilendirmesi etkinleştirilmediyse, uygulamaların MQTT aracısı State Store'a erişmek için gerekenler de dahil olmak üzere tüm MQTT konularına erişimi olacağı için bu bölümü atlayabilirsiniz.

  1. BrokerAuthorization tanımını içeren aşağıdaki yaml dosyasını adlı aio-dapr-authz.yamlbir dosyaya kaydedin:

    apiVersion: mqttbroker.iotoperations.azure.com/v1
    kind: BrokerAuthorization
    metadata:
      name: my-dapr-authz-policies
      namespace: azure-iot-operations
    spec:
      listenerRef:
        - my-listener # change to match your listener name as needed
      authorizationPolicies:
        enableCache: false
        rules:
          - principals:
              attributes:
                - group: dapr-workload # match to the attribute annotated to the service account
            brokerResources:
              - method: Connect
              - method: Publish
                topics:
                  - "$services/statestore/#"
              - method: Subscribe
                topics:
                  - "clients/{principal.clientId}/services/statestore/#"
    
  2. BrokerAuthorization tanımını kümeye uygulayın:

    kubectl apply -f aio-dapr-authz.yaml
    

Sonraki Adımlar

Dapr bileşenleri kümeye dağıtıldığına göre, dağıtılmış uygulamalar geliştirmek için Dapr kullanabilirsiniz.