Freigeben über


Schnellstart: Hinzufügen von OPC UA-Ressourcen zu Ihrem Azure IoT Einsatz (Preview)-Cluster

Wichtig

Die von Azure Arc unterstützte Vorschauversion von „Azure IoT Einsatz“ befindet sich derzeit in der Vorschauphase. Sie sollten diese Vorschausoftware nicht in Produktionsumgebungen verwenden.

Sie müssen eine neue Installation von „Azure IoT Einsatz“ bereitstellen, wenn ein allgemein verfügbares Release verfügbar wird. Sie werden kein Upgrade für eine Preview-Installation durchführen können.

Die zusätzlichen Nutzungsbestimmungen für Microsoft Azure-Vorschauen enthalten rechtliche Bedingungen. Sie gelten für diejenigen Azure-Features, die sich in der Beta- oder Vorschauversion befinden oder aber anderweitig noch nicht zur allgemeinen Verfügbarkeit freigegeben sind.

In diesem Schnellstart fügen Sie der Vorschau ihres Azure IoT Operations-Clusters 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 von Ihnen definierte logische Ressource kann Eigenschaften, Stream-Telemetrie 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 Schnellstart 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

Sie haben eine Instanz von Azure IoT Operations Preview in einem Kubernetes-Cluster bereitgestellt. Das Dokument Schnellstart: Ausführen der Azure IoT Operations Preview in GitHub Codespaces mit K3s enthält einfache Anweisungen zum Bereitstellen einer Azure IoT Operations-Instanz, die Sie für die Schnellstarts verwenden können.

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 dieser Schnellstartanleitung 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. Diese Modellierung erleichtert das Verständnis der Daten und deren Verwendung in nachgelagerten Prozessen wie dem MQTT-Broker und in Dataflows.

Bereitstellen des OPC PLC-Simulators

Dieser Schnellstart verwendet den OPC PLC-Simulator, um Beispieldaten zu generieren. Um den OPC PLG-Simulator bereitzustellen, führen Sie den folgenden Befehl aus:

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

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

apiVersion: apps/v1
kind: Deployment
metadata:
  name: opc-plc-deployment
  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:
          - "--ph=opcplc-000000"
          - "--cdn=opcplc-000000"
          - "--ut"
          - "--trustowncert" # Can we remove?
          - "--sn=25"
          - "--sr=10"
          - "--fn=2000"
          - "--veryfastrate=1000"          
          - "--gn=5"
          - "--pn=50000"
          - "--maxsessioncount=100"
          - "--maxsubscriptioncount=100"
          - "--maxqueuedrequestcount=2000"          
          - "--ses"
          - "--alm"
          - "--at=FlatDirectory"
          - "--drurs"        
          - "--ll-debug"
        ports:
        - containerPort: 50000
        volumeMounts:
          - name: opc-plc-tls
            mountPath: /app/pki/own
          - name: opc-plc-tls
            mountPath: /app/pki/trusted # Trust own cert
      volumes:
        - name: opc-plc-tls
          secret:
            secretName: opc-plc-tls
---
apiVersion: v1
kind: Service
metadata:
  name: opcplc-000000
  namespace: azure-iot-operations
spec:
  type: ClusterIP
  selector:
    app.kubernetes.io/component: opcplc-000000
  ports:
    - port: 50000
      protocol: TCP
      targetPort: 50000
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: opc-plc-certificate
  namespace: azure-iot-operations
spec:
  secretName: opc-plc-tls
  duration: 2160h # 90d
  renewBefore: 360h # 15d
  issuerRef:
    name: aio-opc-opcuabroker-default-root-ca-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

Achtung

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

Anmelden bei der Einsatzerfahrung

Verwenden Sie die Einsatzerfahrung, um Ressourcenendpunkte und Ressourcen zu erstellen und OPC UA-Tags und -Ereignisse zu abonnieren.

Navigieren Sie zur Einsatzerfahrung in Ihrem Browser, und melden Sie sich mit Ihren Microsoft Entra ID-Anmeldeinformationen an.

Auswählen Ihrer Site

Eine Site ist eine Sammlung von Azure IoT Einsatz-Instanzen. Websites gruppieren in der Regel Instanzen nach physischem Standort und erleichtern OT-Benutzern das Auffinden und Verwalten von Ressourcen. Ihr IT-Administrator erstellt Websites und weist ihnen Azure IoT Einsatz-Instanzen zu. Da Sie mit einer neuen Bereitstellung arbeiten, gibt es noch keine Websites. Sie finden den Cluster, den Sie in der vorherigen Schnellstartanleitung erstellt haben, indem Sie Nicht zugewiesene Instanzen 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.

Auswählen Ihrer Instanz

Wählen Sie die Instanz aus, in der Sie im vorherigen Schnellstart Azure IoT Einsatz bereitgestellt haben:

Screenshot der Liste der Azure IoT Operations-Instanzen.

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.

Hinzufügen eines Ressourcenendpunkts

Wenn Sie Azure IoT Einsatz im vorherigen Artikel bereitgestellt haben, haben Sie einen integrierten OPC PLC-Simulator eingefügt. In diesem Schritt fügen Sie einen Ressourcenendpunkt hinzu, mit dem Sie eine Verbindung mit dem OPC PLC-Simulator herstellen können.

