Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se describe cómo usar algunas herramientas comunes al aprender, explorar o solucionar problemas de las instancias de Azure IoT Operations. Estas herramientas se agregan a las funcionalidades proporcionadas por Azure Portal, la CLI de Azure, la interfaz de usuario web de experiencia de operaciones y recursos de observabilidad.
Herramientas de Kubernetes
Los componentes de Azure IoT Operations se ejecutan en un clúster de Kubernetes estándar. Puede usar las herramientas de la CLI de kubectl y k9s para interactuar con el clúster y administrarlo.
kubectl
kubectl es la herramienta de línea de comandos de Kubernetes para administrar el clúster. Tiene muchas funcionalidades que puede obtener información sobre en la documentación oficial de kubernetes. En este artículo se describen los usos comunes para kubectl cuando se trabaja con operaciones de Azure IoT, como enumerar los pods en ejecución y ver los registros.
Configuración de kubectl para conectarse a la instancia
En el artículo Preparación del clúster de Kubernetes habilitado para Azure Arc se describe cómo configurar kubectl para conectarse al clúster de k3s al ejecutar comandos kubectl en la misma máquina donde implementó el clúster de Kubernetes.
Sugerencia
Agregue el comando export KUBECONFIG=~/.kube/config al archivo de .bashrc o .bash_profile para que no tenga que establecer la variable de entorno KUBECONFIG cada vez que abra una nueva ventana de terminal.
Si ha implementado la instancia de Azure IoT Operations en una instancia de AKS-EE habilitada para Arc, la configuración de kubectl se configura automáticamente. Puede ejecutar comandos kubectl directamente desde la línea de comandos de la máquina donde implementó el clúster.
También es posible ejecutar comandos kubectl desde la máquina cliente local en lugar de la máquina donde implementó el clúster habilitado para Arc:
Como paso único, use SSH para conectarse a la máquina donde implementó el clúster y ejecutar los siguientes comandos. Asegúrese de reemplazar <your-name> por su nombre:
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
Anote el token. Este token se usa para autenticarse al ejecutar comandos kubectl en el equipo cliente. Ahora puede desconectarse de la máquina que ejecuta el clúster de Kubernetes.
Para usar kubectl en el equipo cliente para conectarse al clúster, abra dos terminales:
En el primer terminal, ejecute el siguiente comando para configurar un proxy para conectarse al clúster. Asegúrese de reemplazar los valores de los tres marcadores de posición:
az connectedk8s proxy -n <your-arc-enabled-cluster-name> -g <your-arc-enabled-cluster-resource-group> --token <token-from-previous-step>Deje abierto este terminal mientras ejecuta comandos
kubectlen el segundo terminal.En el segundo terminal, puede ejecutar los comandos
kubectlen el clúster remoto. Por ejemplo, para enumerar los pods en el espacio de nombresazure-iot-operations:kubectl get pods -n azure-iot-operationsSugerencia
También puede ejecutar comandos, como
k9s, que usan la configuración dekubectlen este terminal.El contexto de
kubectlpermanece establecido en el clúster remoto hasta que se cierra el primer terminal.
Para más información, consulte Uso de la conexión de clúster para conectarse de forma segura a clústeres de Kubernetes habilitados para Azure Arc.
Espacios de nombres
De forma predeterminada, Arc y Azure IoT Operations usan los siguientes espacios de nombres en el clúster de Kubernetes:
-
azure-iot-operationspara los componentes de Azure IoT Operations. -
azure-arcpara los componentes de Kubernetes habilitados para Azure Arc.
Sugerencia
Para ver todos los espacios de nombres del clúster, ejecute el siguiente comando: kubectl get namespaces.
Comandos kubectl comunes
Para ver todos los pods que se ejecutan en el espacio de nombres azure-iot-operations, ejecute el siguiente comando:
kubectl get pods -n azure-iot-operations
La salida se parece al ejemplo siguiente:
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
Para ver los registros de para un pod específico, como el aio-opc-opc.tcp-1-858b9ff67-dxwvb pod, ejecute el siguiente comando:
kubectl logs aio-opc-opc.tcp-1-858b9ff67-dxwvb -n azure-iot-operations
Para ver una descripción de legible de un pod específico, como el aio-opc-opc.tcp-1-858b9ff67-dxwvb pod, ejecute el siguiente comando:
kubectl describe pod aio-opc-opc.tcp-1-858b9ff67-dxwvb -n azure-iot-operations
En algunos lugares, la documentación de operaciones de Azure IoT usa la comando kubectl apply para aplicar un archivo de manifiesto de Kubernetes para realizar un cambio de configuración en el clúster.
k9s
La utilidad k9s ofrece una interfaz de usuario basada en terminal para administrar el clúster de Kubernetes. Usa la configuración de kubectl para conectarse al clúster y proporciona una manera visual de interactuar con el clúster. Su vista predeterminada muestra todos los pods que se ejecutan actualmente en el clúster:
Al trabajar con operaciones de Azure IoT, puede filtrar la vista para mostrar solo los pods en el espacio de nombres azure-iot-operations.
Escriba
:para abrir el panel de comandos y escribansy presione Entrar.En la lista de espacios de nombres, seleccione
azure-iot-operationsy presione Entrar.La lista de pods ahora muestra solo los pods del espacio de nombres azure-iot-operations:
Sugerencia
Ahora puede usar las claves de número para aplicar filtros. En la captura de pantalla anterior se muestra que 0 muestra todos los pods y 1 muestra solo los pods del espacio de nombres azure-iot-operations.
Puede usar teclas de método abreviado para ver información sobre los pods. Por ejemplo:
Para describir un pod, selecciónelo en la lista y presione d.
Para ver los registros de un pod, selecciónelo en la lista y presione l.
Sugerencia
Puede usar las claves de número para navegar por el archivo de registro.
Para ver los tipos de recursos personalizados, otros pods del clúster:
Presione Ctrl-a para mostrar la lista de tipos de recursos personalizados.
Seleccione el tipo de recurso personalizado, como dispositivos y presione Entrar.
Sugerencia
Para buscar un tipo de recurso personalizado por nombre, escriba / y, a continuación, empiece a escribir el nombre del tipo que busca.
Seleccione un recurso personalizado y elija una de las operaciones disponibles. Por ejemplo, puede ver la definición de YAML de un perfil de punto de conexión de dispositivo seleccionándolo y presionando y. Para algunos recursos, puede editar la configuración.
En la tabla siguiente se describen algunos de los tipos de recursos personalizados con los que puede trabajar en Azure IoT Operations:
| Tipo de recurso personalizado | Descripción |
|---|---|
devices |
Representa la configuración de un dispositivo. |
assets |
Representa la configuración de un recurso. |
brokers, brokerlisters, , brokerauthentications, brokerauthorizations |
Representa la configuración de un agente MQTT. |
dataflows, , dataflowendpoints, dataflowprofiles |
Representa la configuración de un flujo de datos. |
secrets, , secretsyncs, secretproviderclasses |
Representa la configuración de secretos y administración de secretos. |
Herramientas de MQTT
Al aprender y probar el agente MQTT en la instancia de Azure IoT Operations, puede usar herramientas de cliente MQTT para interactuar con el agente. Sin embargo, por motivos de seguridad, Azure IoT Operations no expone el agente MQTT fuera del clúster. Como solución alternativa, tiene las siguientes opciones:
Precaución
Estos tres enfoques solo son adecuados para entornos de desarrollo y pruebas. En ningún caso debe usarlos en un entorno de producción.
Conexión al cliente de escucha predeterminado dentro del clúster. Esta opción usa la configuración predeterminada y no requiere actualizaciones adicionales. Está limitado a un pequeño conjunto de herramientas de cliente MQTT.
Use un servicio
NodePortpara exponer el agente MQTT fuera del clúster. Esta opción requiere que actualice la configuración del agente MQTT. Puede usar cualquier herramienta de cliente MQTT que admita la conexión a un puerto específico.Use un servicio
LoadBalancerpara exponer el agente MQTT fuera del clúster. Esta opción requiere que actualice la configuración del agente MQTT. Puede usar cualquier herramienta de cliente MQTT que admita la conexión a un puerto específico.
Conexión al cliente de escucha predeterminado dentro del clúster
Para conectarse al agente de escucha predeterminado dentro del clúster, puede implementar un pod que ejecute herramientas de cliente MQTT basadas en la CLI, como mosquitto_sub y mosquitto_pub. El comando siguiente implementa este pod en el clúster:
kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/explore-iot-operations/main/samples/quickstarts/mqtt-client.yaml
Después de ejecutar el pod, puede conectarse a un shell en el pod:
kubectl exec --stdin --tty mqtt-client -n azure-iot-operations -- sh
Use este shell para ejecutar comandos como mosquitto_sub y mosquitto_pub para interactuar con el agente MQTT. Por ejemplo, para suscribirse a todos los temas del tema 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)
Observe cómo el comando carga un archivo de certificado y un token desde el sistema de archivos del pod. El archivo de manifiesto mqtt-client.yaml monta estos archivos en el pod.
Para recibir un único mensaje del tema de azure-iot-operations/data/thermostat, agregue la opción -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)
Para ver las propiedades de usuario de MQTT v5 en los mensajes, use la opción -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)
Para publicar un mensaje en el tema 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)
Cuando termine de usar el pod de herramientas de cliente MQTT, puede eliminarlo del clúster:
kubectl delete -f https://raw.githubusercontent.com/Azure-Samples/explore-iot-operations/main/samples/quickstarts/mqtt-client.yaml
Para obtener más información sobre esta configuración, consulte Conexión al agente de escucha predeterminado dentro del clúster.
Uso de un servicio de NodePort o LoadBalancer
Si sigue los pasos para configurar un puerto de nodo o servicio de equilibrador de carga para exponer el agente MQTT fuera del clúster, puede usar cualquier herramienta de cliente MQTT que admita la conexión a un puerto específico. En los ejemplos siguientes se supone que configuró el servicio sin autenticación, autorización ni TLS. Ahora puede usar sus herramientas de cliente MQTT favoritas para conectarse al agente MQTT en el puerto 1883 si usa un equilibrador de carga o el puerto configurado si usa un puerto de nodo.
Por ejemplo, para ejecutar la herramienta de código abierto mqttui en la máquina donde se ejecuta el clúster de Kubernetes, use el siguiente comando:
mqttui --broker mqtt://localhost:1883
Sugerencia
Si configuró un equilibrador de carga y el puerto 1883 está abierto en la dirección IP pública del equipo host, puede usar el siguiente comando para conectarse al agente MQTT desde otra máquina: mqttui --broker mqtt://<cluster-machine-public-ip>:1883
Puede usar la herramienta mqttui para suscribirse a temas, publicar mensajes y ver los mensajes que fluyen a través del agente:
Para mostrar los mensajes en un tema específico, como azure-iot-operations/data/thermostat, use el siguiente comando:
mqttui --broker mqtt://localhost:1883 azure-iot-operations/data/thermostat
Para publicar un mensaje en el tema de azure-iot-operations/data/valve, use el siguiente comando:
mqttui publish --broker mqtt://localhost:1883 azure-iot-operations/data/valve open:15%
Para ejecutar la herramienta de MQTT Explorer de código abierto en la máquina donde se ejecuta el clúster de Kubernetes, use la siguiente configuración:
Para ejecutar la herramienta de MQTT Explorer de código abierto en la máquina local para conectarse a la máquina donde se ejecuta el clúster de Kubernetes, use la siguiente configuración:
Asegúrese de que MQTT Explorer tenga al menos el tema de # configurado:
Después de conectarse, puede ver mensajes en los temas que ha suscrito y publicar mensajes:
Sugerencias
Estas son algunas sugerencias adicionales que le ayudarán a trabajar con la instancia de Azure IoT Operations:
Búsqueda de la ubicación personalizada de la instancia de Azure IoT Operations
Para buscar la ubicación personalizada asociada a la instancia de Azure IoT Operations, use el siguiente comando:
az iot ops show --name <YOUR_INSTANCE_NAME> --resource-group <YOUR_RESOURCE_GROUP> --query "extendedLocation.name" --output tsv
También puede encontrar la ubicación personalizada en Azure Portal en la página de información general de la instancia en el campo Ubicación extendida .