Freigeben über


Tutorial: Hinzufügen von OPC UA-Ressourcen zu Ihrem Cluster von „Azure IoT Einsatz“

In diesem Tutorial fügen Sie Ihrem Cluster von „Azure IoT Einsatz“ manuell OPC UA-Ressourcen hinzu. Diese Ressourcen veröffentlichen Nachrichten zum MQTT-Broker in Ihrem Azure IoT Einsatz-Cluster. Normalerweise führt ein OT-Benutzer diese Schritte aus.

Eine Ressource ist ein physisches Gerät oder eine logische Entität, die ein Gerät, einen Computer, ein System oder einen Prozess darstellt. Ein physisches Objekt könnte beispielsweise eine Pumpe, ein Motor, ein Tank oder eine Produktionslinie sein. Eine logische Ressource, die Sie definieren, kann Eigenschaften, Datenpunkte streamen oder Ereignisse generieren.

OPC UA-Server sind Softwareanwendungen, die mit Ressourcen kommunizieren. OPC UA-Tags sind Datenpunkte, die OPC UA-Server verfügbar machen. OPC UA-Tags können Echtzeit- oder Verlaufsdaten über den Status, die Leistung, die Qualität oder den Zustand von Ressourcen bereitstellen.

In diesem Tutorial verwenden Sie die Web-Benutzeroberfläche für die Einsatzerfahrung, um Ihre Ressourcen zu erstellen. Sie können auch die Azure CLI verwenden, um einige dieser Aufgaben auszuführen.

Voraussetzungen

Eine Instanz von Azure IoT Operations mit aktivierten sicheren Einstellungen, die in einem Kubernetes-Cluster bereitgestellt wurden. Verwenden Sie zum Erstellen einer Instanz eine der folgenden Aktionen zum Bereitstellen von Azure IoT Operations:

Von Bedeutung

Es ist nicht möglich, sichere Einstellungen für die Instanz zu aktivieren, die Sie erstellen, wenn Sie die Schritte in der Schnellstartanleitung ausführen: Ausführen von Azure IoT Operations in GitHub Codespaces mit K3s-Artikel .

Nachdem Sie sichere Einstellungen aktiviert haben, enthält die Ressourcengruppe, die Ihre Azure IoT Operations-Instanz enthält, auch die folgenden Ressourcen:

  • Eine Azure Key Vault-Instanz, um die geheimen Schlüssel zu speichern, die mit Ihrem Kubernetes-Cluster synchronisiert werden sollen.
  • Eine vom Benutzer zugewiesene verwaltete Identität, die Azure IoT Operations für den Zugriff auf die Azure Key Vault-Instanz verwendet.
  • Eine vom Benutzer zugewiesene verwaltete Identität, die Azure IoT Operations-Komponenten wie Datenflüsse verwenden können, um eine Verbindung mit Cloudendpunkten wie Azure Event Hubs herzustellen.
  • Ein Azure Device Registry-Namespace zum Speichern Ihrer Objekte und Geräte.

Stellen Sie sicher, dass Sie beim Konfigurieren sicherer Einstellungen Ihrem Benutzerkonto Berechtigungen zum Verwalten von Geheimnissen mit der Rolle Key Vault Secrets Officer erteilen.

Um sich bei der Einsatz-Webbenutzeroberfläche anzumelden, benötigen Sie ein Microsoft Entra ID-Konto mit mindestens Mitwirkendenberechtigungen für die Ressourcengruppe, die Ihre Kubernetes – Azure Arc-Instanz enthält. Weitere Informationen finden Sie unter Einsatz-Webbenutzeroberfläche.

Sofern nicht anders angegeben, können Sie die Konsolenbefehle in diesem Tutorial entweder in einer Bash- oder PowerShell-Umgebung ausführen.

Welches Problem werden wir lösen?

Die Daten, die OPC UA-Server verfügbar machen, können eine komplexe Struktur aufweisen und schwer zu verstehen sein. Azure IoT Operations bietet eine Möglichkeit, OPC UA-Ressourcen als Tags, Ereignisse und Eigenschaften zu modellieren. Mit dieser Modellierung können Daten leichter nachvollzogen und in nachgelagerten Prozessen wie dem MQTT-Broker und in Datenflüssen verwendet werden.

