Compartir a través de


Inicio rápido: Ejecución de Operaciones de IoT de Azure en GitHub Codespaces con K3s

En este inicio rápido, implementará Operaciones de IoT de Azure en un clúster de Kubernetes habilitado para Azure Arc para que pueda administrar de forma remota los dispositivos y las cargas de trabajo. Al final del inicio rápido, tiene un clúster que puede administrar desde la nube. El resto de los inicios rápidos de esta serie integral se basan en este para definir recursos de ejemplo, canalizaciones de procesamiento de datos y visualizaciones.

Antes de empezar

Esta serie de inicios rápidos está pensada para ayudarle a empezar a usar Operaciones de IoT de Azure lo más rápido posible para poder evaluar un escenario de un extremo a otro. En un verdadero entorno de desarrollo o producción, varios equipos que trabajan juntos realizan estas tareas y algunas pueden requerir permisos elevados.

Para obtener la mejor experiencia de usuario nueva, se recomienda usar una cuenta gratuita de Azure para que tenga permisos de propietario sobre los recursos de estos inicios rápidos.

También usamos GitHub Codespaces como entorno virtual para este inicio rápido para poder probar el escenario sin instalar nuevas herramientas en sus propias máquinas. Sin embargo, si quiere implementar operaciones de Azure IoT en un clúster local en Ubuntu o Azure Kubernetes Service (AKS), consulte Preparación del clúster de Kubernetes habilitado para Azure Arc.

Requisitos previos

Antes de comenzar, prepare los siguientes requisitos previos:

  • Suscripción a Azure. Si no tiene una suscripción de Azure, cree una gratuita antes de comenzar.

  • Una cuenta de GitHub.

  • Visual Studio Code instalado en la máquina de desarrollo. Para obtener más información, consulte Descargar Visual Studio Code.

  • Permisos Microsoft.Authorization/roleAssignments/write en el nivel de grupo de recursos.

¿Qué problema resolveremos?

Operaciones de IoT de Azure es un conjunto de servicios de datos que se ejecutan en clústeres de Kubernetes. Quiere que estos clústeres se administren de forma remota desde la nube y puedan comunicarse de forma segura con los puntos de conexión y los recursos en la nube. En esta guía de inicio rápido abordamos estas cuestiones con las siguientes tareas:

  1. Cree un clúster de Kubernetes en GitHub Codespaces.
  2. Conectar el clúster a Azure Arc para la administración remota.
  3. Cree un registro de esquema.
  4. Implementar Operaciones de IoT de Azure en el clúster.

Creación de un clúster

Las operaciones de Azure IoT se pueden implementar en K3s en Ubuntu, Azure Kubernetes Service (AKS) Edge Essentials y AKS en Azure Local. Sin embargo, para mayor velocidad y comodidad, este inicio rápido usa GitHub Codespaces para hospedar el clúster. Para obtener información sobre cómo implementar operaciones de Azure IoT en un clúster en Windows o Ubuntu en su lugar, consulte Preparación del clúster de Kubernetes habilitado para Azure Arc.

Nota:

Los codespaces son fáciles de configurar rápidamente y desmontar más adelante, pero no son adecuados para la evaluación del rendimiento ni para las pruebas de escalado. Use GitHub Codespaces solo con fines de exploración.

El entorno de Codespaces es suficiente para completar los pasos de inicio rápido, pero no admite configuraciones avanzadas.

En esta sección, creará un nuevo clúster. Si desea reutilizar un clúster en el que implementó operaciones de Azure IoT antes, consulte los pasos descritos en Limpieza de recursos para desinstalar operaciones de Azure IoT antes de continuar.

El Azure-Samples/explore-iot-operations codespace está preconfigurado con:

  • K3s ejecutándose en K3d para un clúster ligero de Kubernetes.
  • CLI de Azure
  • Kubectl para administrar recursos de Kubernetes.
  • Otras herramientas útiles, como Helm y k9s.

Para crear el codespace y el clúster, siga estos pasos:

  1. Cree un espacio de código en GitHub Codespaces.

    Creación de un espacio de código de operación explore-iot

  2. Proporcione los siguientes secretos recomendados para el espacio de código:

    Parámetro Valor
    SUBSCRIPTION_ID Su identificador de suscripción de Azure.
    RESOURCE_GROUP Un nombre para un nuevo grupo de recursos de Azure donde se creará el clúster.
    LOCATION Región de Azure cercana a usted. Para ver la lista de las regiones admitidas actualmente, consulte Regiones admitidas.

    Sugerencia

    Los valores que proporcione como secretos en este paso se guardan en la cuenta de GitHub que se usará en este y futuros espacios de código. Se agregan como variables de entorno en el terminal de codespace y puede usar esas variables de entorno en los comandos de la CLI en la sección siguiente.

    Además, este codespace crea una variable de entorno CLUSTER_NAME que se establece con el nombre del codespace.

  3. Seleccione Crear un codespace.

  4. Una vez que el codespace esté listo, seleccione el botón de menú de la parte superior izquierda y elija Abrir en VS Code Desktop.

    Captura de pantalla que muestra cómo abrir el espacio de código en VS Code Desktop.

  5. Si se le solicita, instale la extensiónGitHub Codespaces para Visual Studio Code e inicie sesión en GitHub.

  6. En Visual Studio Code, seleccione Ver>Terminal.

    Use este terminal para ejecutar todos los comandos de la CLI para administrar el clúster.

