次の方法で共有


クイックスタート: Azure 環境でクラスターを Arc 対応にするように Azure IoT Layered Network Management (プレビュー) を構成する

このクイックスタートでは、レベル 4 およびレベル 3 の Purdue ネットワーク上に Azure IoT Layered Network Management (プレビュー) を設定します。 ネットワーク レベル 4 にはインターネット アクセスがあり、レベル 3 にはありません。 トラフィックをレベル 3 から Azure にルーティングするように Layered Network Management (プレビュー) を構成します。 最後に、インターネットに直接接続されていない場合でも、レベル 3 で K3S クラスターを Arc 対応にできます。

  • Layered Network Management がデプロイされた レベル 4 のAKS クラスター。
  • レベル 3 は、レベル 4 の Layered Network Management インスタンスを使用して Azure への接続を実現する Linux VM 上で実行されている K3S クラスターです。 レベル 3 ネットワークは、ポート 443 および 8084 でレベル 4 ネットワークへの送信アクセスを持つよう構成されています。 その他の送信アクセスはすべて無効になっています。

Layered Network Management アーキテクチャでは、許可リストに載せられた URL がレベル 4 ネットワークに再ポイントされる、レベル 3 ネットワーク上の DNS 構成が必要です。 この例では、このセットアップは、K3S に付属する既定の DNS 解決メカニズムである CoreDNS 上に構築された自動セットアップを使用して実現されます。

前提条件

これらの前提条件は、階層型ネットワーク管理を個別にデプロイし、子レベルのクラスターを Arc 対応にする場合にのみ適用されます。

  • AKS クラスター
  • Azure Linux Ubuntu 22.04.3 LTS 仮想マシン
  • インターネット、およびレベル 3 ネットワークとレベル 4 ネットワークの両方にアクセスできるジャンプボックスまたはセットアップ マシン

Layered Network Management (プレビュー) を AKS クラスターにデプロイする

こちらの手順では、AKS クラスターに Layered Network Management をデプロイします。 クラスターは ISA-95 モデルの最上位レイヤーです。 このセクションの最後には、下の Azure Arc 対応クラスターからのトラフィックを受け入れ、Azure IoT Operations サービスのデプロイをサポートする準備ができている Layered Network Management インスタンスを持つことになります。

  1. クラスターに接続する」の手順に従って、AKS クラスター ジャンプボックスを管理するように kubectl を構成します。

  2. 次の Azure CLI コマンドを使用して、Layered Network Management オペレーターをインストールします。

    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 という名前のファイルを作成して、Layered Network Management カスタム リソースを作成します。

    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 ファイルに基づいて Layered Network Management インスタンスを作成するには、次を実行します。

    kubectl apply -f level4.yaml
    

    この手順では、n 個のポッド、1 つのサービス、2 つの構成マップが作成されます。 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. この例では、Layered Network Management インスタンスは、外部 IP 20.81.111.118 でトラフィックを受け入れる準備が整っています。

レベル 3 クラスターの準備

レベル 3 では、Linux 仮想マシン上に K3S Kubernetes クラスターを作成します。 クラスターの設定を簡略化するには、インターネット アクセスができる Azure Linux Ubuntu 22.04.3 LTS VM を作成し、ジャンプボックスから ssh を有効にします。

ヒント

分離されたネットワークでセットアップを開始する、より現実的なシナリオでは、ソリューション用の事前構築済みイメージ、または K3S の Air-Gap Install アプローチを使ってマシンを準備できます。

  1. Linux VM で、次のコマンドを使用して K3S をインストールして構成します。

    curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644
    
  2. レベル 3 のネットワークの分離を構成します。 以下の手順を使って、レベル 4 の Layered Network Management にのみトラフィックを送信するようにレベル 3 クラスターを構成します。

    • VM のネットワーク インターフェイスのネットワーク セキュリティ グループを参照します。
    • レベル 3 仮想マシンからのすべての送信トラフィックを拒否する、追加の送信セキュリティ規則を追加します。
    • 最も優先度の高い別のアウトバウンド規則を追加して、ポート 443 と 8084 でレベル 4 AKS クラスターの IP への送信を許可します

    ネットワーク セキュリティ グループのアウトバウンド規則のスクリーンショット。

分離レイヤー内のクラスターを Arc にプロビジョニングする

以下の手順では、レベル 4 の階層型ネットワーク管理インスタンスを使ってレベル 3 クラスターを Arc 対応にします。

  1. クラスターにアクセスするための kubectl を持つようにジャンプボックスを設定します。

    Linux VM で構成ファイルを生成します。

    k3s kubectl config view --raw > config.level3
    

    ジャンプボックスで、config.level3 ファイルを ~/.kube ディレクトリにコピーし、config に名前を変更して、レベル 3 K3S クラスターへの kubectl アクセスを設定します。 構成ファイル内のサーバー エントリは、レベル 3 VM の IP アドレスまたはドメイン名に設定する必要があります。

  2. 許可リストに載せる URL を追加するため、CoreDNS (K3S クラスター用の既定の DNS サーバー) によって提供される拡張メカニズムを使用するには、「CoreDNS を構成する」を参照してください。

  3. ジャンプボックスで次のコマンドを実行して、クラスターを 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>
    

    connectedk8s の詳細については、「クイック スタート: 既存の 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 portal を使用して、このクラスターのプロビジョニングを検証することもできます。 このクイック スタートは、Kubernetes クラスターで Arc を有効にする Layered Network Management の機能について説明するものです。 これで、分離ネットワーク内で、このクラスターに組み込まれている Arc エクスペリエンスを試すことができます。

次のステップ