Im Lernprogramm wird auch erläutert, wie Anmeldeinformationen verwendet werden, die in Azure Key Vault gespeichert sind, um sich beim simulierten OPC UA-Server zu authentifizieren.

Bereitstellen des OPC PLC-Simulators

Dieses Tutorial verwendet den OPC PLC-Simulator, um Beispieldaten zu generieren. So stellen Sie den OPC PLC Simulator bereit:

  1. Laden Sie die Datei opc-plc-tutorial-deployment.yaml aus dem GitHub-Repository herunter. Führen Sie zum Herunterladen über die Befehlszeile den folgenden Befehl aus:

    wget https://raw.githubusercontent.com/Azure-Samples/explore-iot-operations/refs/heads/main/samples/quickstarts/opc-plc-tutorial-deployment.yaml -O opc-plc-tutorial-deployment.yaml
    
  2. Öffnen Sie die opc-plc-tutorial-deployment.yaml Datei, die Sie heruntergeladen haben, in einem Text-Editor, und ändern Sie das Kennwort für den Simulator. Das Kennwort wird mit dem --defaultpassword Parameter festgelegt. Notieren Sie sich den Kennwortwert, den Sie später benötigen. Speichern Sie dann Ihre Änderungen.

  3. Führen Sie den folgenden Befehl aus, um den OPC PLC-Simulator auf Ihrem Cluster bereitzustellen:

    kubectl apply -f opc-plc-tutorial-deployment.yaml
    

Das folgende Codeschnipsel zeigt die YAML-Datei, die Sie angewendet haben:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: opc-plc-000000
  namespace: azure-iot-operations
  labels:
    app.kubernetes.io/component: opcplc-000000
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/component: opcplc-000000
  template:
    metadata:
      labels:
        app.kubernetes.io/component: opcplc-000000
    spec:
      containers:
      - name: opc-plc
        image: mcr.microsoft.com/iotedge/opc-plc:latest
        args:
          - "--plchostname=opcplc-000000"
          - "--portnum=50000"
          - "--certdnsnames=opcplc-000000"
          - "--unsecuretransport"
          - "--slownodes=5"
          - "--slowrate=10"
          - "--fastnodes=10"
          - "--fasttypelowerbound=212"
          - "--fasttypeupperbound=273"
          - "--fasttyperandomization=True"
          - "--veryfastrate=1000"
          - "--guidnodes=1"
          - "--appcertstoretype=FlatDirectory"
          - "--dontrejectunknownrevocationstatus"
          - "--disableanonymousauth"
          - "--defaultuser=contosouser"
          - "--defaultpassword=contosouserpassword"
        ports:
        - containerPort: 50000
        volumeMounts:
          - name: opc-plc-default-application-cert
            mountPath: /app/pki/own
          - name: opc-plc-trust-list
            mountPath: /app/pki/trusted
      volumes:
        - name: opc-plc-default-application-cert
          secret:
            secretName: opc-plc-default-application-cert
        - name: opc-plc-trust-list
          secret:
            secretName: opc-plc-trust-list
      serviceAccountName: opcplc-000000-service-account
---
apiVersion: v1
kind: Service
metadata:
  name: opcplc-000000
  namespace: azure-iot-operations
  labels:
    app.kubernetes.io/component: opcplc-000000
spec:
  type: ClusterIP
  selector:
    app.kubernetes.io/component: opcplc-000000
  ports:
    - port: 50000
      protocol: TCP
      targetPort: 50000
---
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: opc-plc-self-signed-issuer
  namespace: azure-iot-operations
  labels:
    app.kubernetes.io/component: opcplc-000000
spec:
  selfSigned: {}
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: opc-plc-default-application-cert
  namespace: azure-iot-operations
  labels:
    app.kubernetes.io/component: opcplc-000000
spec:
  secretName: opc-plc-default-application-cert
  duration: 2160h # 90d
  renewBefore: 360h # 15d
  issuerRef:
    name: opc-plc-self-signed-issuer
    kind: Issuer
  commonName: OpcPlc
  dnsNames:
    - opcplc-000000
    - opcplc-000000.azure-iot-operations.svc.cluster.local
    - opcplc-000000.azure-iot-operations
  uris:
    - urn:OpcPlc:opcplc-000000
  usages:
    - digital signature
    - key encipherment
    - data encipherment
    - server auth
    - client auth
  privateKey:
    algorithm: RSA
    size: 2048
  encodeUsagesInRequest: true
  isCA: false