Hinzufügen eines Ressourcenendpunkts:

  1. Wählen Sie Ressourcenendpunkte und dann Ressourcenendpunkt erstellen aus:

    Screenshot der Seite „Ressourcenendpunkte“ auf der Einsatzerfahrung.

  2. Geben Sie die folgenden Informationen für den Endpunkt ein:

    Feld Wert
    Name des Ressourcenendpunkts opc-ua-connector-0
    URL des OPC UA-Servers opc.tcp://opcplc-000000:50000
    Benutzerauthentifizierungsmodus Anonymous
  3. Wählen Sie Erstellen aus, um die Definition zu speichern.

    Mit dieser Konfiguration wird einen neuen Ressourcenendpunkt mit dem Namen opc-ua-connector-0 für den Cluster bereitgestellt. Sie können kubectl verwenden, um die Ressourcenendpunkte anzuzeigen:

    kubectl get assetendpointprofile -n azure-iot-operations
    

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 Azure IoT Einsatz-Ressourcenliste.

Eine Anlage erstellen

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

Feld Wert
Ressourcenendpunkt opc-ua-connector-0
Name der Anlage 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 in einer späteren Schnellstart diese abfragt:

Eigenschaftenname Eigenschaftendetails
batch 102
customer Contoso
equipment Baustein
isSpare true
location Seattle

Screenshot der Detailseite der Azure IoT Einsatz-Ressourcen.

Wählen Sie Weiter aus, um zur Seite Tags hinzufügen zu wechseln.

Erstellen von OPC UA-Tags

Fügen Sie auf der Seite Tags hinzufügen zwei OPC UA-Tags hinzu. Um die einzelnen Tags hinzuzufügen, wählen Sie Tag oder CSV hinzufügen und dann Tag hinzufügen aus. Geben Sie die in der folgenden Tabelle gezeigten Tagdetails ein:

Knoten-ID Tagname Einblickmodus
ns=3;s=FastUInt10 Temperatur Keine
ns=3;s=FastUInt100 Tag 10 Keine

Der Einblick-Modus ist einer der folgenden Werte: None, Gauge, Counter, Histogram oder Log.

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

Screenshot der Seite „Tag hinzufügen“ von Azure IoT Einsatz.

Wählen Sie Weiter aus, um zur Seite Ereignisse hinzufügen zu wechseln, und dann Weiter, um zur Seite Überprüfen zu gelangen.

Ü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 kubectl verwenden, um die Ressourcen anzuzeigen:

kubectl get assets -n azure-iot-operations

Ü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
    # 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
    

    Achtung

    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, welches das data/thermostat-Thema abonniert hat, eine Verbindung mit dem MQTT-Broker herzustellen:

    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 im data/thermostat-Thema eingehen, bis Sie STRG+C drücken, um ihn zu beenden.

Um sicherzustellen, dass die Thermostat-Ressource, die Sie hinzugefügt haben, Daten veröffentlicht, sehen Sie sich die Telemetrie im Thema azure-iot-operations/data an:

Client $server-generated/05a22b94-c5a2-4666-9c62-837431ca6f7e received PUBLISH (d0, q0, r0, m0, 'azure-iot-operations/data/thermostat', ... (152 bytes))
{"temperature":{"SourceTimestamp":"2024-07-29T15:02:17.1858435Z","Value":4558},"Tag 10":{"SourceTimestamp":"2024-07-29T15:02:17.1858869Z","Value":4558}}
Client $server-generated/05a22b94-c5a2-4666-9c62-837431ca6f7e received PUBLISH (d0, q0, r0, m0, 'azure-iot-operations/data/thermostat', ... (152 bytes))
{"temperature":{"SourceTimestamp":"2024-07-29T15:02:18.1838125Z","Value":4559},"Tag 10":{"SourceTimestamp":"2024-07-29T15:02:18.1838523Z","Value":4559}}
Client $server-generated/05a22b94-c5a2-4666-9c62-837431ca6f7e received PUBLISH (d0, q0, r0, m0, 'azure-iot-operations/data/thermostat', ... (152 bytes))
{"temperature":{"SourceTimestamp":"2024-07-29T15:02:19.1834363Z","Value":4560},"Tag 10":{"SourceTimestamp":"2024-07-29T15:02:19.1834879Z","Value":4560}}
Client $server-generated/05a22b94-c5a2-4666-9c62-837431ca6f7e received PUBLISH (d0, q0, r0, m0, 'azure-iot-operations/data/thermostat', ... (152 bytes))
{"temperature":{"SourceTimestamp":"2024-07-29T15:02:20.1861251Z","Value":4561},"Tag 10":{"SourceTimestamp":"2024-07-29T15:02:20.1861709Z","Value":4561}}
Client $server-generated/05a22b94-c5a2-4666-9c62-837431ca6f7e received PUBLISH (d0, q0, r0, m0, 'azure-iot-operations/data/thermostat', ... (152 bytes))
{"temperature":{"SourceTimestamp":"2024-07-29T15:02:21.1856798Z","Value":4562},"Tag 10":{"SourceTimestamp":"2024-07-29T15:02:21.1857211Z","Value":4562}}

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 Schnellstart hinzugefügt haben, generieren Nachrichten aus Ihrer Ressource, die wie im folgenden Beispiel aussehen:

{
    "temperature": {
        "SourceTimestamp": "2024-08-02T13:52:15.1969959Z",
        "Value": 2696
    },
    "Tag 10": {
        "SourceTimestamp": "2024-08-02T13:52:15.1970198Z",
        "Value": 2696
    }
}

Wie haben wir das Problem gelöst?

In diesem Schnellstart haben Sie einen Ressourcenendpunkt 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 verwenden die von Ihnen im nächsten Schnellstart definierte Thermostat-Ressource.

Bereinigen von Ressourcen

Wenn Sie mit der nächsten Schnellstartanleitung 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

Schnellstart: Senden von Ressourcentelemetriedaten an die Cloud mithilfe des Data Lake-Connectors für den MQTT-Broker.