Conexión de un clúster a Azure Arc

Para conectar el clúster a Azure Arc:

  1. En el terminal de codespace, inicie sesión en la CLI de Azure:

    az login
    

    Sugerencia

    Si usa el entorno de codespace de GitHub en un explorador en lugar del escritorio de VS Code, la ejecución de az login devuelve un error localhost. Para corregir el error, haga lo siguiente:

    • Abra el espacio de código en el escritorio de VS Code y vuelva al terminal del explorador y vuelva a ejecutar az login.
    • O bien, después de obtener el error localhost en el explorador, copie la dirección URL del explorador y ejecute curl "<URL>" en una nueva pestaña de terminal. Debería ver una respuesta JSON con el mensaje "Ha iniciado sesión en Microsoft Azure".
  2. Después de iniciar sesión, la CLI de Azure muestra todas las suscripciones e indica la suscripción predeterminada con un asterisco *. Para continuar con la suscripción predeterminada, seleccione Enter. De lo contrario, escriba el número de la suscripción de Azure que desea usar.

  3. Registre los proveedores de recursos necesarios en la suscripción:

    Nota:

    Este paso solo debe ejecutarse una vez por suscripción. Para registrar proveedores de recursos, necesita permiso para realizar la operación de /register/action, que se incluye en los roles Colaborador y Propietario de la suscripción. Para más información, vea Tipos y proveedores de recursos de Azure.

    az provider register -n "Microsoft.ExtendedLocation"
    az provider register -n "Microsoft.Kubernetes"
    az provider register -n "Microsoft.KubernetesConfiguration"
    az provider register -n "Microsoft.IoTOperations"
    az provider register -n "Microsoft.DeviceRegistry"
    az provider register -n "Microsoft.SecretSyncController"
    
  4. Use el comando az group create para crear un grupo de recursos en la suscripción de Azure donde almacenar todos los recursos:

    az group create --location $LOCATION --resource-group $RESOURCE_GROUP
    
  5. Use el comando az connectedk8s connect para habilitar Arc el clúster de Kubernetes y administrarlo como parte del grupo de recursos de Azure:

    az connectedk8s connect --name $CLUSTER_NAME --location $LOCATION --resource-group $RESOURCE_GROUP
    

    Sugerencia

    El valor de $CLUSTER_NAME se establece automáticamente en el nombre del codespace. Reemplace la variable de entorno si desea usar un nombre diferente.

  6. Obtenga el objectId de la aplicación Microsoft Entra ID que usa el servicio Azure Arc y guárdelo como una variable de entorno. Ejecute el siguiente comando exactamente como está escrito, sin cambiar el valor GUID.

    export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
    
  7. Use el comando az connectedk8s enable-features para habilitar la compatibilidad con una ubicación personalizada en el clúster. Este comando usa objectId de la aplicación de Microsoft Entra ID que el servicio Azure Arc utiliza. Ejecute este comando en la máquina donde implementó el clúster de Kubernetes:

    az connectedk8s enable-features -n $CLUSTER_NAME -g $RESOURCE_GROUP --custom-locations-oid $OBJECT_ID --features cluster-connect custom-locations
    

Crear una cuenta de almacenamiento y un registro de esquemas

El registro de esquemas es un repositorio sincronizado que almacena definiciones de mensajes tanto en la nube como en el perímetro. Operaciones de IoT de Azure requiere un registro de esquemas en su clúster. El registro de esquemas requiere una cuenta de almacenamiento de Azure para la información de esquema almacenada en la nube.

El comando para crear un registro de esquema en esta sección requiere permisos de Microsoft.Authorization/roleAssignments/write en el nivel de grupo de recursos. Este permiso se usa para conceder al registro de esquema un rol de colaborador para que pueda escribir en la cuenta de almacenamiento.

