Поделиться через


Настройка azure IoT Layered Network Management (предварительная версия) на уровне 4 кластера

Azure IoT Layered Network Management (предварительная версия) — это компонент для поддержки операций Интернета вещей Azure. Однако его необходимо развернуть отдельно на верхнем сетевом уровне для поддержки операций Интернета вещей Azure на нижнем уровне. На верхнем уровне сетевых слоев (обычно это уровень 4 сетевой архитектуры ISA-95), кластер и служба управления сетями уровня имеют прямой доступ к Интернету. После завершения установки служба управления многоуровневой сетью (предварительная версия) готова к получению сетевого трафика из дочернего слоя и перенаправит ее в Azure Arc.

Необходимые компоненты

Соблюдайте следующие минимальные требования к развертыванию многоуровневого сетевого управления отдельно в системе.

Настройка кластера Kubernetes на уровне 4

Чтобы настроить только многоуровневое управление сетями, предварительные требования проще, чем развертывание операций Интернета вещей Azure. Это необязательно для выполнения общих требований для операций Интернета вещей Azure в подготовке кластера Kubernetes.

Следующие действия по настройке кластера AKS Edge Essentials и K3S Kubernetes проверяются корпорацией Майкрософт.

Подготовка компьютера Ubuntu

  1. Ubuntu 22.04 LTS — это рекомендуемая версия для хост-компьютера.

  2. Установите Helm 3.8.0 или более поздней версии.

  3. Установите Kubectl.

  4. Установите интерфейс командной строки Azure. Вы можете установить Azure CLI непосредственно на компьютере уровня 4 или на другом компьютере разработчика или прыжка, если вы планируете удаленно получить доступ к кластеру уровня 3. Если вы решили удаленно получить доступ к кластеру Kubernetes, чтобы обеспечить очистку узла кластера, выполните связанные команды kubectl и az", связанные с компьютером разработчика для остальных действий, описанных в этой статье.

    • Установите Azure CLI. Выполните действия, описанные в статье "Установка Azure CLI в Linux".

    • Установите подключенныеk8s и другие расширения.

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

Создание кластера K3S

  1. Установите K3S со следующей командой:

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

    Дополнительные сведения см. в кратком руководстве по K3s.

    Внимание

    Не забудьте использовать --disable=traefik параметр для отключения traefik. В противном случае может возникнуть проблема при попытке выделить общедоступный IP-адрес для службы управления многоуровневой сетью в последующих шагах.

  2. Скопируйте файл yaml .kube/configконфигурации K3s в .

    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
    

Включение Arc кластера

  1. Войдите с помощью Azure CLI. Чтобы избежать проблем с разрешениями позже, важно интерактивно войти в систему с помощью окна браузера:

    az login
    
  2. Задайте переменные среды для шагов установки. Замените значения в <> допустимых значениях или именах. RESOURCE_GROUP Они CLUSTER_NAME создаются на основе указанных имен. Ознакомьтесь с поддерживаемыми регионами операций Интернета вещей Azure для выбора 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. Задайте контекст подписки Azure для всех команд:

    az account set -s $SUBSCRIPTION_ID
    
  4. Зарегистрируйте необходимых поставщиков ресурсов в подписке:

    Примечание.

    Этот шаг необходимо выполнить только один раз для каждой подписки. Чтобы зарегистрировать поставщиков ресурсов, необходимо разрешение на /register/action операцию, которая включается в роли участника подписки и владельца. Дополнительные сведения см. в разделе "Поставщики и типы ресурсов Azure".

    az provider register -n "Microsoft.ExtendedLocation"
    az provider register -n "Microsoft.Kubernetes"
    az provider register -n "Microsoft.KubernetesConfiguration"
    
  5. Используйте команду az group create, чтобы создать группу ресурсов в подписке Azure для хранения всех ресурсов:

    az group create --location $LOCATION --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID
    
  6. Используйте команду az connectedk8s connect, чтобы включить кластер Kubernetes и управлять им в группе ресурсов, созданной на предыдущем шаге:

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

Развертывание многоуровневой службы управления сетями в кластере

После включения Arc кластера Kubernetes можно развернуть службу управления многоуровневой сетью в кластере.

Установка оператора управления многоуровневой сетью

  1. Выполните следующую команду. Замените заполнители <RESOURCE GROUP> и <CLUSTER NAME> сведения о подключении Arc на предыдущем шаге.

    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. Используйте команду kubectl, чтобы проверить, запущен ли оператор управления многоуровневой сетью.

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

Настройка службы управления многоуровневой сетью

Создайте настраиваемый ресурс управления многоуровневой сетью.

  1. lnm-cr.yaml Создайте файл, как указано:

    • Для отладки или экспериментирования можно изменить значение параметра loglevel для отладки.
    • Дополнительные сведения о конечных точках см. в статье о конечных точках Операций Интернета вещей Azure.
    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
    
  2. Создайте настраиваемый ресурс для создания экземпляра управления многоуровневой сетью.

    kubectl apply -f lnm-cr.yaml
    
  3. Просмотрите службу Kubernetes с многоуровневой сетью:

    kubectl get services
    
    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
    

Добавление конфигурации iptables для AKS Edge Essentials

Внимание

Этот шаг применим только при размещении многоуровневого сетевого управления в кластере AKS Edge Essentials.

Развертывание управления многоуровневой сетью создает службу Kubernetes типа LoadBalancer. Чтобы служба была доступна за пределами кластера Kubernetes, необходимо сопоставить порты узла Windows с соответствующими портами в службе управления многоуровневой сетью.

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

После успешного выполнения этих команд трафик, полученный через порты 443 и 10000 на узле Windows, направляется в службу Kubernetes. При настройке настраиваемого DNS для уровня сети дочернего уровня вы направляете сетевой трафик к IP-адресу этого узла Windows, а затем в службу управления многоуровневой сетью, запущенной на нем.