Szybki start: dodawanie zasobów OPC UA do klastra usługi Azure IoT Operations Preview

Ważne

Usługa Azure IoT Operations Preview — włączona przez usługę Azure Arc jest obecnie dostępna w wersji zapoznawczej. Nie należy używać tego oprogramowania w wersji zapoznawczej w środowiskach produkcyjnych.

Zobacz Dodatkowe warunki użytkowania wersji zapoznawczych platformy Microsoft Azure, aby zapoznać się z postanowieniami prawnymi dotyczącymi funkcji platformy Azure, które są w wersji beta lub wersji zapoznawczej albo w inny sposób nie zostały jeszcze wydane jako ogólnie dostępne.

W tym przewodniku Szybki start ręcznie dodasz zasoby OPC UA do klastra usługi Azure IoT Operations Preview. Te zasoby publikują komunikaty w brokerze usługi Azure IoT MQ (wersja zapoznawcza) w klastrze operacji usługi Azure IoT. Zazwyczaj użytkownik OT wykonuje te kroki.

Zasób to urządzenie fizyczne lub jednostka logiczna reprezentująca urządzenie, maszynę, system lub proces. Na przykład zasób fizyczny może być pompą, silnikiem, zbiornikiem lub linią produkcyjną. Zdefiniowany zasób logiczny może mieć właściwości, przesyłać strumieniowo dane telemetryczne lub generować zdarzenia.

Serwery OPC UA to aplikacje oprogramowania komunikujące się z elementami zawartości. Tagi OPC UA to punkty danych uwidaczniane przez serwery OPC UA. Tagi OPC UA mogą udostępniać dane historyczne dotyczące stanu, wydajności, jakości lub stanu zasobów w czasie rzeczywistym.

W tym przewodniku Szybki start utworzysz zasoby przy użyciu portalu Operacje usługi Azure IoT (wersja zapoznawcza). Możesz również użyć interfejsu wiersza polecenia platformy Azure, aby wykonać niektóre z tych zadań.

Wymagania wstępne

Ukończ szybki start: przed rozpoczęciem tego przewodnika Szybki start wdróż usługę Azure IoT Operations Preview w klastrze Kubernetes z obsługą usługi Arc.

Aby zalogować się do portalu Operacje usługi Azure IoT (wersja zapoznawcza), musisz mieć konto służbowe w dzierżawie, w której wdrożono operacje usługi Azure IoT. Jeśli obecnie używasz konta Microsoft (MSA), musisz utworzyć identyfikator Entra firmy Microsoft z co najmniej uprawnieniami współautora dla grupy zasobów zawierającej wystąpienie usługi Kubernetes — Azure Arc . Aby dowiedzieć się więcej, zobacz Znane problemy > z tworzeniem konta entra.

Jaki problem rozwiążemy?

Dane udostępniane przez serwery OPC UA mogą mieć złożoną strukturę i mogą być trudne do zrozumienia. Operacje usługi Azure IoT umożliwiają modelowanie zasobów OPC UA jako tagów, zdarzeń i właściwości. Modelowanie ułatwia zrozumienie danych i używanie ich w procesach podrzędnych, takich jak broker MQ i potoki przetwarzania danych usługi Azure IoT w wersji zapoznawczej.

Logowanie się do portalu operacji usługi Azure IoT (wersja zapoznawcza)

Aby utworzyć punkty końcowe zasobów, zasoby i subskrybować tagi i zdarzenia OPC UA, użyj portalu Operacje usługi Azure IoT (wersja zapoznawcza). Przejdź do portalu Azure IoT Operations (wersja zapoznawcza) w przeglądarce i zaloguj się przy użyciu poświadczeń identyfikatora Entra firmy Microsoft.

Ważne

Aby zalogować się do portalu Operacji usługi Azure IoT (wersja zapoznawcza), musisz użyć konta służbowego. Aby dowiedzieć się więcej, zobacz Znane problemy > z tworzeniem konta entra.

