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.
- Clúster conectado a AKS Edge Essentials - Arc y categoría de GitOps en requisitos y matriz de soporte técnico de AKS Edge Essentials
- Requisitos del sistema de Kubernetes - habilitado para Azure Arc del clúster K3S Kubernetes
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
Ubuntu 22.04 LTS es la versión recomendada para la máquina host.
Instale Helm 3.8.0 o posterior.
Instale Kubectl.
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
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.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
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
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
yRESOURCE_GROUP
se crean en función de los nombres que proporcione. Consulte las regiones admitidas de Operaciones de IoT de Azure para seleccionarLOCATION
# 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>"
Establezca el contexto de suscripción de Azure para todos los comandos:
az account set -s $SUBSCRIPTION_ID
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"
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
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
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
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.
Cree un archivo
lnm-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.
Cree el recurso personalizado para crear una instancia de administración de redes superpuestas.
kubectl apply -f lnm-cr.yaml
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.