Inicio rápido: Configuración de Azure IoT Layered Network Management (versión preliminar) para habilitar un clúster en el entorno de Azure
En este inicio rápido, configurará Azure IoT Layered Network Management (versión preliminar) en una red de nivel 4 y 3 de Purdue. El nivel de red 4 tiene acceso a Internet y el nivel 3 no. Configure Layered Network Management (versión preliminar) para enrutar el tráfico de red de nivel 3 a Azure. Por último, puede habilitar para Arc el clúster K3S en el nivel 3 incluso no está conectado directamente a Internet.
- Nivel 4 de un clúster de AKS con la Administración de red superpuesta implementada.
- El nivel 3 es un clúster K3S que se ejecuta en una máquina virtual Linux que utiliza la instancia de Administración de red superpuesta del nivel 4 para lograr la conexión con Azure. La red de nivel 3 está configurada para tener acceso saliente a la red de nivel 4 en los puertos 443 y 8084. Todos los demás accesos salientes están deshabilitados.
La arquitectura de Administración de red superpuesta requiere la configuración de DNS en la red de nivel 3, donde las URL de la lista permitida se redireccionan a la red de nivel 4. En este ejemplo, este ajuste se realiza utilizando una configuración automatizada basada en CoreDNS, el mecanismo de resolución DNS por defecto que se incluye con k3s.
Requisitos previos
Estos requisitos previos solo son para implementar la administración de redes superpuestas de forma independiente y habilitar para Arc el clúster de nivel secundario.
- Un clúster de AKS
- Una máquina virtual Linux Ubuntu 22.04.3 LTS de Azure
- Una jumpbox o una máquina de instalación que tiene acceso a Internet y a las redes de nivel 3 y nivel 4
Implementación de Layered Network Management (versión preliminar) en el clúster de AKS
Estos pasos implementan la Administración de red superpuesta en el clúster AKS. El clúster es la capa superior del modelo ISA-95. Al final de esta sección, tendrá una instancia de Administración de red superpuesta lista para aceptar tráfico del clúster habilitado para Azure Arc que se encuentra debajo y admitir la implementación del servicio Azure IoT Operations.
Configure
kubectl
para administrar su clúster AKS desde su jumpbox siguiendo los pasos en Conectarse al clúster.Instale el operador Administración de red superpuesta con el siguiente comando de la CLI de Azure:
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
Para validar que la instalación se ha realizado correctamente, ejecute:
kubectl get pods
Debería ver una salida parecida a la del siguiente ejemplo:
NAME READY STATUS RESTARTS AGE aio-lnm-operator-7db49dc9fd-kjf5x 1/1 Running 0 78s
Cree el recurso personalizado Administración de red superpuesta creando un archivo llamado level4.yamlcon el siguiente contenido:
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: "management.azure.com" destinationType: external - destinationUrl: "*.dp.kubernetesconfiguration.azure.com" destinationType: external - destinationUrl: "login.microsoftonline.com" destinationType: external - destinationUrl: "*.login.microsoft.com" destinationType: external - destinationUrl: "login.windows.net" destinationType: external - destinationUrl: "mcr.microsoft.com" destinationType: external - destinationUrl: "*.data.mcr.microsoft.com" destinationType: external - destinationUrl: "gbl.his.arc.azure.com" destinationType: external - destinationUrl: "*.his.arc.azure.com" destinationType: external - destinationUrl: "k8connecthelm.azureedge.net" destinationType: external - destinationUrl: "guestnotificationservice.azure.com" destinationType: external - destinationUrl: "*.guestnotificationservice.azure.com" destinationType: external - destinationUrl: "sts.windows.net" destinationType: external - destinationUrl: "k8sconnectcsp.azureedge.net" destinationType: external - destinationUrl: "*.servicebus.windows.net" destinationType: external - destinationUrl: "graph.microsoft.com" destinationType: external - destinationUrl: "*.arc.azure.net" destinationType: external - destinationUrl: "*.obo.arc.azure.com" destinationType: external - destinationUrl: "linuxgeneva-microsoft.azurecr.io" destinationType: external - destinationUrl: "graph.windows.net" destinationType: external - destinationUrl: "*.azurecr.io" destinationType: external - destinationUrl: "*.blob.core.windows.net" destinationType: external - destinationUrl: "*.vault.azure.net" destinationType: external - destinationUrl: "*.blob.storage.azure.net" destinationType: external sourceIpRange: - addressPrefix: "0.0.0.0" prefixLen: 0
Para crear la instancia de Administración de red superpuesta basada en el archivo level4.yaml, ejecute:
kubectl apply -f level4.yaml
Este paso crea n pods, un servicio y dos mapas de configuración. n se basa en el número de réplicas del recurso personalizado.
Para validar la instancia, ejecute:
kubectl get pods
La salida debe ser similar a la siguiente:
NAME READY STATUS RESTARTS AGE aio-lnm-operator-7db49dc9fd-kjf5x 1/1 Running 0 78s aio-lnm-level4-7598574bf-2lgss 1/1 Running 0 4s
Para ver el servicio, ejecute:
kubectl get services
La salida debería tener un aspecto similar al ejemplo siguiente:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE aio-lnm-level4 LoadBalancer 10.0.141.101 20.81.111.118 80:30960/TCP,443:31214/TCP 29s
Para ver los mapas de configuración, ejecute:
kubectl get cm
La salida debería tener un aspecto similar al ejemplo siguiente:
NAME DATA AGE aio-lnm-level4-config 1 50s aio-lnm-level4-client-config 1 50s
En este ejemplo, la instancia de administración de red superpuesta está lista para aceptar el tráfico en la dirección IP
20.81.111.118
externa.
Preparación del clúster de nivel 3
En el nivel 3, creará un clúster de Kubernetes K3S en una máquina virtual Linux. Para simplificar la configuración del clúster, puede crear la máquina virtual de Linux Ubuntu 22.04.3 LTS de Azure con acceso a Internet y habilitar ssh desde la jumpbox.
Sugerencia
En un escenario más realista que inicia la configuración en la red aislada, puede preparar la máquina con la imagen pregenerada para la solución o el enfoque de instalación de Air-Gap de K3S.
En la máquina virtual Linux, instale y configure K3S mediante los siguientes comandos:
curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644
Configure el aislamiento de red para el nivel 3. Siga estos pasos para configurar el clúster de nivel 3 para enviar solo el tráfico a la administración de redes superpuestas en el nivel 4.
- Vaya al grupo de seguridad de red de la interfaz de red de la máquina virtual.
- Agregue una regla de seguridad de salida adicional para denegar todo el tráfico saliente desde la máquina virtual de nivel 3.
- Agregue otra regla de salida con la prioridad más alta para permitir la salida a la dirección IP del clúster de AKS de nivel 4 en los puertos 443 y 8084.
Aprovisionamiento del clúster en una capa aislada para Arc
Con los pasos siguientes, habilitará el clúster de nivel 3 para Arc mediante la instancia de administración de red superpuesta en el nivel 4.
Configure el jumpbox para que kubectl tenga acceso al clúster.
Genere el archivo de configuración en la máquina virtual Linux.
k3s kubectl config view --raw > config.level3
En su jumpbox, configure el acceso kubectl al cluster k3s de nivel 3 copiando el archivo
config.level3
en el directorio~/.kube
y renombrándolo aconfig
. La entrada del servidor en el archivo de configuración debe establecerse en la dirección IP o nombre de dominio de la máquina virtual de nivel 3.Consulte Configurar CoreDNS para usar mecanismos de extensión proporcionados por CoreDNS (el servidor DNS predeterminado para clústeres K3S) para agregar las direcciones URL permitidas.
Ejecute los siguientes comandos en el jumpbox para conectar el clúster a Arc. Este paso requiere la CLI de Azure. Instale la CLI de Az si es necesario.
az login az account set --subscription <your Azure subscription ID> az connectedk8s connect -g <your resource group name> -n <your connected cluster name>
Para obtener más información sobre connectedk8s, consulte Inicio rápido: Conexión de un clúster de Kubernetes existente a Azure Arc .
Debería ver una salida como la del siguiente ejemplo:
This operation might take a while... The required pre-checks for onboarding have succeeded. Azure resource provisioning has begun. Azure resource provisioning has finished. Starting to install Azure arc agents on the Kubernetes cluster. { "agentPublicKeyCertificate": "MIICCgKCAgEAmU+Pc55pc3sOE2Jo5JbAdk+2OprUziCbgfGRFfbMHO4dT7A7LDaDk7tWwvz5KwUt66eMrabI7M52H8xXvy1j7YwsMwR5TaSeHpgrUe1/4XNYKa6SN2NbpXIXA3w4aHgtKzENm907rYMgTO9gBJEZNJpqsfCdb3E7AHWQabUe9y9T8aub+arBHLQ3furGkv8JnN2LCPbvLnmeLfc1J5 .... ....
Su clúster Kubernetes ya está habilitado para Arc y aparece en el grupo de recursos que proporcionó en el comando conectar az connectedk8s. También puede validar el aprovisionamiento de este clúster a través de Azure Portal. Este inicio rápido es para mostrar la funcionalidad de Administración de rede superpuesta para habilitar Arc para el clúster de Kubernetes. Ahora puede probar las experiencias integradas de Arc en este clúster dentro de la red aislada.
Pasos siguientes
- Para saber cómo configurar un clúster en una red aislada para las operaciones de Azure IoT que se van a implementar, consulte Configuración del servicio de administración de redes superpuestas para habilitar Operaciones de IoT de Azure en una red aislada
- Para más información sobre cómo configurar entornos de red completos para escenarios relacionados con Operaciones de Azure IoT, consulte Creación de un entorno de red de ejemplo