---
apiVersion: v1
kind: Secret
metadata:
  name: opc-plc-trust-list
  namespace: azure-iot-operations
  labels:
    app.kubernetes.io/component: opcplc-000000
data: {}
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: opcplc-000000-service-account
  namespace: azure-iot-operations
  labels:
    app.kubernetes.io/component: opcplc-000000
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: opc-plc-000000-secret-access-role
  namespace: azure-iot-operations
rules:
- apiGroups: [""]
  resources: ["secrets"]
  verbs: ["get", "patch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: opc-plc-000000-secret-access-rolebinding
  namespace: azure-iot-operations
subjects:
- kind: ServiceAccount
  name: opcplc-000000-service-account
  namespace: azure-iot-operations
roleRef:
  kind: Role
  name: opc-plc-000000-secret-access-role
  apiGroup: rbac.authorization.k8s.io

Gegenseitiges Vertrauen schaffen

Bevor der OPC PLC-Simulator Daten an den Verbinder für OPC UA senden kann, müssen Sie gegenseitiges Vertrauen zwischen ihnen herstellen. In diesem Lernprogramm verwenden der OPC PLC Simulator und der Verbinder für OPC UA selbstsignierte Zertifikate, um das gegenseitige Vertrauen mit dem Verbinder für OPC UA herzustellen:

  • Das Anwendungsinstanzzertifikat des Simulators wird im Kubernetes-Secret opc-plc-default-application-cert gespeichert.
  • Das Anwendungsinstanzzertifikat für den Anschluss für OPC UA wird im aio-opc-opcuabroker-default-application-cert-Kubernetes-Geheimnis gespeichert.

Von Bedeutung

Verwenden Sie in einer Produktionsumgebung Anwendungsinstanzzertifikate auf Unternehmensniveau, um die gegenseitige Vertrauensstellung einzurichten. Weitere Informationen finden Sie unter Konfigurieren eines Anwendungsinstanzzertifikats auf Unternehmensniveau.

Fügen Sie das Zertifikat des Connectors der Vertrauensliste des Simulators hinzu.

Jeder OPC UA-Server verfügt über einen eigenen Mechanismus für die Verwaltung der Vertrauensliste. Führen Sie die folgenden Befehle aus, um das Zertifikat des Connectors zur Vertrauensliste des Simulators hinzuzufügen:

cert=$(kubectl -n azure-iot-operations get secret aio-opc-opcuabroker-default-application-cert -o jsonpath='{.data.tls\.crt}' | base64 -d)
data=$(kubectl create secret generic temp --from-literal=opcuabroker.crt="$cert" --dry-run=client -o jsonpath='{.data}')
kubectl patch secret opc-plc-trust-list -n azure-iot-operations -p "{\"data\": $data}"
$cert = kubectl -n azure-iot-operations get secret aio-opc-opcuabroker-default-application-cert -o jsonpath='{.data.tls\.crt}' | %{ [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($_)) }
$data = kubectl create secret generic temp --from-literal=opcuabroker.crt="$cert" --dry-run=client -o jsonpath='{.data}'
kubectl patch secret opc-plc-trust-list -n azure-iot-operations -p "{""data"": $data}"

Hinzufügen des Simulatorzertifikats zur Vertrauensliste des Connectors

Jeder OPC UA-Servertyp verfügt über einen eigenen Mechanismus zum Verwalten des Anwendungsinstanzzertifikats. Um das Zertifikat des Simulators in eine Datei mit dem Namen opcplc-000000.crtherunterzuladen, führen Sie den folgenden Befehl aus:

kubectl -n azure-iot-operations get secret opc-plc-default-application-cert -o jsonpath='{.data.tls\.crt}' | base64 -d > opcplc-000000.crt
kubectl -n azure-iot-operations get secret opc-plc-default-application-cert -o jsonpath='{.data.tls\.crt}' | %{ [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($_)) } > opcplc-000000.crt

So fügen Sie das Zertifikat des Simulators zur Vertrauensliste des Connectors hinzu:

  1. Wechseln Sie zur Web-UI für Betriebserfahrungen und melden Sie sich mit Ihren Microsoft Entra-ID-Anmeldeinformationen an.

  2. Wählen Sie Ihre Website aus. Wenn Sie mit einer neuen Bereitstellung arbeiten, gibt es noch keine Standorte. Sie finden den Cluster, den Sie zuvor erstellt haben, indem Sie Nicht zugewiesene Instanzen ansehen auswählen. In der Betriebserfahrung stellt eine Instanz einen Cluster dar, in dem Sie Azure IoT Einsatz bereitgestellt haben.

    Screenshot, der den Knoten „nicht zugewiesene Instanzen“ in der Einsatzerfahrung zeigt.

  3. Wählen Sie die Instanz aus, in der Sie Azure IoT Operations bereitgestellt haben:

    Screenshot der Azure IoT Operations-Instanzliste.

    Tipp

    Wenn keine Instanzen angezeigt werden, befinden Sie sich möglicherweise nicht im richtigen Microsoft Entra ID-Mandanten. Sie können den Mandanten über das Menü rechts oben auf der Einsatz-Benutzeroberfläche ändern.

  4. Wählen Sie Geräte und dann Zertifikate und Geheimnisse verwalten aus:

    Screenshot, der zeigt, wie Sie die Seite

  5. Wählen Sie auf der Seite Zertifikate und Geheimnisse die Option Neues Zertifikat hinzufügen aus:

    Screenshot, der zeigt, wie Sie der Vertrauensliste in der Betriebsumgebung ein Zertifikat hinzufügen.

  6. Wählen Sie Zertifikat hochladen und dann als Zertifikatspeicher OPC UA-Vertrauensliste aus. Wählen Sie anschließend die zuvor heruntergeladenen Datei opcplc-000000.crt aus. Wählen Sie dann "Hochladen" aus:

    Screenshot eines erfolgreichen Zertifikatuploads.

  7. Wählen Sie Anwenden.

Das Anwendungsinstanzzertifikat des Simulators befindet sich nun im Connector für die Vertrauensliste von OPC UA.

Hinzufügen eines Geräts

In diesem Schritt verwenden Sie die Einsatz-Benutzeroberfläche, um ein Gerät hinzuzufügen, mit dem Sie eine Verbindung mit dem OPC PLC-Simulator herstellen können. So fügen Sie ein Gerät hinzu

  1. Wählen Sie "Geräte" und dann "Neu erstellen" aus:

    Screenshot: Seite „Geräte“ auf der Einsatz-Benutzeroberfläche

  2. Geben Sie opc-ua-connector als Gerätenamen ein, und wählen Sie auf der Kachel Microsoft.OpcUa die Option Neu aus:

    Screenshot: Hinzufügen eines Geräts auf der Einsatz-Benutzeroberfläche

  3. Geben Sie die folgenden Informationen zum eingehenden Microsoft.OpcUa-Endpunkt ein:

    Feld Wert
    Endpunktname opc-ua-connector-0
    URL des OPC UA-Servers opc.tcp://opcplc-000000:50000
    Benutzerauthentifizierungsmodus Username password

In diesem Lernprogramm fügen Sie Ihrer Azure Key Vault-Instanz neue Geheimnisse aus der Web-UI der Betriebserfahrung hinzu. Die geheimen Schlüssel werden automatisch mit Ihrem Kubernetes-Cluster synchronisiert:

  1. Um einen Benutzernamenverweis hinzuzufügen, wählen Sie "Verweis hinzufügen" und dann " Neu erstellen" aus.

  2. Geben Sie plcusername als geheimen Namen und contosouser als geheimen Wert ein. Wählen Sie dann Anwenden aus.

  3. Um einen Kennwortverweis hinzuzufügen, wählen Sie "Verweis hinzufügen" und dann " Neu erstellen" aus.

  4. Geben Sie plcpassword als geheimer Name und das Kennwort ein, das Sie der Datei opc-plc-deployment.yaml als geheimen Wert hinzugefügt haben. Wählen Sie dann Anwenden aus.

  5. Wählen Sie auf der Seite Gerätedetails die Option Weiter aus, um zur Seite Zusätzliche Informationen zu wechseln.

  6. Auf der Seite Benutzerdefinierte Eigenschaft hinzufügen können Sie optional benutzerdefinierte Eigenschaften aktualisieren oder zum Gerät hinzufügen. Wählen Sie Weiter aus, wenn Sie fertig sind.

  7. Um die Gerätedefinition auf der Seite Zusammenfassung zu speichern, wählen Sie Erstellen aus.

Diese Konfiguration stellt ein neues Gerät namens opc-ua-connector mit dem Endpunkt opc-ua-connector-0 im Cluster bereit. Sie können das Gerät im Azure-Portal anzeigen oder kubectl verwenden, um die Geräte in Ihrem Kubernetes-Cluster anzuzeigen:

kubectl get device -n azure-iot-operations

Sie können die Geheimnisse plcusername und plcpassword in der Azure Key Vault-Instanz in Ihrer Ressourcengruppe sehen. Die Geheimnisse werden mit Ihrem Kubernetes-Cluster synchronisiert, in dem Sie sie mithilfe des kubectl get secret -n azure-iot-operations Befehls sehen können. Sie können die Geheimnisse auch in den Betriebsvorgängen auf der Seite Verwalten synchronisierter Geheimnisse sehen.

Verwalten der Ressourcen

Nachdem Sie Ihre Instanz in der Ereigniserfahrung ausgewählt haben, wird die verfügbare Liste der Ressourcen auf der Seite Ressourcen angezeigt. Wenn es noch keine Ressourcen gibt, ist diese Liste leer:

Screenshot der leeren Ressourcenliste von Azure IoT Operations.

Erstellen eines Medienobjekts

Um eine Ressource zu erstellen, wählen Sie "Ressource erstellen" aus. Geben Sie dann die folgenden Informationen für die Ressource ein:

Feld Wert
Eingehender Endpunkt opc-ua-connector-0
Ressourcenname thermostat
Beschreibung A simulated thermostat asset

Entfernen Sie die vorhandenen benutzerdefinierten Eigenschaften, und fügen Sie die folgenden benutzerdefinierten Eigenschaften hinzu. Achten Sie darauf, die genauen Eigenschaftennamen zu verwenden, da die Power BI-Vorlage diese in einem späteren Tutorial abfragt:

Eigenschaftenname Eigenschaftendetails
Batch 102
Kunde Contoso
Ausrüstung Baustein
isSpare Wahr
Standort Seattle

Screenshot der Azure IoT Operations-Ressourcendetailseite.

Wählen Sie "Weiter" aus, um zur Seite " Datasets " zu wechseln.

Erstellen eines Datasets

Um ein Dataset zu erstellen, wählen Sie "Dataset erstellen" aus. Geben Sie die in der folgenden Tabelle gezeigten Datasetdetails ein:

Feld Wert
Datensatzname thermostat
Bestimmungsort MQTT
Thema azure-iot-operations/data/thermostat

Wählen Sie "Erstellen und Weiter", um das Dataset zu speichern, und gehen Sie zur Seite "Datenpunkte".

Tipp

Sie können "Standardeinstellungen verwalten" auswählen, um das Standard-Samplingintervall und die Warteschlangengröße für jeden Datenpunkt zu ändern.

Erstellen von OPC UA-Datenpunkten

Fügen Sie auf der Seite "Datenpunkte" einen OPC UA-Datenpunkt hinzu. Um einen Datenpunkt hinzuzufügen, wählen Sie "Datenpunkt hinzufügen" aus. Geben Sie die Datenpunktdetails ein, die in der folgenden Tabelle angezeigt werden:

Datenquelle Datenpunktname
ns=3;s=SpikeData Temperatur

Der Datenquellenwert hier ist ein bestimmter OPC UA Simulatorknoten. Der Knoten generiert Zufallswerte innerhalb eines angegebenen Bereichs und hat auch intermittierende Spitzen.

Wählen Sie Speichern aus.

Screenshot von Azure IoT Operations – Seite

Wählen Sie "Weiter" aus, um zur Seite " Ereignisgruppen " zu wechseln, und wählen Sie dann "Weiter " aus, um zur Seite " Verwaltungsgruppen " zu wechseln, und dann " Weiter ", um zur Seite " Überprüfen " zu wechseln.

Überprüfung

Überprüfen Sie Ihre Ressourcen- und Tagdetails, und nehmen Sie alle gewünschten Anpassungen vor, bevor Sie Erstellen auswählen:

Screenshot der Seite „Ressourcenüberprüfung erstellen“ von Azure IoT Einsatz.

Mit dieser Konfiguration wird eine neue Ressource mit dem Namen thermostat für den Cluster bereitgestellt. Sie können auch kubectl verwenden, um die Ressourcen lokal in Ihrem Cluster anzuzeigen.

kubectl get assets.namespace -n azure-iot-operations

Anzeigen von Ressourcen im Azure-Portal

Um das Gerät und die Ressource anzuzeigen, das Sie im Azure-Portal erstellt haben, wechseln Sie zu Azure-Geräteregistrierung:

Screenshot: Azure-Portal mit Azure-Geräteregistrierung

In diesem Portal können Sie die Ressourcendetails anzeigen. Wählen Sie JSON-Ansicht aus, um weitere Details zu erhalten:

Screenshot der Azure IoT Operations-Ressourcendetails im Azure-Portal.

Überprüfen, ob Daten fließen

Überprüfen Sie mit dem Tool mosquitto_sub, ob Daten an den MQTT-Broker fließen. In diesem Beispiel führen Sie das mosquitto_sub-Tool in Ihrem Kubernetes-Cluster aus:

  1. Führen Sie den folgenden Befehl aus, um einen Pod bereitzustellen, der die Tools mosquitto_pub und mosquitto_sub enthält, die für die Interaktion mit dem MQTT-Broker im Cluster nützlich sind:

    kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/explore-iot-operations/main/samples/quickstarts/mqtt-client.yaml
    

    Das folgende Codeschnipsel zeigt die YAML-Datei, die Sie angewendet haben:

    # Important: do not use in production environments
    # Create a service account
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: mqtt-client
      namespace: azure-iot-operations
    ---
    # Creates a pod with mosquitto-clients and mqttui utilities in your cluster
    apiVersion: v1
    kind: Pod
    metadata:
      name: mqtt-client
      # The namespace must match the IoT MQ BrokerListener's namespace
      # Otherwise use the long hostname: aio-broker.azure-iot-operations.svc.cluster.local
      namespace: azure-iot-operations
    spec:
      # Use the "mqtt-client" service account which comes with default deployment
      # Otherwise create it with `kubectl create serviceaccount mqtt-client -n azure-iot-operations`
      serviceAccountName: mqtt-client
      containers:
        # Install mosquitto and mqttui utilities on Alpine linux
      - image: alpine
        name: mqtt-client
        command: ["sh", "-c"]
        args: ["apk add mosquitto-clients mqttui && sleep infinity"]
        resources:
          limits:
            cpu: 500m
            memory: 200Mi
          requests:
            cpu: 100m
            memory: 100Mi
        volumeMounts:
        - name: broker-sat
          mountPath: /var/run/secrets/tokens
        - name: trust-bundle
          mountPath: /var/run/certs
      volumes:
      - name: broker-sat
        projected:
          sources:
          - serviceAccountToken:
              path: broker-sat
              audience: aio-internal # Must match audience in BrokerAuthentication
              expirationSeconds: 86400
      - name: trust-bundle
        configMap:
          name: azure-iot-operations-aio-ca-trust-bundle # Default root CA cert
    

    Vorsicht

    Diese Konfiguration ist nicht sicher. Verwenden Sie diese Konfiguration nicht in einer Produktionsumgebung.

  2. Wenn der mqtt-client-Pod ausgeführt wird, führen Sie den folgenden Befehl aus, um eine Shellumgebung im erstellten Pod zu erstellen:

    kubectl exec --stdin --tty mqtt-client -n azure-iot-operations -- sh
    
  3. Führen Sie auf der Bash-Shell im mqtt-client-Pod den folgenden Befehl aus, um mithilfe des Tools mosquitto_sub eine Verbindung mit dem MQTT-Broker herzustellen und verwenden Sie einen Platzhalter, um die data/#-Themen zu abonnieren:

    mosquitto_sub --host aio-broker --port 18883 --topic "azure-iot-operations/data/#" -v --debug --cafile /var/run/certs/ca.crt -D CONNECT authentication-method 'K8S-SAT' -D CONNECT authentication-data $(cat /var/run/secrets/tokens/broker-sat)
    

    Dieser Befehl wird weiterhin ausgeführt und zeigt Nachrichten an, sobald sie in einem der data/#-Themen eingehen, bis Sie STRG+C drücken, um ihn zu beenden. Um die Shell-Umgebung zu beenden, geben Sie „exit“ ein.

Um zu überprüfen, ob das Thermostat-Asset, das Sie hinzugefügt haben, Daten veröffentlicht, überprüfen Sie die Nachrichten im azure-iot-operations/data/thermostat-Thema.

Client $server-generated/0000aaaa-11bb-cccc-dd22-eeeeee333333 received PUBLISH (d0, q0, r0, m0, 'azure-iot-operations/data/thermostat', ... (92 bytes))
azure-iot-operations/data/thermostat {"temperature":{"SourceTimestamp":"2025-02-14T11:27:44.5030912Z","Value":48.17536741017152}}
Client $server-generated/0000aaaa-11bb-cccc-dd22-eeeeee333333 received PUBLISH (d0, q0, r0, m0, 'azure-iot-operations/data/thermostat', ... (90 bytes))
azure-iot-operations/data/thermostat {"temperature":{"SourceTimestamp":"2025-02-14T11:27:45.50333Z","Value":98.22872507286887}}
Client $server-generated/0000aaaa-11bb-cccc-dd22-eeeeee333333 received PUBLISH (d0, q0, r0, m0, 'azure-iot-operations/data/thermostat', ... (92 bytes))
azure-iot-operations/data/thermostat {"temperature":{"SourceTimestamp":"2025-02-14T11:27:46.503381Z","Value":12.533323356430426}}

Wenn keine Daten fließen, starten Sie den aio-opc-opc.tcp-1-Pod neu.

  1. Um den Namen ihres aio-opc-opc.tcp-1-Pods zu finden, führen Sie den folgenden Befehl aus:

    kubectl get pods -n azure-iot-operations
    

    Der Name Ihres Pods sieht aus wie aio-opc-opc.tcp-1-849dd78866-vhmz6.

  2. Starten Sie den aio-opc-opc.tcp-1-Pod neu, indem Sie einen Befehl verwenden, der wie das folgende Beispiel aussieht. Verwenden Sie den aio-opc-opc.tcp-1-Pod aus dem vorherigen Schritt:

    kubectl delete pod aio-opc-opc.tcp-1-849dd78866-vhmz6 -n azure-iot-operations
    

Die Beispieltags, die Sie im vorherigen Tutorial hinzugefügt haben, generieren Nachrichten aus Ihrer Ressource, die wie im folgenden Beispiel aussehen:

{
    "temperature":{
        "Value":24.86898871648548,
        "SourceTimestamp":"2025-04-25T14:50:07.195274Z"
    }
}

Wie haben wir das Problem gelöst?

In diesem Tutorial haben Sie ein Gerät hinzugefügt und dann eine Ressource und Tags definiert. Die Ressourcen und Tags modellieren Daten des OPC UA-Servers, um die Verwendung der Daten in einem MQTT-Broker und anderen Downstreamprozessen zu vereinfachen.

Sie haben anmeldeinformationen verwendet, die in Azure Key Vault gespeichert sind, um sich beim OPC UA-Server zu authentifizieren. Dieser Ansatz ist sicherer als die Hartcodierung von Anmeldeinformationen in Ihrer Objektdefinition.

Sie verwenden die von Ihnen im nächsten Tutorial definierte Thermostat-Ressource.

Bereinigen von Ressourcen

Wenn Sie mit dem nächsten Tutorial fortfahren, sollten Sie alle Ihre Ressourcen beibehalten.

Wenn Sie die Azure IoT Einsatz-Bereitstellung entfernen, aber Ihren Cluster beibehalten möchten, verwenden Sie den Befehl az iot ops delete:

az iot ops delete --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP

Wenn Sie alle im Rahmen dieser Schnellstartanleitung erstellten Ressourcen löschen möchten, löschen Sie den Kubernetes-Cluster, in dem Sie Azure IoT Einsatz bereitgestellt haben, und entfernen Sie dann die Azure-Ressourcengruppe, in der das Cluster enthalten war.

Wenn Sie Codespaces für diese Schnellstarts verwendet haben, löschen Sie Ihren Codespace aus GitHub.

Nächster Schritt

Lernprogramm: Senden von Nachrichten von Ihrem Objekt in die Cloud mithilfe eines Datenflusses.