Wybierz witrynę

Po zalogowaniu w portalu zostanie wyświetlona lista witryn, do których masz dostęp. Każda witryna to zbiór wystąpień operacji usługi Azure IoT, w których można skonfigurować zasoby. Administrator IT jest odpowiedzialny za organizowanie wystąpień w witrynach i udzielanie dostępu użytkownikom OT w organizacji. Ponieważ pracujesz z nowym wdrożeniem, nie ma jeszcze żadnych witryn. Klaster utworzony w poprzednim przewodniku Szybki start można znaleźć, wybierając pozycję Nieprzypisane wystąpienia. W portalu wystąpienie reprezentuje klaster, w którym wdrożono operacje usługi Azure IoT.

Zrzut ekranu przedstawiający węzeł nieprzypisane wystąpienia w portalu Operacje usługi Azure IoT (wersja zapoznawcza).

Wybierz wystąpienie

Wybierz wystąpienie, w którym wdrożono operacje usługi Azure IoT w poprzednim przewodniku Szybki start:

Zrzut ekranu przedstawiający listę wystąpień operacji usługi Azure IoT.

Napiwek

Jeśli nie widzisz żadnych wystąpień, być może nie jesteś we właściwej dzierżawie identyfikatora Entra firmy Microsoft. Dzierżawę można zmienić z menu w prawym górnym rogu w portalu.

Dodawanie punktu końcowego zasobu

Po wdrożeniu operacji usługi Azure IoT wybrano wbudowany symulator OPC PLC. W tym kroku dodasz punkt końcowy zasobu, który umożliwia nawiązywanie połączenia z symulatorem OPC PLC.

Aby dodać punkt końcowy zasobu:

  1. Wybierz pozycję Zarządzaj punktami końcowymi zasobów, a następnie pozycję Utwórz punkt końcowy zasobu:

    Zrzut ekranu przedstawiający stronę punktów końcowych zasobów w portalu Operacje usługi Azure IoT (wersja zapoznawcza).

  2. Wprowadź następujące informacje o punkcie końcowym:

    Pole Wartość
    Nazwa punktu końcowego zasobu opc-ua-connector-0
    Adres URL serwera OPC UA opc.tcp://opcplc-000000:50000
    Tryb uwierzytelniania użytkownika Anonymous
    Uwierzytelnianie transportu Do not use transport authentication certificate
  3. Aby zapisać definicję, wybierz pozycję Utwórz.

    Ta konfiguracja umożliwia wdrożenie nowego punktu końcowego zasobu wywoływanego opc-ua-connector-0 w klastrze. Możesz użyć kubectl polecenia , aby wyświetlić punkty końcowe zasobu:

    kubectl get assetendpointprofile -n azure-iot-operations
    

Konfigurowanie symulatora

Te przewodniki Szybki start używają symulatora OPC PLC do generowania przykładowych danych. Aby włączyć scenariusz szybkiego startu, należy skonfigurować punkt końcowy zasobu, aby nawiązać połączenie bez wzajemnego zaufania. Ta konfiguracja nie jest zalecana w środowiskach produkcyjnych lub przedprodukcyjnych:

  1. Aby skonfigurować punkt końcowy zasobu dla scenariusza szybkiego startu, uruchom następujące polecenie:

    kubectl patch AssetEndpointProfile opc-ua-connector-0 -n azure-iot-operations --type=merge -p '{"spec":{"additionalConfiguration":"{\"applicationName\":\"opc-ua-connector-0\",\"security\":{\"autoAcceptUntrustedServerCertificates\":true}}"}}'
    

    Uwaga

    Nie używaj tej konfiguracji w środowiskach produkcyjnych ani przedprodukcyjnych. Uwidacznianie klastra w Internecie bez odpowiedniego uwierzytelniania może prowadzić do nieautoryzowanego dostępu, a nawet ataków DDOS.

    Aby dowiedzieć się więcej, zobacz sekcję Wdrażanie symulatora OPC PLC.

  2. Aby umożliwić natychmiastowe wprowadzenie zmian konfiguracji, najpierw znajdź nazwę aio-opc-supervisor zasobnika przy użyciu następującego polecenia:

    kubectl get pods -n azure-iot-operations
    

    Nazwa zasobnika wygląda następująco: aio-opc-supervisor-956fbb649-k9ppr.

  3. Uruchom ponownie zasobnik aio-opc-supervisor , używając polecenia, które wygląda jak w poniższym przykładzie. aio-opc-supervisor Użyj nazwy zasobnika z poprzedniego kroku:

    kubectl delete pod aio-opc-supervisor-956fbb649-k9ppr -n azure-iot-operations
    

