Compartir a través de


Configuración de un clúster de nivel 3 en una red aislada con Azure IoT Layered Network Management (versión preliminar)

Puede configurar un entorno de red aislado especial para implementar operaciones de Azure IoT. Por ejemplo, nivel 3 o inferior en la arquitectura de red ISA-95. En este artículo, configurará un clúster de Kubernetes y Arc lo habilitará a través del servicio Administración de redes en capas de Azure IoT (versión preliminar) en el nivel superior. Antes de iniciar este proceso, el servicio Administración de redes (versión preliminar) superpuestas debe estar listo para aceptar la solicitud de conexión de este nivel.

Deberá completar las siguientes tareas:

  • Configure el sistema host e instale todo el software necesario en un entorno accesible desde Internet.
  • Instale el Kubernetes de su elección.
  • Mueva el host al entorno de red aislado.
  • Use una configuración de DNS personalizada para dirigir el tráfico de red al servicio Administración de redes por capas en el nivel primario.
  • Habilite el clúster para Arc.

Importante

Azure IoT Layered Network Management (versión preliminar) se retirará. En su lugar, use el ejemplo de guía de red superpuesta para implementar la administración de red en capas en Azure IoT Operations.

Requisitos previos

Siga las instrucciones de requisitos de hardware y secciones de requisitos previosPreparación del clúster de Kubernetes habilitado para Azure Arc.

Configuración de un clúster de Kubernetes

Puede optar por usar AKS Edge Essentials hospedado en Windows 11 o un clúster K3S en Ubuntu para el clúster de Kubernetes.

Debería completar este paso en un entorno accesible desde Internet fuera de la red aislada. De lo contrario, debe preparar el paquete de instalación sin conexión para el siguiente software en la sección siguiente.

Preparación de una máquina Ubuntu

  1. Ubuntu 22.04 LTS es la versión recomendada para la máquina host.

  2. Instale Helm 3.8.0 o posterior.

  3. Instale Kubectl.

  4. Ejecute el comando siguiente para aumentar los límites de inspección o instancia del 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
    
  5. 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
    
  6. Instale el siguiente software opcional si planea probar inicios rápidos de Operaciones de IoT de Azure o escenarios relacionados con MQTT.

  7. Instale la CLI de Azure. Puede instalar la CLI de Azure directamente en la máquina de nivel 3 o en otra máquina de desarrollador o jumpbox si tiene previsto acceder al clúster de nivel 3 de forma remota. Si decide acceder al clúster de Kubernetes de forma remota para mantener limpio el host del clúster, ejecute el kubectl y az" comandos relacionados de la máquina del desarrollador de para el resto de los pasos de este artículo.

Creación del clúster K3S

  1. Instale K3S con el siguiente comando:

    curl -sfL https://get.k3s.io | sh -s - --disable=traefik --write-kubeconfig-mode 644
    

    Importante

    Asegúrese de usar el parámetro --disable=traefik para deshabilitar traefik. De lo contrario, es posible que tenga un problema al intentar asignar una dirección IP pública para el servicio Administración de red en capas en pasos posteriores.

    Como alternativa, puede configurar el K3S sin conexión mediante los pasos descritos en la documentación de Instalación de Air-Gapdespués de mover el dispositivo al entorno de red aislado.

  2. Copie el archivo yaml de configuración de K3s en .kube/config.

    mkdir ~/.kube
    cp ~/.kube/config ~/.kube/config.back
    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
    

Mover el dispositivo a la red aislada de nivel 3

Una vez que el dispositivo se mueve a la capa de red aislada de nivel 3, es necesario tener un DNS personalizado.

  • Si elige el enfoque CoreDNS, complete los pasos descritos en la instrucción y el clúster esté listo para conectarse a Arc.
  • Si usa un servidor DNS, debe tener listo el servidor DNS y, a continuación, configurar la configuración DNS de Ubuntu. En el ejemplo siguiente se usa la interfaz de usuario de Ubuntu:
    1. Abra la Configuración de Wi-Fi.
    2. Seleccione la configuración de la conexión actual.
    3. En la pestaña IPv4, deshabilite la configuración Automática para DNS y escriba la dirección IP local del servidor DNS.
    4. Reinicie el servicio CoreDNS.
      kubectl rollout restart -n kube-system deployment/coredns
      

Aprovisionamiento del clúster en Azure Arc

Antes del aprovisionamiento en Azure Arc, use el siguiente comando para asegurarse de que el servidor DNS funciona según lo previsto:

dig login.microsoftonline.com

La salida debe ser similar al ejemplo siguiente. En la SECCIÓN DE RESPUESTAS, compruebe que la dirección IP es la dirección IP de la máquina de nivel primario que configuró anteriormente.

; <<>> DiG 9.18.12-0ubuntu0.22.04.3-Ubuntu <<>> login.microsoftonline.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28891
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;login.microsoftonline.com.     IN      A

;; ANSWER SECTION:
login.microsoftonline.com. 0    IN      A       100.104.0.165

Habilitar clúster para Arc

  1. Inicie sesión con la CLI de Azure. Para evitar problemas de permisos más adelante, es importante que el inicio de sesión se produzca de forma interactiva mediante una ventana del explorador:

    az login
    
  2. Establezca variables de entorno para el resto de la configuración. Reemplace los valores de <> por valores o nombres válidos de su elección. Los CLUSTER_NAME y RESOURCE_GROUP se crean en función de los nombres que proporcione:

    # Id of the subscription where your resource group and Arc-enabled cluster will be created
    $SUBSCRIPTION_ID = "<subscription-id>"
    # Azure region where the created resource group will be located
    # Currently supported regions: : "westus3" or "eastus2"
    $LOCATION = "WestUS3"
    # Name of a new resource group to create which will hold the Arc-enabled cluster and Azure IoT Operations resources
    $RESOURCE_GROUP = "<resource-group-name>"
    # Name of the Arc-enabled cluster to create in your resource group
    $CLUSTER_NAME = "<cluster-name>"
    
  3. Establezca el contexto de suscripción de Azure para todos los comandos:

    az account set -s $SUBSCRIPTION_ID
    
  4. 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"
    
  5. 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 --subscription $SUBSCRIPTION_ID
    
  6. Use el comando az connectedk8s connect para habilitar el clúster de Kubernetes para Arc y administrarlo en el grupo de recursos que creó en el paso anterior:

    az connectedk8s connect -n $CLUSTER_NAME -l $LOCATION -g $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
    

    Sugerencia

    Si se produce un error en los comandos de connectedk8s, pruebe a usar los cmdlets de Conecte el clúster de AKS Edge Essentials a Arc.

Configuración de la red del clúster

Importante

Estos pasos son solo para AKS Edge Essentials.

Después de implementar Azure IoT Operations en el clúster, habilite las conexiones entrantes al agente MQTT y configure el reenvío de puertos:

  1. Habilite una regla de firewall para el puerto 18883:
    New-NetFirewallRule -DisplayName "MQTT broker" -Direction Inbound -Protocol TCP -LocalPort 18883 -Action Allow
    
  2. Ejecute el comando siguiente y anote la dirección IP del servicio denominado aio-broker:
    kubectl get svc aio-broker -n azure-iot-operations -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
    
  3. Habilite el reenvío de puertos para el puerto 18883. Reemplace <aio-broker IP address> por la dirección IP que ha anotado en el paso anterior:
    netsh interface portproxy add v4tov4 listenport=18883 listenaddress=0.0.0.0 connectport=18883 connectaddress=<aio-broker IP address>