Compartir a través de


Configurar la versión preliminar de Azure IoT Layered Network Management en el clúster de nivel 4

Importante

Versión preliminar de operaciones de Azure IoT: habilitada por Azure Arc está actualmente en versión preliminar. No se debería usar este software en versión preliminar en entornos de producción.

Deberá implementar una nueva instalación de Azure IoT Operations cuando esté disponible una versión general. No podrá actualizar una instalación de versión preliminar.

Consulte Términos de uso complementarios para las versiones preliminares de Microsoft Azure para conocer los términos legales que se aplican a las características de Azure que se encuentran en la versión beta, en versión preliminar o que todavía no se han publicado para que estén disponibles con carácter general.

La versión preliminar de Azure IoT Layered Network Management es un componente que admite la versión preliminar de Operaciones de IoT de Azure. Sin embargo, necesita implementarse individualmente en la capa de red superior para respaldar Operaciones de IoT de Azure en la capa inferior. En el nivel superior de las capas de red (normalmente el nivel 4 de la arquitectura de red ISA-95), el clúster y el servicio de administración de redes superpuestas tienen acceso directo a Internet. Una vez completada la configuración, el servicio Administración de redes superpuestas está listo para recibir tráfico de red de la capa secundaria y reenviarlo a Azure Arc.

Requisitos previos

Cumpla los siguientes requisitos mínimos para implementar la administración de red superpuesta individualmente en el sistema.

Configuración del clúster de Kubernetes en el nivel 4

Para configurar solo la administración de redes superpuestas, los requisitos previos son más sencillos que una implementación de operaciones de Azure IoT. Es opcional cumplir los requisitos generales para las operaciones de Azure IoT en Preparar el clúster de Kubernetes.

Microsoft comprueba los pasos siguientes para configurar AKS Edge Essentials y clúster de Kubernetes K3S Kubernetes.

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. Instale la CLI de Azure. Puede instalar la CLI de Azure directamente en la máquina de nivel 4 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.

    • Instale la CLI de Azure. Siga los pasos descritos en Instalación de la CLI de Azure en Linux.

    • Instale connectedk8s y otras extensiones.

      az extension add --name connectedk8s
      az extension add --name k8s-extension
      

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
    

    Consulte la guía de inicio rápido de K3s para obtener más detalles.

    Importante

    Asegúrese de usar el parámetro --disable=traefik para deshabilitar treafik. 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.

  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
    

Habilite el clúster para Arc

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

    az login
    
  2. Establezca las variables de entorno para los pasos de configuración. Reemplace los valores de <> por valores o nombres válidos de su elección. CLUSTER_NAME y RESOURCE_GROUP se crean en función de los nombres que proporcione. Consulte las regiones admitidas de Operaciones de IoT de Azure para seleccionar LOCATION

    # 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
    $LOCATION = "<region>"
    # 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"
    
  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
    

Implemente el servicio de versión preliminar de administración de red en capas en el clúster

Una vez que el clúster de Kubernetes está habilitado para Arc, puede implementar el servicio De administración de redes superpuestas en el clúster.

Instale el operador de vista previa de administración de red por capas

  1. Ejecute el siguiente comando: Reemplace los marcadores de posición<RESOURCE GROUP> y <CLUSTER NAME> por la información de incorporación de Arc de un paso anterior.

    az login
    
    az k8s-extension create --resource-group <RESOURCE GROUP> --name kind-lnm-extension --cluster-type connectedClusters --cluster-name <CLUSTER NAME> --auto-upgrade false --extension-type Microsoft.IoTOperations.LayeredNetworkManagement --version 0.1.0-preview --release-train preview
    
  2. Use el comandokubectl para comprobar que el operador de administración de redes superpuestas se está ejecutando.

    kubectl get pods
    
    NAME                                   READY   STATUS    RESTARTS   AGE
    azedge-lnm-operator-598cc495c-5428j   1/1     Running   0          28h
    

Configure el servicio de versión preliminar de administración de red en capas