Po zdefiniowaniu zasobu zasobnik łącznika OPC UA odnajduje go. Zasobnik używa punktu końcowego zasobu określonego w definicji zasobu w celu nawiązania połączenia z serwerem OPC UA. Możesz użyć kubectl polecenia , aby wyświetlić zasobnik odnajdywania, który został utworzony podczas dodawania punktu końcowego zasobu. Nazwa zasobnika wygląda następująco:aio-opc-opc.tcp-1-8f96f76-kvdbt

kubectl get pods -n azure-iot-operations

Gdy symulator OPC PLC jest uruchomiony, dane przepływa z symulatora, do łącznika, do brokera OPC UA, a na koniec do brokera MQ.

Zarządzanie zasobami

Po wybraniu wystąpienia w portalu Operacje usługi Azure IoT (wersja zapoznawcza) zostanie wyświetlona lista dostępnych zasobów na stronie Zasoby . Jeśli jeszcze nie ma żadnych zasobów, ta lista jest pusta:

Zrzut ekranu przedstawiający pustą listę elementów zawartości operacji usługi Azure IoT.

Tworzenie składnika majątku

Aby utworzyć zasób, wybierz pozycję Utwórz zasób.

Wprowadź następujące informacje o zasobie:

Pole Wartość
Nazwa zasobu thermostat
Punkt końcowy elementu zawartości opc-ua-connector-0
opis A simulated thermostat asset

Usuń istniejące właściwości niestandardowe i dodaj następujące właściwości niestandardowe. Należy zachować ostrożność przy użyciu dokładnych nazw właściwości, ponieważ szablon usługi Power BI w późniejszym przewodniku Szybki start wykonuje dla nich zapytania:

Nazwa właściwości Szczegóły właściwości
batch 102
klient Contoso
indywidualnej Kocioł
isSpare prawda
lokalizacja Seattle

Zrzut ekranu przedstawiający stronę szczegółów zasobu operacji usługi Azure IoT.

Wybierz przycisk Dalej , aby przejść do strony Dodawanie tagów .

Tworzenie tagów OPC UA

Dodaj dwa tagi OPC UA na stronie Dodawanie tagów . Aby dodać każdy tag, wybierz pozycję Dodaj tag lub csv , a następnie wybierz pozycję Dodaj tag. Wprowadź szczegóły tagu pokazane w poniższej tabeli:

Identyfikator węzła Nazwa tagu Tryb obserwacji
ns=3; s=FastUInt10 temperature Brak
ns=3; s=FastUInt100 Tag 10 Brak

Tryb obserwacji jest jedną z następujących wartości: none, , countergauge, histogramlub log.

Można zastąpić domyślny interwał próbkowania i rozmiar kolejki dla każdego tagu.

Zrzut ekranu przedstawiający stronę dodawania tagu operacje usługi Azure IoT.

Wybierz przycisk Dalej, aby przejść do strony Dodawanie zdarzeń, a następnie przycisk Dalej, aby przejść do strony Przegląd.

Wykonaj przegląd

Przed wybraniem pozycji Utwórz przejrzyj szczegóły zasobu i tagu i wprowadź potrzebne zmiany:

