Prepara un clúster para Operaciones de IoT de Azure

Un clúster de Kubernetes habilitado para Azure Arc es un requisito previo para implementar Operaciones de IoT de Azure. Este artículo describe cómo preparar ese clúster, con orientación para Ubuntu, Windows, Azure Local y vSphere Kubernetes Service (VKS).

Si desea implementar Operaciones de IoT de Azure rápidamente y ejecutar una carga de trabajo de ejemplo en un entorno de prueba, consulte el Quickstart: Ejecutar Operaciones de IoT de Azure en GitHub Codespaces con K3s.

Requisitos previos

Para despliegues multi-nodo, usa K3s en Ubuntu, AKS en Azure Local o vSphere Kubernetes Service (VKS). AKS Edge Essentials en Windows solo soporta despliegues de un solo nodo.

Para preparar un clúster de Kubernetes habilitado para Azure Arc, necesita lo siguiente:

  • Una suscripción de Azure con el rol Owner o una combinación de roles Contributor y Administrador de acceso de usuario. Para comprobar el nivel de acceso, vaya a la suscripción, seleccione Access control (IAM) en el lado izquierdo del portal de Azure y seleccione View my access. Si no tiene una suscripción de Azure, cree una gratuita antes de comenzar.

  • CLI de Azure está instalado en la máquina de desarrollo. Consulta las extensiones disponibles de CLI de Azure para la versión mínima requerida para la extensión connectedk8s. Use az --version para comprobar la versión y az upgrade para actualizar si es necesario. Para más información, consulte Instalación de la CLI de Azure.

  • La extensión connectedk8s para la CLI de Azure. Use el siguiente comando para agregar la extensión o actualizarla a la versión más reciente:

    az extension add --upgrade --name connectedk8s
    
  • Un grupo de recursos Azure. Solo se admite una instancia de Operaciones de IoT de Azure por grupo de recursos. Para crear un nuevo grupo de recursos, use el comando az group create. Para obtener la lista de regiones de Azure admitidas actualmente, consulte Regiones admitidas.

    az group create --location $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
    

Los CLI de Azure ejemplos de este artículo usan variables de entorno para que puedas establecer cada valor una vez y luego copiar y pegar los comandos as-is. Si usas el entorno Operaciones de IoT de Azure Codespaces del quickstart, estas variables ya están configuradas para ti y puedes saltarte este paso. De lo contrario, configura las siguientes variables de entorno en tu shell antes de ejecutar los comandos.

Los siguientes scripts establecen las variables de entorno más usadas:

Variable del entorno Descripción
SUBSCRIPTION_ID El ID de la suscripción que contiene tu instancia de Operaciones de IoT de Azure.
RESOURCE_GROUP El nombre del grupo de recursos que contiene tu instancia de Operaciones de IoT de Azure.
AIO_INSTANCE_NAME El nombre de tu instancia de Operaciones de IoT de Azure. Para listar tus instancias, ejecuta az iot ops list -o table.
CLUSTER_NAME El nombre del clúster Kubernetes habilitado para Azure Arc que aloja tu instancia.
LOCATION La región de Azure que se usará para los nuevos recursos, por ejemplo eastus.
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
AIO_INSTANCE_NAME=<instance-name>
CLUSTER_NAME=<cluster-name>
LOCATION=<region>

Solo necesitas establecer las variables que utiliza este artículo. Este artículo podría utilizar variables de entorno adicionales para los nombres de recursos que elijas. El artículo explica cómo situarlos donde se introducen.

Creación y habilitación de Arc en un clúster

Esta sección proporciona pasos para crear clústeres en entornos validados en Ubuntu, Windows, Azure Local y vSphere Kubernetes Service (VKS).

Para preparar un clúster de Kubernetes K3s en Ubuntu:

  1. Cree un clúster K3s de un solo nodo o varios nodos. Para obtener ejemplos, consulte la Guía de inicio rápido de K3s o los Proyectos relacionados con K3s.

  2. Comprueba que K3s esté instalado kubectl. Si no es así, siga las instrucciones para instalar kubectl en Linux.

    kubectl version --client
    
  3. Siga estas instrucciones para Instalar Helm.

  4. Crea un archivo YAML de configuración K3s en .kube/config:

    mkdir ~/.kube
    sudo KUBECONFIG=~/.kube/config:/etc/rancher/k3s/k3s.yaml kubectl config view --flatten > ~/.kube/merged
    mv ~/.kube/merged ~/.kube/config
    chmod  0600 ~/.kube/config
    export KUBECONFIG=~/.kube/config
    #switch to k3s context
    kubectl config use-context default
    sudo chmod 644 /etc/rancher/k3s/k3s.yaml
    
  5. Ejecute el comando siguiente para aumentar los límites de inspección o instancia de usuario.

    echo fs.inotify.max_user_instances=8192 | sudo tee -a /etc/sysctl.conf
    echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
    
    sudo sysctl -p
    
  6. Para mejorar el rendimiento, aumente el límite del descriptor de archivo:

    echo fs.file-max = 100000 | sudo tee -a /etc/sysctl.conf
    
    sudo sysctl -p
    