Cree el recurso personalizado de administración de redes superpuestas.

  1. Cree un archivolnm-cr.yaml como se especifica:

    apiVersion: layerednetworkmgmt.iotoperations.azure.com/v1beta1
    kind: Lnm
    metadata:
      name: level4
      namespace: default
    spec:
      image:
        pullPolicy: IfNotPresent
        repository: mcr.microsoft.com/oss/envoyproxy/envoy-distroless
        tag: v1.27.0
      replicas: 1
      logLevel: "debug"
      openTelemetryMetricsCollectorAddr: "http://aio-otel-collector.azure-iot-operations.svc.cluster.local:4317"
      level: 4
      allowList:
        enableArcDomains: true
        domains:
        - destinationUrl: "*.arc.azure.net"
          destinationType: external
        - destinationUrl: "*.data.mcr.microsoft.com"
          destinationType: external
        - destinationUrl: "*.dp.kubernetesconfiguration.azure.com"
          destinationType: external
        - destinationUrl: "*.guestnotificationservice.azure.com"
          destinationType: external
        - destinationUrl: "*.his.arc.azure.com"
          destinationType: external
        - destinationUrl: "*.login.microsoft.com"
          destinationType: external
        - destinationUrl: "*.login.microsoftonline.com"
          destinationType: external
        - destinationUrl: "*.obo.arc.azure.com"
          destinationType: external
        - destinationUrl: "*.servicebus.windows.net"
          destinationType: external
        - destinationUrl: "graph.microsoft.com"
          destinationType: external
        - destinationUrl: "login.windows.net"
          destinationType: external
        - destinationUrl: "management.azure.com"
          destinationType: external
        - destinationUrl: "mcr.microsoft.com"
          destinationType: external
        - destinationUrl: "sts.windows.net"
          destinationType: external
        - destinationUrl: "*.ods.opinsights.azure.com"
          destinationType: external
        - destinationUrl: "graph.windows.net"
          destinationType: external
        - destinationUrl: "msit-onelake.pbidedicated.windows.net"
          destinationType: external
        - destinationUrl: "*.azurecr.io"
          destinationType: external
        - destinationUrl: "*.azureedge.net"
          destinationType: external
        - destinationUrl: "*.blob.core.windows.net"
          destinationType: external
        - destinationUrl: "*.prod.hot.ingestion.msftcloudes.com"
          destinationType: external
        - destinationUrl: "*.prod.microsoftmetrics.com"
          destinationType: external
        - destinationUrl: "adhs.events.data.microsoft.com"
          destinationType: external
        - destinationUrl: "dc.services.visualstudio.com"
          destinationType: external
        - destinationUrl: "go.microsoft.com"
          destinationType: external
        - destinationUrl: "packages.microsoft.com"
          destinationType: external
        - destinationUrl: "www.powershellgallery.com"
          destinationType: external
        - destinationUrl: "*.gw.arc.azure.com"
          destinationType: external
        - destinationUrl: "*.gcs.prod.monitoring.core.windows.net"
          destinationType: external
        - destinationUrl: "*.prod.warm.ingest.monitor.core.windows.net"
          destinationType: external
        - destinationUrl: "*.prod.hot.ingest.monitor.core.windows.net"
          destinationType: external
        - destinationUrl: "azure.archive.ubuntu.com"
          destinationType: external
        - destinationUrl: "crl.microsoft.com"
          destinationType: external
        - destinationUrl: "*.table.core.windows.net"
          destinationType: external
        - destinationUrl: "*.blob.storage.azure.net"
          destinationType: external
        - destinationUrl: "*.docker.com"
          destinationType: external
        - destinationUrl: "*.docker.io"
          destinationType: external
        - destinationUrl: "*.googleapis.com"
          destinationType: external
        - destinationUrl: "github.com"
          destinationType: external
        - destinationUrl: "collect.traefik.io"
          destinationType: external
        - destinationUrl: "contracts.canonical.com"
          destinationType: external
        - destinationUrl: "database.clamav.net"
          destinationType: external
        - destinationUrl: "esm.ubuntu.com"
          destinationType: external
        - destinationUrl: "livepatch.canonical.com"
          destinationType: external
        - destinationUrl: "motd.ubuntu.com"
          destinationType: external
        - destinationUrl: "update.traefik.io"
          destinationType: external
        sourceIpRange:
        - addressPrefix: "0.0.0.0"
          prefixLen: 0
    

    Para la depuración o experimentación, puede cambiar el valor del parámetro loglevel a depurar.

  2. Cree el recurso personalizado para crear una instancia de administración de redes superpuestas.

    kubectl apply -f lnm-cr.yaml
    
  3. Vea el servicio Kubernetes de administración de redes superpuestas:

    kubectl get services -n azure-iot-operations
    
    NAME           TYPE           CLUSTER-IP    EXTERNAL-IP   PORT(S)                                      AGE
    lnm-level-4   LoadBalancer   10.43.91.54   192.168.0.4   80:30530/TCP,443:31117/TCP,10000:31914/TCP   95s
    

Adición de la configuración de iptables para AKS Edge Essentials

Importante

Este paso solo es aplicable al hospedar Layered Network Management en un clúster de AKS Edge Essentials.

La implementación de administración de redes superpuestas crea un servicio de Kubernetes de tipo LoadBalancer. Para asegurarse de que el servicio es accesible desde fuera del clúster de Kubernetes, debe asignar los puertos del host de Windows subyacentes a los puertos adecuados en el servicio administración de redes superpuestas.

netsh interface portproxy add v4tov4 listenport=443 listenaddress=0.0.0.0 connectport=443 connectaddress=192.168.0.4
netsh interface portproxy add v4tov4 listenport=10000 listenaddress=0.0.0.0 connectport=10000 connectaddress=192.168.0.4

Una vez que estos comandos se ejecutan correctamente, el tráfico recibido en los puertos 443 y 10000 del host de Windows se enruta al servicio Kubernetes. Al configurar el DNS personalizado para la capa de red de nivel secundario, dirige el tráfico de red a la dirección IP de este host de Windows y, a continuación, al servicio de administración de redes superpuestas que se ejecuta en él.