Zrzut ekranu przedstawiający stronę tworzenia zasobów operacji usługi Azure IoT.

Sprawdzanie, czy dane przepływają

Sprawdź, czy dane przepływają do brokera MQTT przy użyciu narzędzia mqttui . W tym przykładzie uruchomisz narzędzie mqttui w klastrze Kubernetes:

  1. Uruchom następujące polecenie, aby wdrożyć zasobnik zawierający narzędzia mqttui i mosquitto , które są przydatne do interakcji z brokerem MQ w klastrze:

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

    Poniższy fragment kodu przedstawia zastosowany plik YAML:

    # 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-mq-dmqtt-frontend.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: mq-sat
          mountPath: /var/run/secrets/tokens
        - name: trust-bundle
          mountPath: /var/run/certs
      volumes:
      - name: mq-sat
        projected:
          sources:
          - serviceAccountToken:
              path: mq-sat
              audience: aio-mq # Must match audience in BrokerAuthentication
              expirationSeconds: 86400
      - name: trust-bundle
        configMap:
          name: aio-ca-trust-bundle-test-only # Default root CA cert
    

    Uwaga

    Ta konfiguracja nie jest bezpieczna. Nie używaj tej konfiguracji w środowisku produkcyjnym.

  2. Po uruchomieniu zasobnika mqtt-client uruchom następujące polecenie, aby utworzyć środowisko powłoki w utworzonym zasobniku:

    kubectl exec --stdin --tty mqtt-client -n azure-iot-operations -- sh
    
  3. W powłoce w zasobniku mqtt-client uruchom następujące polecenie, aby nawiązać połączenie z brokerem MQ przy użyciu narzędzia mqttui :

    mqttui -b mqtts://aio-mq-dmqtt-frontend:8883 -u '$sat' --password $(cat /var/run/secrets/tokens/mq-sat) --insecure
    

Aby sprawdzić, czy dodany zasób termostatu publikuje dane, wyświetl dane telemetryczne w temacie azure-iot-operations/data :

Zrzut ekranu przedstawiający ekran przedstawiający dane telemetryczne temperatury w temacie mqttui.

Jeśli nie ma przepływanych danych, uruchom ponownie zasobnik aio-opc-opc.tcp-1 :

  1. Znajdź nazwę aio-opc-opc.tcp-1 zasobnika przy użyciu następującego polecenia:

    kubectl get pods -n azure-iot-operations
    

    Nazwa zasobnika wygląda następująco: aio-opc-opc.tcp-1-849dd78866-vhmz6.

  2. Uruchom ponownie zasobnik aio-opc-opc.tcp-1 , używając polecenia, które wygląda jak w poniższym przykładzie. aio-opc-opc.tcp-1 Użyj nazwy zasobnika z poprzedniego kroku:

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

Przykładowe tagi dodane w poprzednim przewodniku Szybki start generują komunikaty z zasobu, które wyglądają podobnie do następujących przykładów:

{
    "Timestamp": "2024-03-08T00:54:58.6572007Z",
    "MessageType": "ua-deltaframe",
    "payload": {
      "temperature": {
        "SourceTimestamp": "2023-08-10T00:54:58.2543129Z",
        "Value": 7109
      },
      "Tag 10": {
        "SourceTimestamp": "2023-08-10T00:54:58.2543482Z",
        "Value": 7109
      }
    },
    "DataSetWriterName": "thermostat",
    "SequenceNumber": 4660
}

Odnajdywanie źródeł danych OPC UA przy użyciu usługi Azure IoT Akri (wersja zapoznawcza)

W poprzedniej sekcji pokazano, jak ręcznie dodawać zasoby. Możesz również użyć usługi Azure IoT Akri w wersji zapoznawczej, aby automatycznie odnaleźć źródła danych OPC UA i utworzyć zasoby niestandardowe wystąpienia Akri reprezentujące odnalezione urządzenia. Obecnie usługa Akri nie może wykrywać i tworzyć zasobów, które można pozyskać do wersji zapoznawczej usługi Azure Device Registry.

