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


Краткое руководство. Настройка azure IoT Layered Network Management (предварительная версия) для включения кластера в среде Azure с поддержкой Arc

В этом кратком руководстве описана настройка управления сетью с уровнем Интернета вещей Azure (предварительная версия) на уровне 4 и 3 сети Purdue. Сетевой уровень 4 имеет доступ к Интернету и уровень 3 не поддерживается. Вы настраиваете управление многоуровневой сетью (предварительная версия) для маршрутизации сетевого трафика с уровня 3 в Azure. Наконец, вы можете включить кластер K3S на уровне 3, даже не подключен к Интернету напрямую.

  • Уровень 4 кластера AKS с развернутым многоуровневым управлением сетями.
  • Уровень 3 — это кластер K3S, работающий на виртуальной машине Linux, использующей экземпляр управления многоуровневой сетью на уровне 4 для достижения подключения к Azure. Сеть уровня 3 настроена для исходящего доступа к сети уровня 4 на портах 443 и 8084. Все остальные исходящие доступ отключены.

Архитектура управления многоуровневой сетью требует настройки DNS на уровне 3 сети, где разрешенные URL-адреса переназначаются в сеть уровня 4. В этом примере эта настройка выполняется с помощью автоматической установки, созданной на основе CoreDNS, механизма разрешения DNS по умолчанию, который поставляется с K3s.

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

Эти предварительные требования предназначены только для развертывания многоуровневого сетевого управления независимо и включения кластера дочернего уровня Arc.

  • Кластер AKS
  • Виртуальная машина Linux Ubuntu 22.04.3 LTS
  • Компьютер с переходом или настройкой, имеющий доступ к Интернету и сети уровня 3 и уровня 4.

Развертывание многоуровневого сетевого управления (предварительная версия) в кластере AKS

Эти действия развертывают многоуровневую сетевую службу управления в кластере AKS. Кластер является верхним слоем в модели ISA-95. В конце этого раздела у вас есть экземпляр управления многоуровневой сетью, готовый принять трафик из кластера с поддержкой Azure Arc и поддерживать развертывание службы Операций Интернета вещей Azure.

  1. Настройте kubectl для управления кластером AKS из папки jumpbox, выполнив действия, описанные в разделе "Подключение к кластеру".

  2. Установите оператор управления многоуровневой сетью с помощью следующей команды Azure CLI:

    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
    
  3. Чтобы проверить успешность установки, выполните следующую команду:

    kubectl get pods
    

    Вы увидите выходные данные, которые выглядят следующим образом:

    NAME                                READY   STATUS        RESTARTS   AGE
    aio-lnm-operator-7db49dc9fd-kjf5x   1/1     Running       0          78s
    
  4. Создайте пользовательский ресурс управления многоуровневой сетью, создав файл с именем level4.yaml со следующим содержимым:

    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
    
  5. Чтобы создать экземпляр управления многоуровневой сетью на основе файла level4.yaml , выполните следующую команду:

    kubectl apply -f level4.yaml
    

    На этом шаге создаются n pod, одна служба и две карты конфигурации. n основан на количестве реплик в пользовательском ресурсе.

  6. Чтобы проверить экземпляр, выполните следующую команду:

    kubectl get pods
    

    Выходные данные должны выглядеть так:

    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
    
  7. Чтобы просмотреть службу, выполните следующую команду:

    kubectl get services
    

    Выходные данные должны выглядеть следующим образом:

    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
    
  8. Чтобы просмотреть карты конфигурации, выполните следующую команду:

    kubectl get cm
    

    Выходные данные должны выглядеть следующим образом:

    NAME                           DATA   AGE
    aio-lnm-level4-config          1      50s
    aio-lnm-level4-client-config   1      50s
    
  9. В этом примере экземпляр управления многоуровневой сетью готов принять трафик во внешнем IP-адресе 20.81.111.118.

Подготовка кластера уровня 3

На уровне 3 создается кластер K3S Kubernetes на виртуальной машине Linux. Чтобы упростить настройку кластера, можно создать виртуальную машину Azure Linux Ubuntu 22.04.3 LTS с доступом к Интернету и включить ssh из прыжков.

Совет

В более реалистичном сценарии, который запускает настройку в изолированной сети, вы можете подготовить компьютер с предварительно созданным образом для решения или подхода Air-Gap Install K3S.

  1. На виртуальной машине Linux установите и настройте K3S с помощью следующих команд:

    curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644
    
  2. Настройте сетевую изоляцию для уровня 3. Выполните следующие действия, чтобы настроить кластер уровня 3 только для отправки трафика в управление многоуровневой сетью на уровне 4.

    • Перейдите к группе безопасности сети сетевого интерфейса виртуальной машины.
    • Добавьте дополнительное правило безопасности для исходящего трафика, чтобы запретить весь исходящий трафик с виртуальной машины уровня 3.
    • Добавьте еще одно правило исходящего трафика с наивысшим приоритетом, чтобы разрешить исходящий трафик к IP-адресу кластера 4 AKS уровня 443 и 8084.

    Снимок экрана: правила исходящего трафика группы безопасности сети.

Подготовка кластера в изолированном слое в Arc

Выполнив следующие действия, вы включите кластер уровня 3 с помощью экземпляра управления многоуровневой сетью на уровне 4.

  1. Настройте прыжки, чтобы получить доступ kubectl к кластеру.

    Создайте файл конфигурации на виртуальной машине Linux.

    k3s kubectl config view --raw > config.level3
    

    На панели перехода настройте доступ kubectl к кластеру уровня 3 k3s, скопируйте файл в ~/.kube каталог и переименуйте config.level3 его configв . Запись сервера в файле конфигурации должна иметь IP-адрес или доменное имя виртуальной машины уровня 3.

  2. Чтобы добавить разрешенные URL-адреса, обратитесь к настройке CoreDNS для использования механизмов расширения, предоставляемых CoreDNS (DNS-сервер по умолчанию для кластеров K3S).

  3. Выполните следующие команды в папке jumpbox, чтобы подключить кластер к Arc. Для этого шага требуется Azure CLI. Установите Az CLI при необходимости.

    az login
    az account set --subscription <your Azure subscription ID>
    
    az connectedk8s connect -g <your resource group name> -n <your connected cluster name>
    

    Дополнительные сведения о подключенныхk8s см . в кратком руководстве по подключению существующего кластера Kubernetes к Azure Arc .

  4. Вы должны увидеть выходные данные, как показано в следующем примере:

    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
      ....
      ....
    
  5. Кластер Kubernetes теперь включен Arc и указан в группе ресурсов, предоставленной в команде az connectedk8s connect. Вы также можете проверить подготовку этого кластера с помощью портал Azure. Это краткое руководство по демонстрации возможностей управления многоуровневой сетью для включения Arc для кластера Kubernetes. Теперь вы можете попробовать встроенные возможности Arc в этом кластере в изолированной сети.

Следующие шаги