Ejecute los siguientes comandos de la CLI en el terminal Codespaces.

  1. Establezca variables de entorno para los recursos que cree en esta sección.

    Marcador Valor
    <STORAGE_ACCOUNT_NAME> Un nombre para la cuenta de almacenamiento. Los nombres de las cuentas de almacenamiento deben tener entre 3 y 24 caracteres y solo contener números y letras minúsculas.
    <SCHEMA_REGISTRY_NAME> Nombre del registro de esquema.
    <SCHEMA_REGISTRY_NAMESPACE> Nombre del espacio de nombres del registro de esquema. El espacio de nombres identifica de forma única un registro de esquema dentro de un inquilino.
    STORAGE_ACCOUNT=<STORAGE_ACCOUNT_NAME>
    SCHEMA_REGISTRY=<SCHEMA_REGISTRY_NAME>
    SCHEMA_REGISTRY_NAMESPACE=<SCHEMA_REGISTRY_NAMESPACE>
    
  2. Cree una cuenta de almacenamiento con el espacio de nombres jerárquico habilitado.

    az storage account create --name $STORAGE_ACCOUNT --location $LOCATION --resource-group $RESOURCE_GROUP --enable-hierarchical-namespace
    
  3. Cree un registro de esquema que se conecte a la cuenta de almacenamiento. Este comando también crea un contenedor de blobs denominado esquemas en la cuenta de almacenamiento.

    az iot ops schema registry create --name $SCHEMA_REGISTRY --resource-group $RESOURCE_GROUP --registry-namespace $SCHEMA_REGISTRY_NAMESPACE --sa-resource-id $(az storage account show --name $STORAGE_ACCOUNT -o tsv --query id)
    

Implementación de Operaciones de IoT de Azure

En esta sección, configurará el clúster con las dependencias de los componentes de Operaciones de IoT de Azure y, a continuación, implementará Operaciones de IoT de Azure.

Ejecute los siguientes comandos de la CLI en el terminal Codespaces.

  1. Inicialice el clúster para Operaciones de IoT de Azure.

    Sugerencia

    El comando init solo debe ejecutarse una vez por clúster. Si va a reutilizar un clúster que ya tenía la versión más reciente de Azure IoT Operations implementada en él, puede omitir este paso.

    az iot ops init --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP
    

    Este comando puede tardar varios minutos en completarse. Puede ver el progreso en la presentación del progreso de la implementación en el terminal.

  2. Implementación de Operaciones de IoT de Azure.

    az iot ops create --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP --name ${CLUSTER_NAME}-instance  --sr-resource-id $(az iot ops schema registry show --name $SCHEMA_REGISTRY --resource-group $RESOURCE_GROUP -o tsv --query id) --broker-frontend-replicas 1 --broker-frontend-workers 1  --broker-backend-part 1  --broker-backend-workers 1 --broker-backend-rf 2 --broker-mem-profile Low
    

    Este comando puede tardar varios minutos en completarse. Puede ver el progreso en la presentación del progreso de la implementación en el terminal.

    Si recibe un error que indica El dispositivo debe administrarse para acceder al recurso, vuelva a ejecutar az login y asegúrese de iniciar sesión interactivamente con un explorador.

Visualización de recursos en el clúster

Una vez completada la implementación, puede usar comandos de kubectl para observar los cambios en el clúster, o bien, dado que el clúster está habilitado para Arc, puede usar Azure Portal.

Para ver los pods del clúster, ejecute el siguiente comando:

kubectl get pods -n azure-iot-operations

Para ver los recursos en Azure Portal, siga estos pasos:

  1. En el Azure Portal, vaya al grupo de recursos que contiene la instancia de Azure IoT Operations o busque y seleccione Azure IoT Operations.

  2. Seleccione el nombre de la instancia de Azure IoT Operations.

  3. En la página Información general de la instancia, seleccione la pestaña Resumen de recursos para ver el estado de aprovisionamiento de los recursos que se implementaron en el clúster.

    Captura de pantalla que muestra la instancia de Azure IoT Operations en el clúster habilitado para Arc.

¿Cómo solucionamos el problema?

En esta guía de inicio rápido, ha configurado un clúster de Kubernetes habilitado para Arc para que pueda comunicarse de forma segura con los componentes de Operaciones de IoT de Azure. A continuación, ha implementado esos componentes en el clúster. En este escenario de prueba, tiene un único clúster de Kubernetes que se ejecuta en Codespaces. Sin embargo, en un escenario de producción, puede usar los mismos pasos para implementar cargas de trabajo en muchos clústeres en muchos sitios.

Limpieza de recursos

Si va a continuar con la siguiente guía de inicio rápido, conserve todos los recursos.

Si quiere eliminar la implementación de Operaciones de IoT de Azure, pero quiere mantener el clúster, use el comando az iot ops delete:

az iot ops delete --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP

Si quiere eliminar todos los recursos que ha creado para este inicio rápido, elimine el clúster de Kubernetes donde ha implementado Operaciones de IoT de Azure y quite el grupo de recursos de Azure que contenía el clúster.

Si usó Codespaces para estas guías de inicio rápido, elimine Codespace de GitHub.

Paso siguiente

Inicio rápido: Configuración del clúster