Podczas wdrażania operacji usługi Azure IoT wdrożenie obejmuje zasobniki obsługi odnajdywania Akri. Aby sprawdzić, czy te zasobniki są uruchomione, uruchom następujące polecenie:

kubectl get pods -n azure-iot-operations | grep akri
kubectl get pods -n azure-iot-operations |  Select-String -Pattern "akri"

Dane wyjściowe z poprzedniego polecenia wyglądają jak w poniższym przykładzie:

aio-akri-otel-collector-5c775f745b-g97qv       1/1     Running   3 (4h15m ago)    2d23h
aio-akri-agent-daemonset-mp6v7                 1/1     Running   3 (4h15m ago)    2d23h

W terminalu usługi Codespaces uruchom następujące polecenie, aby zastosować nową konfigurację programu obsługi odnajdywania:

kubectl apply -f /workspaces/explore-iot-operations/samples/quickstarts/akri-opcua-asset.yaml

Poniższy fragment kodu przedstawia zastosowany plik YAML:

apiVersion: akri.sh/v0
kind: Configuration
metadata:
  name: akri-opcua-asset
  namespace: azure-iot-operations
spec:
  discoveryHandler: 
    name: opcua-asset
    discoveryDetails: "opcuaDiscoveryMethod:\n  - asset:\n      endpointUrl: \"	opc.tcp://opcplc-000000:50000\"\n      useSecurity: false\n      autoAcceptUntrustedCertificates: true\n"
  brokerProperties: {}
  capacity: 1

Aby sprawdzić konfigurację, uruchom następujące polecenie, aby wyświetlić wystąpienia usługi Akri reprezentujące źródła danych OPC UA odnalezione przez usługę Akri:

kubectl get akrii -n azure-iot-operations

Wyświetlenie wystąpienia może potrwać kilka minut.

Dane wyjściowe z poprzedniego polecenia wyglądają jak w poniższym przykładzie.

NAME                      CONFIG             SHARED   NODES                          AGE
akri-opcua-asset-dbdef0   akri-opcua-asset   true     ["k3d-k3s-default-server-0"]   45s

Teraz możesz używać tych zasobów w lokalnej przestrzeni nazw klastra.

Aby potwierdzić, że usługa Akri nawiązała połączenie z brokerem OPC UA, skopiuj i wklej nazwę wystąpienia Akri z poprzedniego kroku do następującego polecenia:

kubectl get akrii <AKRI_INSTANCE_NAME> -n azure-iot-operations -o json

Dane wyjściowe polecenia wyglądają jak w poniższym przykładzie. Ten przykładowy fragment danych wyjściowych przedstawia wartości wystąpienia brokerProperties Akri i potwierdza, że broker OPC UA jest połączony.

"spec": {

        "brokerProperties": {
            "ApplicationUri": "Boiler #2",
            "AssetEndpointProfile": "{\"spec\":{\"uuid\":\"opc-ua-broker-opcplc-000000-azure-iot-operation\"……

Jak rozwiązaliśmy ten problem?

W tym przewodniku Szybki start dodano punkt końcowy zasobu, a następnie zdefiniowano zasób i tagi. Dane modelu zasobów i tagów z serwera OPC UA ułatwiają korzystanie z danych w brokerze MQTT i innych procesach podrzędnych. Użyj zasobu termostatu zdefiniowanego w następnym przewodniku Szybki start.

Czyszczenie zasobów

Jeśli nie użyjesz tego wdrożenia dalej, usuń klaster Kubernetes, w którym wdrożono operacje usługi Azure IoT, i usuń grupę zasobów platformy Azure zawierającą klaster.

Następny krok

Szybki start: wysyłanie danych telemetrycznych zasobów do chmury przy użyciu łącznika usługi Data Lake dla usługi Azure IoT MQ.