Habilita tu clúster de K3s con Arc

Conecta tu clúster a Azure Arc para poder gestionarlo de forma remota.

  1. Desde una máquina que tenga kubectl acceso a tu clúster, inicia sesión en CLI de Azure con tu cuenta de usuario de Microsoft Entra que tenga los roles requeridos para la suscripción a Azure:

    az login
    

    Si en algún momento aparece un error que diga que tu dispositivo debe ser gestionado para acceder a tu recurso, ejecuta az login de nuevo y asegúrate de iniciar sesión de forma interactiva usando un navegador.

  2. Después de iniciar sesión, la CLI de CLI de Azure muestra todas tus suscripciones e indica tu 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

    Solo tienes que hacer este paso una vez por suscripción. Para registrar proveedores de recursos, necesitas permiso para realizar la /register/action operación, que incluye los roles de Contribuidor y Propietario de suscripción. Para obtener más información, consulte proveedores de recursos de Azure y tipos.

    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 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 -l $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID --enable-oidc-issuer --enable-workload-identity --disable-auto-upgrade
    

    Para evitar actualizaciones no planeadas de Azure Arc y las extensiones de Arc del sistema que Operaciones de IoT de Azure usa como dependencias, este comando deshabilita la actualización automática. En su lugar, actualizar manualmente los agentes según sea necesario.

    Importante

    Si el entorno usa un servidor proxy o una puerta de enlace de Azure Arc, modifique el comando az connectedk8s connect con la información del proxy:

    1. Siga las instrucciones de Conectar utilizando un servidor proxy de salida o Incorporar clústeres de Kubernetes a Azure Arc con Azure Arc Gateway.
    2. Agregue 169.254.169.254 al parámetro --proxy-skip-range del comando az connectedk8s connect. Registro de Dispositivos de Azure usa este extremo local para obtener tokens de acceso para autorización.

    Operaciones de IoT de Azure no admite servidores proxy que requieran un certificado de confianza.

  5. Obtenga la dirección URL del emisor del clúster.

    az connectedk8s show --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --query oidcIssuerProfile.issuerUrl --output tsv
    

    Guarde la salida de este comando para usarla en los pasos siguientes.

  6. Crea un archivo de configuración de K3s.

    sudo nano /etc/rancher/k3s/config.yaml
    
  7. Agregue el siguiente contenido al config.yaml archivo y reemplace el marcador de posición por la <SERVICE_ACCOUNT_ISSUER> dirección URL del emisor del clúster.

    kube-apiserver-arg:
     - service-account-issuer=<SERVICE_ACCOUNT_ISSUER>
     - service-account-max-token-expiration=24h
    
  8. Guarde el archivo y salga del editor nano.

  9. Prepárese para habilitar el servicio de Azure Arc y la ubicación personalizada en su clúster de Arc al obtener el identificador del objeto de ubicación personalizada y guardarlo como la variable de entorno OBJECT_ID. Debes iniciar sesión en CLI de Azure con una cuenta de usuario de Microsoft Entra, no un principal de servicio, para ejecutar el comando correctamente. Ejecute el siguiente comando exactamente como se escribe, sin cambiar el valor GUID.

    export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
    

    Nota

    Si recibe el error: "No se puede capturar el oid de la aplicación "custom-locations". Continuar sin habilitar la característica. Privilegios insuficientes para completar la operación," es posible que la entidad de servicio no tenga los permisos necesarios para recuperar el identificador de objeto de la ubicación personalizada. Inicia sesión en CLI de Azure con una cuenta de usuario de Microsoft Entra que cumpla los requisitos previos. Para obtener más información, consulte Creación y administración de ubicaciones personalizadas.

  10. Use el comando az connectedk8s enable-features para habilitar la función de ubicación personalizada en el clúster de Arc. Este comando utiliza la variable de entorno OBJECT_ID que guardaste en el paso anterior para establecer el valor del parámetro custom-locations-oid. 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
    
  11. Reinicie K3s.

    systemctl restart k3s
    

Configurar Azure Container Storage habilitado por Azure Arc

Características como los puntos de conexión de almacenamiento local de flujo de datos y el conector multimedia usan opcionalmente Azure Container Storage habilitado por Azure Arc (ACSA) para sincronizar los datos locales con la nube. ACSA no está instalado como parte de Operaciones de IoT de Azure, así que debes instalarlo por separado.

Para aprender a instalar ACSA en tu clúster Kubernetes:

Pasos siguientes

Ahora que tiene un clúster de Kubernetes habilitado para Azure Arc, puede implementar Operaciones de IoT de Azure.