Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive come usare alcuni strumenti comuni durante l'apprendimento, l'esplorazione o la risoluzione dei problemi delle istanze di Operazioni IoT di Azure. Questi strumenti sono oltre alle funzionalità fornite dalle portale di Azure, dall'interfaccia della riga di comando di Azure, dall'interfaccia della riga di comando di Azure, dall'interfaccia utente Web dell'esperienza operativa e dalle risorse di osservabilità.
Strumenti di Kubernetes
I componenti di Operazioni IoT di Azure vengono eseguiti in un cluster Kubernetes standard. È possibile usare gli strumenti dell'interfaccia della kubectl riga di comando e k9s per interagire con e gestire il cluster.
kubectl
kubectl è lo strumento da riga di comando kubernetes per la gestione del cluster. Offre molte funzionalità che è possibile ottenere nella documentazione ufficiale di kubernetes. Questo articolo descrive gli usi comuni per kubectl quando si usano le operazioni di Azure IoT, ad esempio elencare i pod in esecuzione e visualizzare i log.
Configurare kubectl per connettersi all'istanza
L'articolo Preparare il cluster Kubernetes abilitato per Azure Arc descrive come configurare kubectl per connettersi al cluster k3s quando si eseguono kubectl comandi nello stesso computer in cui è stato distribuito il cluster Kubernetes.
Suggerimento
Aggiungere il export KUBECONFIG=~/.kube/config comando al file con estensione bashrc o .bash_profile in modo che non sia necessario impostare la KUBECONFIG variabile di ambiente ogni volta che si apre una nuova finestra del terminale.
Se l'istanza di Azure IoT Operations è stata distribuita in un servizio Azure Kubernetes-EE abilitato per Arc, la kubectl configurazione viene configurata automaticamente. È possibile eseguire kubectl comandi direttamente dalla riga di comando nel computer in cui è stato distribuito il cluster.
È anche possibile eseguire kubectl comandi dal computer client locale anziché dal computer in cui è stato distribuito il cluster abilitato per Arc:
Come passaggio una tantum, usare SSH per connettersi al computer in cui è stato distribuito il cluster ed eseguire i comandi seguenti. Assicurarsi di sostituire <your-name> con il nome:
kubectl create serviceaccount <your-name> -n default
kubectl create clusterrolebinding <your-name>-binding --clusterrole cluster-admin --serviceaccount default:<your-name>
kubectl apply -f - <<EOF
apiVersion: v1
kind: Secret
metadata:
name: <your-name>-secret
annotations:
kubernetes.io/service-account.name: <your-name>
type: kubernetes.io/service-account-token
EOF
TOKEN=$(kubectl get secret <your-name>-secret -o jsonpath='{$.data.token}' | base64 -d | sed 's/$/\n/g')
echo $TOKEN
Prendere nota del token. Questo token viene usato per eseguire l'autenticazione quando si eseguono kubectl comandi nel computer client. È ora possibile disconnettersi dal computer che esegue il cluster Kubernetes.
Per usare kubectl nel computer client per connettersi al cluster, aprire due terminali:
Nel primo terminale eseguire il comando seguente per configurare un proxy per connettersi al cluster. Assicurarsi di sostituire i valori per i tre segnaposto:
az connectedk8s proxy -n <your-arc-enabled-cluster-name> -g <your-arc-enabled-cluster-resource-group> --token <token-from-previous-step>Lasciare aperto questo terminale mentre si eseguono
kubectli comandi nel secondo terminale.Nel secondo terminale è possibile eseguire i
kubectlcomandi nel cluster remoto. Ad esempio, per elencare i pod nello spazio deiazure-iot-operationsnomi :kubectl get pods -n azure-iot-operationsSuggerimento
È anche possibile eseguire comandi, ad esempio
k9s, che usano lakubectlconfigurazione in questo terminale.Il
kubectlcontesto rimane impostato sul cluster remoto fino a quando non si chiude il primo terminale.
Per altre informazioni, vedere Usare la connessione al cluster per connettersi in modo sicuro ai cluster Kubernetes abilitati per Azure Arc.
Namespaces (Spazi dei nomi)
Per impostazione predefinita, Arc e Azure IoT Operations usano gli spazi dei nomi seguenti nel cluster Kubernetes:
-
azure-iot-operationsper i componenti di Operazioni IoT di Azure. -
azure-arcper i componenti Kubernetes abilitati per Azure Arc.
Suggerimento
Per visualizzare tutti gli spazi dei nomi nel cluster, eseguire il comando seguente: kubectl get namespaces.
Comandi comuni kubectl
Per visualizzare tutti i pod in esecuzione nello spazio dei azure-iot-operations nomi, eseguire il comando seguente:
kubectl get pods -n azure-iot-operations
L'output ha un aspetto simile all'esempio seguente:
NAME READY STATUS RESTARTS AGE
adr-schema-registry-0 2/2 Running 0 19m
adr-schema-registry-1 2/2 Running 0 19m
aio-akri-agent-777477bc68-72lrg 1/1 Running 7 (83m ago) 21d
aio-broker-authentication-0 1/1 Running 7 (83m ago) 21d
aio-broker-backend-1-0 1/1 Running 11 (82m ago) 21d
aio-broker-backend-1-1 1/1 Running 7 (83m ago) 21d
aio-broker-diagnostics-probe-0 1/1 Running 11 (83m ago) 21d
aio-broker-diagnostics-service-0 1/1 Running 7 (83m ago) 21d
aio-broker-fluent-bit-6bkf2 1/1 Running 0 16m
aio-broker-frontend-0 1/1 Running 12 (83m ago) 21d
aio-broker-health-manager-0 1/1 Running 14 (82m ago) 21d
aio-broker-operator-0 1/1 Running 7 (83m ago) 21d
aio-broker-upgrade-status-job-1.0.4-bwlcc 0/1 Completed 0 77m
aio-broker-webhook-admission-65d67f8ddc-jct9j 1/1 Running 0 82m
aio-dataflow-admission-webhook-84dd44c8bd-6pw58 1/1 Running 7 (83m ago) 21d
aio-dataflow-operator-0 1/1 Running 14 (83m ago) 21d
aio-dataflow-upgrade-status-job-1.0.5-msmf4 0/1 Completed 0 77m
aio-opc-asset-discovery-54649d46cf-kb6qs 1/1 Running 2 (83m ago) 17d
aio-opc-media-1-785748ff6c-qkhgl 1/1 Running 1 (83m ago) 14d
aio-opc-opc.tcp-1-858b9ff67-dxwvb 1/1 Running 4 (80m ago) 17d
aio-opc-supervisor-5d6b9bfc49-fgt7d 1/1 Running 2 (83m ago) 17d
aio-operator-7b9b585dc6-bvfpd 2/2 Running 0 19m
aio-usage-28946280-f42k8 0/1 Completed 0 14d
aio-usage-28946340-45grx 0/1 Completed 0 14d
aio-usage-28946400-znn7v 0/1 Completed 0 13d
aio-usage-28946460-nrw4z 0/1 Completed 0 13d
aio-usage-28966500-mrcmf 0/1 Completed 0 55m
Per visualizzare i log per un pod specifico, ad esempio aio-opc-opc.tcp-1-858b9ff67-dxwvb pod, eseguire il comando seguente:
kubectl logs aio-opc-opc.tcp-1-858b9ff67-dxwvb -n azure-iot-operations
Per visualizzare una descrizione leggibile di un pod specifico, ad esempio aio-opc-opc.tcp-1-858b9ff67-dxwvb, eseguire il comando seguente:
kubectl describe pod aio-opc-opc.tcp-1-858b9ff67-dxwvb -n azure-iot-operations
In alcuni casi, la documentazione relativa alle operazioni di Azure IoT usa il comando kubectl apply per applicare un file manifesto Kubernetes per apportare una modifica alla configurazione nel cluster.
k9s
L'utilità k9s offre un'interfaccia utente basata su terminale per la gestione del cluster Kubernetes. Usa la kubectl configurazione per connettersi al cluster e offre un modo visivo per interagire con il cluster. La visualizzazione predefinita elenca tutti i pod attualmente in esecuzione nel cluster:
Quando si lavora con le operazioni di Azure IoT, è possibile filtrare la visualizzazione in modo da visualizzare solo i pod nello spazio dei azure-iot-operations nomi.
Digitare
:per aprire il pannello dei comandi, quindi digitarense premere INVIO.Nell'elenco degli spazi dei nomi selezionare
azure-iot-operationse premere INVIO.L'elenco dei pod mostra ora solo i pod nello spazio dei nomi azure-iot-operations :
Suggerimento
È ora possibile usare le chiavi numerice per applicare i filtri. Lo screenshot precedente mostra che 0 mostra tutti i pod e 1 mostra solo i pod nello spazio dei nomi azure-iot-operations .
È possibile usare i tasti di scelta rapida per visualizzare informazioni sui pod. Ad esempio:
Per descrivere un pod, selezionarlo nell'elenco e premere d.
Per visualizzare i log per un pod, selezionarlo nell'elenco e premere l.
Suggerimento
È possibile usare le chiavi numerice per spostarsi nel file di log.
Per visualizzare tipi di risorse personalizzati altri pod nel cluster:
Premere CTRL+A per visualizzare l'elenco dei tipi di risorse personalizzati.
Selezionare il tipo di risorsa personalizzato, ad esempio i dispositivi e premere INVIO.
Suggerimento
Per cercare un tipo di risorsa personalizzato in base al nome, digitare / e quindi iniziare a digitare il nome del tipo che si sta cercando.
Selezionare una risorsa personalizzata e scegliere una delle operazioni disponibili. Ad esempio, è possibile visualizzare la definizione YAML di un profilo endpoint dispositivo selezionandolo e premendo y. Per alcune risorse, è possibile modificare la configurazione.
La tabella seguente descrive alcuni dei tipi di risorse personalizzati che è possibile usare in Operazioni IoT di Azure:
| Tipo di risorsa personalizzato | Descrizione |
|---|---|
devices |
Rappresenta la configurazione per un dispositivo. |
assets |
Rappresenta la configurazione di un asset. |
brokers, brokerlisters, brokerauthenticationsbrokerauthorizations |
Rappresenta la configurazione per un broker MQTT. |
dataflows, dataflowendpoints, dataflowprofiles |
Rappresentare la configurazione per un flusso di dati. |
secrets, secretsyncs, secretproviderclasses |
Rappresenta la configurazione per i segreti e la gestione dei segreti. |
Strumenti MQTT
Quando si apprende e si testa il broker MQTT nell'istanza di Operazioni IoT di Azure, è possibile usare gli strumenti client MQTT per interagire con il broker. Tuttavia, per motivi di sicurezza, le operazioni IoT di Azure non espongono il broker MQTT all'esterno del cluster. Come soluzione alternativa, sono disponibili le opzioni seguenti:
Attenzione
Questi tre approcci sono adatti solo per ambienti di sviluppo e test. In nessun caso è consigliabile usarli in un ambiente di produzione.
Connettersi al listener predefinito all'interno del cluster. Questa opzione usa la configurazione predefinita e non richiede aggiornamenti aggiuntivi. Si è limitati a un piccolo set di strumenti client MQTT.
Usare un
NodePortservizio per esporre il broker MQTT all'esterno del cluster. Questa opzione richiede di aggiornare la configurazione del broker MQTT. È possibile usare qualsiasi strumento client MQTT che supporti la connessione a una porta specifica.Usare un
LoadBalancerservizio per esporre il broker MQTT all'esterno del cluster. Questa opzione richiede di aggiornare la configurazione del broker MQTT. È possibile usare qualsiasi strumento client MQTT che supporti la connessione a una porta specifica.
Connettersi al listener predefinito all'interno del cluster
Per connettersi al listener predefinito all'interno del cluster, è possibile distribuire un pod che esegue strumenti client MQTT basati sull'interfaccia della riga di comando, mosquitto_sub ad esempio e mosquitto_pub. Il comando seguente distribuisce un pod di questo tipo nel cluster:
kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/explore-iot-operations/main/samples/quickstarts/mqtt-client.yaml
Dopo l'esecuzione del pod, è possibile connettersi a una shell nel pod:
kubectl exec --stdin --tty mqtt-client -n azure-iot-operations -- sh
Usare questa shell per eseguire comandi come mosquitto_sub e mosquitto_pub per interagire con il broker MQTT. Ad esempio, per sottoscrivere tutti gli argomenti nell'argomento azure-iot-operations/data :
mosquitto_sub --host aio-broker --port 18883 --topic "azure-iot-operations/data/#" --verbose --cafile /var/run/certs/ca.crt -D CONNECT authentication-method 'K8S-SAT' -D CONNECT authentication-data $(cat /var/run/secrets/tokens/broker-sat)
Si noti che il comando carica un file di certificato e un token dal file system del pod. Il mqtt-client.yaml file manifesto monta questi file nel pod.
Per ricevere un singolo messaggio dall'argomento azure-iot-operations/data/thermostat , aggiungere l'opzione -C 1 :
mosquitto_sub --host aio-broker --port 18883 --topic "azure-iot-operations/data/thermostat" -C 1 --verbose --cafile /var/run/certs/ca.crt -D CONNECT authentication-method 'K8S-SAT' -D CONNECT authentication-data $(cat /var/run/secrets/tokens/broker-sat)
Per visualizzare le proprietà utente MQTT v5 nei messaggi, usare l'opzione -F %P :
mosquitto_sub --host aio-broker --port 18883 --topic "azure-iot-operations/data/thermostat" -V mqttv5 -F %P --cafile /var/run/certs/ca.crt -D CONNECT authentication-method 'K8S-SAT' -D CONNECT authentication-data $(cat /var/run/secrets/tokens/broker-sat)
Per pubblicare un messaggio nell'argomento azure-iot-operations/data/valve :
mosquitto_pub --host aio-broker --port 18883 --topic "azure-iot-operations/data/valve" --message "open:15%" --id "controller" --cafile /var/run/certs/ca.crt -D CONNECT authentication-method 'K8S-SAT' -D CONNECT authentication-data $(cat /var/run/secrets/tokens/broker-sat)
Al termine dell'uso del pod degli strumenti client MQTT, è possibile eliminarlo dal cluster:
kubectl delete -f https://raw.githubusercontent.com/Azure-Samples/explore-iot-operations/main/samples/quickstarts/mqtt-client.yaml
Per altre informazioni su questa configurazione, vedere Connettersi al listener predefinito all'interno del cluster.
Usare un NodePort servizio o LoadBalancer
Se si seguono i passaggi per configurare una porta Node o un servizio di bilanciamento del carico per esporre il broker MQTT all'esterno del cluster, è possibile usare qualsiasi strumento client MQTT che supporti la connessione a una porta specifica. Negli esempi seguenti si presuppone che il servizio sia stato configurato senza autenticazione, autorizzazione o TLS. È ora possibile usare gli strumenti client MQTT preferiti per connettersi al broker MQTT sulla porta 1883 se si usa un servizio di bilanciamento del carico o la porta configurata se si usa una porta del nodo.
Ad esempio, per eseguire lo strumento mqttui open source nel computer in cui è in esecuzione il cluster Kubernetes, usare il comando seguente:
mqttui --broker mqtt://localhost:1883
Suggerimento
Se è stato configurato un servizio di bilanciamento del carico e la porta 1883 è aperta nell'indirizzo IP pubblico del computer host, è possibile usare il comando seguente per connettersi al broker MQTT da un computer diverso: mqttui --broker mqtt://<cluster-machine-public-ip>:1883
È possibile usare lo mqttui strumento per sottoscrivere argomenti, pubblicare messaggi e visualizzare i messaggi trasmessi attraverso il broker:
Per visualizzare i messaggi in un argomento specifico, ad azure-iot-operations/data/thermostatesempio , usare il comando seguente:
mqttui --broker mqtt://localhost:1883 azure-iot-operations/data/thermostat
Per pubblicare un messaggio nell'argomento azure-iot-operations/data/valve , usare il comando seguente:
mqttui publish --broker mqtt://localhost:1883 azure-iot-operations/data/valve open:15%
Per eseguire lo strumento MQTT Explorer open source nel computer in cui è in esecuzione il cluster Kubernetes, usare la configurazione seguente:
Per eseguire lo strumento MQTT Explorer open source nel computer locale per connettersi al computer in cui è in esecuzione il cluster Kubernetes, usare la configurazione seguente:
Assicurarsi che MQTT Explorer abbia almeno l'argomento # configurato:
Dopo la connessione, è possibile visualizzare i messaggi negli argomenti sottoscritti e pubblicare messaggi:
Suggerimenti
Ecco alcuni suggerimenti aggiuntivi che consentono di usare l'istanza di Operazioni IoT di Azure:
Trovare la posizione personalizzata dell'istanza di Azure IoT Operations
Per trovare il percorso personalizzato associato all'istanza di Azure IoT Operations, usare il comando seguente:
az iot ops show --name <YOUR_INSTANCE_NAME> --resource-group <YOUR_RESOURCE_GROUP> --query "extendedLocation.name" --output tsv
È anche possibile trovare il percorso personalizzato nel portale di Azure nella pagina di panoramica dell'istanza nel campo Percorso esteso .