Rychlý start: Přidání prostředků OPC UA do clusteru Azure IoT Operations Preview
Důležité
Azure IoT Operations Preview – Služba Azure Arc je aktuálně ve verzi Preview. Tento software ve verzi Preview byste neměli používat v produkčních prostředích.
Až bude dostupná obecně dostupná verze, budete muset nasadit novou instalaci operací Azure IoT. Nebudete moct upgradovat instalaci verze Preview.
Právní podmínky, které platí pro funkce Azure, které jsou ve verzi beta, verzi Preview nebo které zatím nejsou veřejně dostupné, najdete v Dodatečných podmínkách použití pro Microsoft Azure verze Preview.
V tomto rychlém startu ručně přidáte prostředky OPC UA do clusteru Azure IoT Operations Preview. Tyto prostředky publikují zprávy do zprostředkovatele MQTT ve vašem clusteru Azure IoT Operations. Tento postup obvykle provede uživatel OT.
Prostředek je fyzické zařízení nebo logická entita, která představuje zařízení, počítač, systém nebo proces. Například fyzické aktivum může být pumpa, motor, nádrž nebo výrobní linka. Logický prostředek, který definujete, může mít vlastnosti, streamovat telemetrii nebo generovat události.
Servery OPC UA jsou softwarové aplikace, které komunikují s prostředky. Značky OPC UA jsou datové body, které servery OPC UA zveřejňují. Značky OPC UA můžou poskytovat historická data o stavu, výkonu, kvalitě nebo stavu prostředků v reálném čase.
V tomto rychlém startu použijete webové uživatelské rozhraní provozního prostředí k vytvoření prostředků. Některé z těchto úloh můžete provést také pomocí Azure CLI.
Požadavky
Máte instanci Azure IoT Operations Preview nasazenou v clusteru Kubernetes. Rychlý start: Spuštění Azure IoT Operations Preview v GitHub Codespaces s K3s poskytuje jednoduché pokyny k nasazení instance Azure IoT Operations, kterou můžete použít pro rychlé starty.
Pokud se chcete přihlásit k webovému uživatelskému rozhraní provozního prostředí, potřebujete účet Microsoft Entra ID s alespoň oprávněními přispěvatele pro skupinu prostředků, která obsahuje vaši instanci Kubernetes – Azure Arc . Další informace najdete ve webovém uživatelském rozhraní provozního prostředí.
Pokud není uvedeno jinak, můžete příkazy konzoly spustit v tomto rychlém startu v prostředí Bash nebo PowerShellu.
Jaký problém vyřešíme?
Data, která servery OPC UA zpřístupňují, můžou mít složitou strukturu a mohou být obtížně pochopitelné. Operace Azure IoT poskytují způsob, jak modelovat prostředky OPC UA jako značky, události a vlastnosti. Toto modelování usnadňuje pochopení dat a jejich použití v podřízených procesech, jako je zprostředkovatel MQTT a toky dat.
Nasazení simulátoru OPC PLC
V tomto rychlém startu se k vygenerování ukázkových dat používá simulátor OPC PLC. Pokud chcete nasadit simulátor OPC PLC, spusťte následující příkaz:
kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/explore-iot-operations/main/samples/quickstarts/opc-plc-deployment.yaml
Následující fragment kódu ukazuje použitý soubor YAML:
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
Upozornění
Tato konfigurace není zabezpečená. Tuto konfiguraci nepoužívejte v produkčním prostředí.
Přihlášení k provoznímu prostředí
Pokud chcete vytvářet koncové body prostředků, prostředky a přihlásit se k odběru značek a událostí OPC UA, použijte provozní prostředí.
Přejděte do provozního prostředí v prohlížeči a přihlaste se pomocí přihlašovacích údajů Microsoft Entra ID.
Vyberte svůj web.
Web je kolekce instancí operací Azure IoT. Weby obvykle seskupují instance podle fyzického umístění a usnadňují uživatelům OT vyhledání a správu prostředků. Správce IT vytvoří weby a přiřadí jim instance provozu Azure IoT. Vzhledem k tomu, že pracujete s novým nasazením, ještě neexistují žádné weby. Cluster, který jste vytvořili v předchozím rychlém startu, najdete výběrem nepřiřazených instancí. V provozním prostředí představuje instance cluster, ve kterém jste nasadili operace Azure IoT.
Vyberte instanci.
V předchozím rychlém startu vyberte instanci, ve které jste nasadili operace Azure IoT:
Tip
Pokud nevidíte žádné instance, možná nejste ve správném tenantovi Microsoft Entra ID. Tenanta můžete změnit z pravé horní nabídky v provozním prostředí.
Přidání koncového bodu prostředku
Při nasazení operací Azure IoT v předchozím článku jste zahrnuli integrovaný simulátor OPC PLC. V tomto kroku přidáte koncový bod prostředku, který vám umožní připojit se k simulátoru OPC PLC.
Přidání koncového bodu prostředku:
Vyberte koncové body assetu a pak vytvořte koncový bod prostředku:
Zadejte následující informace o koncovém bodu:
Pole Hodnota Název koncového bodu prostředku opc-ua-connector-0
Adresa URL serveru OPC UA opc.tcp://opcplc-000000:50000
Režim ověřování uživatelů Anonymous
Pokud chcete definici uložit, vyberte Vytvořit.
Tato konfigurace nasadí do clusteru nový koncový bod prostředku volaný
opc-ua-connector-0
. Můžete použítkubectl
k zobrazení koncových bodů prostředku:kubectl get assetendpointprofile -n azure-iot-operations
Správa vašich prostředků
Po výběru instance v provozním prostředí se na stránce Prostředky zobrazí dostupný seznam prostředků. Pokud ještě žádné prostředky neexistují, je tento seznam prázdný:
Vytvoření majetku
Pokud chcete vytvořit prostředek, vyberte Vytvořit prostředek. Pak zadejte následující informace o aktivech:
Pole | Hodnota |
---|---|
Koncový bod prostředku | opc-ua-connector-0 |
Název prostředku | thermostat |
Popis | A simulated thermostat asset |
Odeberte existující vlastní vlastnosti a přidejte následující vlastní vlastnosti. Dávejte pozor, abyste použili přesné názvy vlastností, protože šablona Power BI v pozdějším rychlém startu se na ně dotazuje:
Název vlastnosti | Podrobnosti o vlastnosti |
---|---|
batch | 102 |
Zákazník | Contoso |
vybavení | Kotel |
isSpare | true |
location | Seattle |
Výběrem možnosti Další přejděte na stránku Přidat značky .
Vytvoření značek OPC UA
Přidejte dvě značky OPC UA na stránce Přidat značky . Pokud chcete přidat každou značku, vyberte Přidat značku nebo CSV a pak vyberte Přidat značku. Zadejte podrobnosti o značce uvedené v následující tabulce:
ID uzlu | Název značky | Režim pozorovatelnosti |
---|---|---|
ns=3; s=FastUInt10 | Teplota | Nic |
ns=3; s=FastUInt100 | Značka 10 | Nic |
Režim pozorovatelnosti je jedna z následujících hodnot: None
, Gauge
, Counter
, Histogram
, nebo Log
.
Můžete vybrat Možnost Spravovat výchozí nastavení a změnit výchozí interval vzorkování a velikost fronty pro každou značku.
Výběrem možnosti Další přejdete na stránku Přidat události a pak přejdete na stránku Revize.
Přehled
Než vyberete Vytvořit, zkontrolujte podrobnosti o prostředku a značkách a proveďte potřebné úpravy:
Tato konfigurace nasadí do clusteru nový prostředek.thermostat
K zobrazení prostředků můžete použít kubectl
:
kubectl get assets -n azure-iot-operations
Ověření toku dat
Pomocí nástroje mosquitto_sub ověřte, že data proudí do zprostředkovatele MQTT. V tomto příkladu spustíte nástroj mosquitto_sub v clusteru Kubernetes:
Spuštěním následujícího příkazu nasaďte pod, který obsahuje mosquitto_pub a mosquitto_sub nástroje, které jsou užitečné pro interakci s zprostředkovatelem MQTT v clusteru:
kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/explore-iot-operations/main/samples/quickstarts/mqtt-client.yaml
Následující fragment kódu ukazuje použitý soubor 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-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
Upozornění
Tato konfigurace není zabezpečená. Tuto konfiguraci nepoužívejte v produkčním prostředí.
Když je pod mqtt-client spuštěný, spuštěním následujícího příkazu vytvořte prostředí v podu, který jste vytvořili:
kubectl exec --stdin --tty mqtt-client -n azure-iot-operations -- sh
V prostředí Bash v podu mqtt-client spusťte následující příkaz pro připojení k zprostředkovateli MQTT pomocí nástroje mosquitto_sub přihlášeného k odběru
data/thermostat
tématu: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)
Tento příkaz bude dál spouštět a zobrazovat zprávy při jejich doručení do
data/thermostat
tématu, dokud ho nezastavíte stisknutím ctrl+C .
Pokud chcete ověřit, že přidaný termostatický prostředek publikuje data, podívejte se na telemetrii v azure-iot-operations/data
tématu:
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}}
Pokud tok dat neexistuje, restartujte pod aio-opc-opc.tcp-1
:
Pomocí následujícího příkazu najděte název podu
aio-opc-opc.tcp-1
:kubectl get pods -n azure-iot-operations
Název podu vypadá takto
aio-opc-opc.tcp-1-849dd78866-vhmz6
.aio-opc-opc.tcp-1
Restartujte pod pomocí příkazu, který vypadá jako v následujícím příkladu. Použijte název poduaio-opc-opc.tcp-1
z předchozího kroku:kubectl delete pod aio-opc-opc.tcp-1-849dd78866-vhmz6 -n azure-iot-operations
Ukázkové značky, které jste přidali v předchozím rychlém startu, generují zprávy z vašeho prostředku, které vypadají jako v následujícím příkladu:
{
"temperature": {
"SourceTimestamp": "2024-08-02T13:52:15.1969959Z",
"Value": 2696
},
"Tag 10": {
"SourceTimestamp": "2024-08-02T13:52:15.1970198Z",
"Value": 2696
}
}
Jak jsme tento problém vyřešili?
V tomto rychlém startu jste přidali koncový bod assetu a pak definovali prostředek a značky. Prostředky a značky modelují data ze serveru OPC UA, aby se data snadněji používala ve zprostředkovateli MQTT a dalších podřízených procesech. Použijete termostatický prostředek, který jste definovali v dalším rychlém startu.
Vyčištění prostředků
Pokud budete pokračovat k dalšímu rychlému startu, ponechte všechny prostředky.
Pokud chcete odebrat nasazení operací Azure IoT, ale zachovat cluster, použijte příkaz az iot ops delete :
az iot ops delete --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP
Pokud chcete odstranit všechny prostředky, které jste vytvořili pro účely tohoto rychlého startu, odstraňte cluster Kubernetes, ve kterém jste nasadili operace Azure IoT, a pak odeberte skupinu prostředků Azure, která obsahovala cluster.
Pokud jste pro tyto rychlé starty použili Codespaces, odstraňte codespace z GitHubu.