Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym samouczku ręcznie dodasz zasoby OPC UA do klastra operacji usługi Azure IoT. Te zasoby publikują komunikaty w brokerze MQTT 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 przez ciebie zasób logiczny może mieć właściwości, punkty danych strumieniowych 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 samouczku użyjesz internetowego interfejsu użytkownika środowiska operacji do utworzenia zasobów. Możesz również użyć interfejsu wiersza polecenia platformy Azure, aby wykonać niektóre z tych zadań.
Wymagania wstępne
Instancja Azure IoT Operations z włączonymi ustawieniami zabezpieczeń wdrożona w klastrze Kubernetes. Aby utworzyć wystąpienie, użyj jednej z następujących metod, aby wdrożyć Azure IoT Operations.
- Szybki start: uruchamianie operacji usługi Azure IoT w usłudze GitHub Codespaces z językiem K3s zawiera proste instrukcje wdrażania wystąpienia operacji usługi Azure IoT, którego można użyć w samouczkach. Następnie, aby włączyć bezpieczne ustawienia, wykonaj kroki opisane w artykule Włączanie bezpiecznych ustawień w operacjach usługi Azure IoT.
- Omówienie wdrażania zawiera szczegółowe instrukcje wdrażania wystąpienia operacji usługi Azure IoT w systemie Windows przy użyciu usługi Azure Kubernetes Service Edge Essentials lub Ubuntu przy użyciu platformy K3s. Wykonaj kroki opisane w artykule dotyczącym wdrażania bezpiecznego wdrożenia ustawień i zainstaluj najnowszą wersję.
Ważne
Nie można włączyć bezpiecznych ustawień w utworzonym wystąpieniu, jeśli wykonasz kroki opisane w artykule Szybki start: uruchamianie operacji usługi Azure IoT w usłudze GitHub Codespaces za pomocą języka K3s .
Po włączeniu ustawień zabezpieczeń grupa zasobów zawierająca instancję operacji Azure IoT zawiera również następujące zasoby:
- Instancja usługi Azure Key Vault do przechowywania tajemnic do zsynchronizowania z Twoim klastrem Kubernetes.
- Tożsamość zarządzana przypisana przez użytkownika, która jest używana przez operacje Azure IoT do uzyskiwania dostępu do instancji Azure Key Vault.
- Tożsamość zarządzana przypisana przez użytkownika, której składniki operacyjne usługi Azure IoT, takie jak przepływy danych, mogą używać do łączenia się z punktami końcowymi w chmurze, takimi jak Azure Event Hubs.
- Przestrzeń nazw usługi Azure Device Registry do przechowywania zasobów i urządzeń.
Upewnij się, że podczas konfigurowania bezpiecznych ustawień nadasz kontu użytkownika uprawnienia do zarządzania wpisami tajnymi za pomocą roli oficera wpisów tajnych usługi Key Vault .
Aby zalogować się do internetowego interfejsu użytkownika środowiska operacji, musisz mieć konto Microsoft Entra ID 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 Interfejs użytkownika sieci Web środowiska operacji.
O ile nie określono inaczej, możesz uruchomić polecenia konsoli w tym samouczku w środowisku powłoki Bash lub programu PowerShell.
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 MQTT i przepływy danych.
W tym samouczku wyjaśniono również, jak używać poświadczeń przechowywanych w usłudze Azure Key Vault do uwierzytelniania na symulowanym serwerze OPC UA.
Wdrażanie symulatora OPC PLC
W tym samouczku jest używany symulator OPC PLC do generowania przykładowych danych. Aby wdrożyć symulator OPC PLC:
Pobierz plik opc-plc-tutorial-deployment.yaml z repozytorium GitHub. Aby pobrać plik przy użyciu wiersza polecenia, uruchom następujące polecenie:
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.yamlopc-plc-tutorial-deployment.yamlOtwórz plik pobrany w edytorze tekstów i zmień hasło symulatora. Hasło jest ustawiane przy użyciu parametru--defaultpassword. Zanotuj wartość hasła. Będzie ona potrzebna później. Następnie zapisz zmiany.Aby wdrożyć symulator OPC PLC w klastrze, uruchom następujące polecenie:
kubectl apply -f opc-plc-tutorial-deployment.yaml
Poniższy fragment kodu przedstawia zastosowany plik YAML:
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
Ustanawianie wzajemnego zaufania
Aby symulator OPC PLC mógł wysyłać dane do łącznika dla OPC UA, należy ustanowić wzajemne zaufanie między nimi. W tym samouczku symulator OPC PLC i łącznik OPC UA używają certyfikatów z podpisem własnym w celu ustanowienia wzajemnego zaufania z łącznikiem OPC UA:
- Certyfikat instancji aplikacji symulatora jest przechowywany w sekrecie
opc-plc-default-application-certKubernetes. - Łącznik certyfikatu wystąpienia aplikacji OPC UA jest przechowywany w kluczu tajnym
aio-opc-opcuabroker-default-application-certplatformy Kubernetes.
Ważne
W środowisku produkcyjnym użyj certyfikatów wystąpień aplikacji klasy korporacyjnej, aby ustanowić wzajemne zaufanie. Aby dowiedzieć się więcej, zobacz Skonfiguruj certyfikat instancji aplikacji klasy korporacyjnej.
Dodawanie certyfikatu łącznika do listy zaufania symulatora
Każdy serwer OPC UA ma własny mechanizm zarządzania listą zaufania. Aby dodać certyfikat łącznika do listy zaufania symulatora, uruchom następujące polecenia:
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}"
Dodawanie certyfikatu symulatora do listy zaufania łącznika
Każdy typ serwera OPC UA ma swój własny mechanizm zarządzania certyfikatem aplikacji. Aby pobrać certyfikat symulatora do pliku o nazwie opcplc-000000.crt, uruchom następujące polecenie:
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
Aby dodać certyfikat symulatora do listy zaufania łącznika:
Przejdź do internetowego interfejsu użytkownika środowiska operacji i zaloguj się przy użyciu poświadczeń identyfikatora Entra firmy Microsoft.
Wybierz witrynę. Jeśli pracujesz z nowym wdrożeniem, nie ma jeszcze żadnych stron internetowych. Klaster utworzony wcześniej można znaleźć, wybierając pozycję Wyświetl nieprzypisane wystąpienia. W środowisku operacji wystąpienie reprezentuje klaster, w którym wdrożono operacje usługi Azure IoT.
Wybierz wystąpienie, w którym wdrożono operacje 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 środowisku operacji.
Wybierz pozycję Urządzenia , a następnie pozycję Zarządzaj certyfikatami i wpisami tajnymi:
Na stronie Certyfikaty i wpisy tajne wybierz pozycję Dodaj nowy certyfikat:
Wybierz pozycję Przekaż certyfikat, wybierz listę zaufania OPC UA jako magazyn certyfikatów, a następnie wybierz
opcplc-000000.crtpobrany wcześniej plik. Następnie wybierz pozycję Przekaż:Wybierz i zastosuj.
Certyfikat instancji aplikacji symulatora znajduje się teraz na liście zaufania łącznika OPC UA.
Dodawanie urządzenia
W tym kroku użyjesz środowiska operacji, aby dodać urządzenie, które umożliwia nawiązywanie połączenia z symulatorem OPC PLC. Aby dodać urządzenie:
Wybierz pozycję Urządzenia , a następnie pozycję Utwórz nowe:
Wprowadź
opc-ua-connectorjako nazwę urządzenia i wybierz pozycję Nowy na kafelku Microsoft.OpcUa :Wprowadź następujące informacje o przychodzącym punkcie końcowym microsoft.OpcUa:
Pole Wartość Nazwa punktu końcowego opc-ua-connector-0Adres URL serwera OPC UA opc.tcp://opcplc-000000:50000Tryb uwierzytelniania użytkownika Username password
W tym samouczku dodasz nowe tajemnice do wystąpienia Azure Key Vault za pomocą interfejsu użytkownika w środowisku operacyjnym. Wpisy tajne są automatycznie synchronizowane z klastrem Kubernetes:
Aby dodać odwołanie do nazwy użytkownika, wybierz pozycję Dodaj odwołanie, a następnie pozycję Utwórz nową.
Wprowadź
plcusernamejako nazwę wpisu tajnego icontosouserjako wartość wpisu tajnego. Następnie wybierz pozycję Zastosuj.Aby dodać odwołanie do hasła, wybierz pozycję Dodaj odwołanie, a następnie pozycję Utwórz nową.
Wprowadź
plcpasswordjako tajną nazwę i hasło dodane do pliku opc-plc-deployment.yaml jako tajną wartość. Następnie wybierz pozycję Zastosuj.Na stronie Szczegóły urządzenia wybierz pozycję Dalej , aby przejść do strony Dodatkowe informacje .
Na stronie Dodawanie właściwości niestandardowej możesz opcjonalnie zaktualizować lub dodać właściwości niestandardowe do urządzenia. Po zakończeniu wybierz pozycję Dalej .
Aby zapisać definicję urządzenia na stronie Podsumowanie , wybierz pozycję Utwórz.
Ta konfiguracja wdraża nowe urządzenie o nazwie opc-ua-connector z punktem końcowym wywoływanym opc-ua-connector-0 w klastrze. Urządzenie można wyświetlić w witrynie Azure Portal lub użyć kubectl polecenia , aby wyświetlić urządzenia w klastrze Kubernetes:
kubectl get device -n azure-iot-operations
Wpisy tajne i plcusername są widoczne plcpassword w wystąpieniu usługi Azure Key Vault w grupie zasobów. Wpisy tajne są synchronizowane z klastrem Kubernetes, gdzie można je wyświetlić za pomocą kubectl get secret -n azure-iot-operations polecenia . Możesz również zobaczyć tajemnice w doświadczeniu operacyjnym na stronie Zarządzanie zsynchronizowanymi tajemnicami.
Zarządzanie zasobami
Po wybraniu wystąpienia w środowisku operacji zostanie wyświetlona lista dostępnych zasobów na stronie Zasoby . Jeśli jeszcze nie ma żadnych zasobów, ta lista jest pusta:
Tworzenie składnika majątku
Aby utworzyć zasób, wybierz pozycję Utwórz zasób. Następnie wprowadź następujące informacje o zasobie:
| Pole | Wartość |
|---|---|
| Przychodzący punkt końcowy | opc-ua-connector-0 |
| Nazwa zasobu | thermostat |
| opis | A simulated thermostat asset |
Usuń istniejące właściwości niestandardowe i dodaj następujące właściwości niestandardowe. Zachowaj ostrożność, aby używać dokładnych nazw właściwości, ponieważ szablon usługi Power BI w późniejszym samouczku wykonuje dla nich zapytania:
| Nazwa właściwości | Szczegóły właściwości |
|---|---|
| partia | 102 |
| klient | Contoso |
| indywidualnej | Kocioł |
| isSpare | prawda |
| lokalizacja | Seattle |
Wybierz przycisk Dalej , aby przejść do strony Zestawy danych .
Tworzenie zestawu danych
Aby utworzyć zestaw danych, wybierz pozycję Utwórz zestaw danych. Wprowadź szczegóły zestawu danych pokazane w poniższej tabeli:
| Pole | Wartość |
|---|---|
| Nazwa zestawu danych | thermostat |
| Destynacja | MQTT |
| Temat | azure-iot-operations/data/thermostat |
Wybierz Utwórz i dalej, aby zapisać zestaw danych i przejść do strony Punkty danych.
Napiwek
Możesz wybrać pozycję Zarządzaj ustawieniami domyślnymi , aby zmienić domyślny interwał próbkowania i rozmiar kolejki dla każdego punktu danych.
Tworzenie punktów danych OPC UA
Dodaj punkt danych OPC UA na stronie Punkty danych . Aby dodać punkt danych, wybierz pozycję Dodaj punkt danych. Wprowadź szczegóły punktu danych pokazane w poniższej tabeli:
| Źródło danych | Nazwa punktu danych |
|---|---|
| ns=3; s=SpikeData | temperatura |
Wartość źródła danych w tym miejscu jest określonym węzłem symulatora OPC UA. Węzeł generuje losowe wartości w określonym zakresie, a także ma sporadyczne skoki.
Wybierz Zapisz.
Wybierz przycisk Dalej , aby przejść do strony Grupy zdarzeń , a następnie wybierz przycisk Dalej , aby przejść do strony Grupy zarządzania , a następnie 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:
Ta konfiguracja wdraża nowy zasób wywoływany thermostat w klastrze. Możesz również użyć kubectl, aby wyświetlić zasoby lokalnie w klastrze.
kubectl get assets.namespace -n azure-iot-operations
Wyświetlanie zasobów w witrynie Azure Portal
Aby wyświetlić urządzenie i zasób utworzony w witrynie Azure Portal, przejdź do usługi Azure Device Registry:
Portal umożliwia wyświetlanie szczegółów zasobu. Wybierz widok JSON, aby uzyskać więcej szczegółów:
Sprawdzanie, czy dane przepływają
Sprawdź, czy dane przepływają do brokera MQTT przy użyciu narzędzia mosquitto_sub . W tym przykładzie uruchomisz narzędzie mosquitto_sub w klastrze Kubernetes:
Uruchom następujące polecenie, aby wdrożyć zasobnik zawierający narzędzia mosquitto_pub i mosquitto_sub przydatne do interakcji z brokerem MQTT w klastrze:
kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/explore-iot-operations/main/samples/quickstarts/mqtt-client.yamlPoniższy fragment kodu przedstawia zastosowany plik YAML:
# 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 certUwaga
Ta konfiguracja nie jest bezpieczna. Nie używaj tej konfiguracji w środowisku produkcyjnym.
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 -- shW powłoce Bash w zasobniku mqtt-client uruchom następujące polecenie, aby połączyć się z brokerem MQTT przy użyciu narzędzia mosquitto_sub i użyć symbolu wieloznakowego, aby subskrybować
data/#tematy: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)To polecenie jest nadal uruchamiane i wyświetla komunikaty w miarę ich nadejścia w dowolnych
data/#tematach do momentu naciśnięcia Ctrl+C , aby go zatrzymać. Aby zamknąć środowisko powłoki, wpiszexit.
Aby sprawdzić, czy dodany zasób termostatu publikuje dane, wyświetl komunikaty w temacie azure-iot-operations/data/thermostat :
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}}
Jeśli nie ma przepływanych danych, uruchom ponownie zasobnik aio-opc-opc.tcp-1 :
Znajdź nazwę
aio-opc-opc.tcp-1zasobnika przy użyciu następującego polecenia:kubectl get pods -n azure-iot-operationsNazwa zasobnika wygląda następująco:
aio-opc-opc.tcp-1-849dd78866-vhmz6.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-1Uż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 samouczku generują komunikaty z zasobu, które wyglądają jak w poniższym przykładzie:
{
"temperature":{
"Value":24.86898871648548,
"SourceTimestamp":"2025-04-25T14:50:07.195274Z"
}
}
Jak rozwiązaliśmy ten problem?
W tym samouczku dodano urządzenie, 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żyto poświadczeń przechowywanych w usłudze Azure Key Vault do uwierzytelniania na serwerze OPC UA. Takie podejście jest bezpieczniejsze niż twarde kodowanie poświadczeń w definicji zasobu.
Użyj zasobu termostatu zdefiniowanego w następnym samouczku.
Czyszczenie zasobów
Jeśli przejdziesz do następnego samouczka, zachowaj wszystkie zasoby.
Jeśli chcesz usunąć wdrożenie operacji usługi Azure IoT, ale zachować klaster, użyj polecenia az iot ops delete :
az iot ops delete --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP
Jeśli chcesz usunąć wszystkie zasoby utworzone na potrzeby tego przewodnika Szybki start, usuń klaster Kubernetes, w którym wdrożono operacje usługi Azure IoT, a następnie usuń grupę zasobów platformy Azure zawierającą klaster.
Jeśli na potrzeby tych przewodników Szybki start użyto usługi Codespaces, usuń środowisko Codespace z usługi GitHub.
Następny krok
Samouczek: wysyłanie wiadomości z zasobu do chmury za pomocą przepływu danych.