L7 入力方向コントローラとしての NSX ALB

Kubernetes クラスタで入力方向コントローラとして NSX Advanced Load Balancer を使用するには、NSX ALB Enterprise バージョンが必要です。または、Tanzu Kubernetes Grid クラスタの入力方向コントローラとして Contour を使用することもできます。

AKO を介して Tanzu Kubernetes Grid に統合すると、NSX ALB は次の 3 つの入力方向モードをサポートします:NodePort、ClusterIP、および NodePortLocal。要件に基づいてタイプを選択します。

NodePort

NSX ALB 入力方向に NodePort モードを使用する場合は、入力方向バックエンド サービスを NodePort モードにする必要があります。このタイプでは、ネットワーク トラフィックは、クライアントから NSX ALB SE にルーティングされ、次にクラスタ ノードにルーティングされてから、ポッドに到達します。NSX ALB SE はトラフィックをノードにルーティングし、kube-proxy はトラフィックをノードからターゲット ポッドにルーティングします。

次の図は、ネットワーク トラフィックが NodePort モードでどのようにルーティングされるかを示しています。

NodePort モードのネットワーク トラフィック

NodePort モードでは、異なるクラスタ間での NSX ALB SE の共有がサポートされます。ただし、このタイプのサービスは、NodePort モードのバックエンド サービスを使用する必要があるため、クラスタ内のポートを公開できます。また、ノードからポッドにトラフィックをルーティングするために、kube-proxy に余分なホップが必要です。

管理クラスタで NodePort 入力方向モードを構成するには、次の手順を実行します。

  1. 次のように、AKODeploymentConfig CR オブジェクトを作成します。

    apiVersion: networking.tkg.tanzu.vmware.com/v1alpha1
    kind: AKODeploymentConfig
    metadata:
      name: install-ako-for-l7-node-port
    spec:
      adminCredentialRef:
        name: avi-controller-credentials
        namespace: tkg-system-networking
      certificateAuthorityRef:
        name: avi-controller-ca
        namespace: tkg-system-networking
      controller: 10.191.192.137
      cloudName: Default-Cloud
      serviceEngineGroup: Default-Group
      clusterSelector:
        matchLabels:
          nsx-alb-node-port-l7: "true"
      controlPlaneNetwork:
        cidr: 10.191.192.0/20
        name: VM Network
      dataNetwork:
        cidr: 10.191.192.0/20
        name: VM Network
      extraConfigs:
        cniPlugin: antrea
        disableStaticRouteSync: true
        ingress:
          defaultIngressController: true # optional, if set to false, you need to specify ingress class in your ingress object
          disableIngressClass: false  # required
          serviceType: NodePort       # required
          shardVSSize: SMALL
          nodeNetworkList:            # required
          - networkName: VM Network
            cidrs:
            - 10.191.192.0/20
    
  2. 管理クラスタに変更を適用します。

    kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-node-port.yaml
    
  3. ワークロード クラスタで NodePort 入力方向モードを有効にするには、ワークロード クラスタ構成 YAML ファイルを作成し、次のフィールドを追加します。

    AVI_LABELS: '{"nsx-alb-node-port-l7":"true"}'
    
  4. tanzu cluster create コマンドを使用してワークロード クラスタを展開します。

ワークロード クラスタを vSphere に展開する方法の詳細については、「ワークロード クラスタの作成」を参照してください。

NSX ALB 入力方向サービス プロバイダは、install-ako-l7-node-port AKODeploymentConfig オブジェクトのクラスタ セレクタと一致する AVI_LABELS を持つワークロード クラスタで NodePort モードを使用するように構成されました。

ClusterIP

ClusterIP モードでは、ネットワーク トラフィックはクライアントから NSX ALB SE にルーティングされ、次にポッドにルーティングされます。このモードでは、入力方向バックエンド サービス タイプとして ClusterIP が必要です。NSX ALB SE は、スタティック ルートを利用してトラフィックをポッドにルーティングします。

次の図は、ネットワーク トラフィックが ClusterIP モードでどのようにルーティングされるかを示しています。

ClusterIP モードのネットワーク トラフィック

ClusterIP モードは、SE からポッドに直接ルーティングすることで、ネットワーク トラフィックを簡素化します。このモードでは、クラスタ内のポートの公開も防止されます。ただし、このモードでは、SE をクラスタに接続する必要があるため、SE をクラスタ間で共有することはできません。

この機能を有効にするには、次の手順を実行します。

  1. 次のように、AKODeploymentConfig CR オブジェクトを作成します。

    apiVersion: networking.tkg.tanzu.vmware.com/v1alpha1
    kind: AKODeploymentConfig
    metadata:
      name: install-ako-for-l7-cluster-ip
    spec:
      adminCredentialRef:
        name: avi-controller-credentials
        namespace: tkg-system-networking
      certificateAuthorityRef:
        name: avi-controller-ca
        namespace: tkg-system-networking
      controller: 10.191.192.137
      cloudName: Default-Cloud
      serviceEngineGroup: SEG-2   # must be unique, can only be used for one cluster
      clusterSelector:
        matchLabels:
          nsx-alb-cluster-ip-l7: "true"
      controlPlaneNetwork:
        cidr: 10.191.192.0/20
        name: VM Network
      dataNetwork:
        cidr: 10.191.192.0/20
        name: VM Network
      extraConfigs:
        cniPlugin: antrea
        disableStaticRouteSync: false # required
        ingress:
          defaultIngressController: true # optional, if set to false, you need to specify ingress class in your ingress object
          disableIngressClass: false  # required
          serviceType: ClusterIP      # required
          shardVSSize: SMALL 
          nodeNetworkList:            # required
          - networkName: VM Network
            cidrs:
            - 10.191.192.0/20
    
    
  2. 管理クラスタに変更を適用します。

    kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-cluster-ip.yaml
    
  3. ワークロード クラスタで ClusterIP 入力方向モードを有効にするには、ワークロード クラスタ構成 YAML ファイルを作成し、次のフィールドを追加します。

    AVI_LABELS: '{"nsx-alb-cluster-ip-l7":"true"}'
    
  4. tanzu cluster create コマンドを使用してワークロード クラスタを展開します。

ワークロード クラスタを vSphere に展開する方法の詳細については、「ワークロード クラスタの作成」を参照してください。

NSX ALB 入力方向サービス プロバイダは、install-ako-l7-cluster-ip AKODeploymentConfig オブジェクトのクラスタ セレクタと一致する AVI_LABELS を持つワークロード クラスタで ClusterIP モードを使用するように構成されました。

他のワークロード クラスタで ClusterIP 入力方向モードを有効にするには、Avi Controller に新しい SE を作成し、管理クラスタにファイルを適用する前に新しい SE の名前を指定する AKODeploymentConfig オブジェクトを作成する必要があります。

NodePortLocal(Antrea CNI の場合)

Antrea を CNI として使用する場合は、NSX ALB で NodePortLocal 入力方向モードを有効にできます。Antrea の NodePortLocal 機能を利用して、SE からポッドにトラフィックを直接ルーティングします。このモードでは、ネットワーク トラフィックはクライアントから NSX ALB SE にルーティングされ、次にポッドにルーティングされます。このモードでは、入力方向バックエンド タイプとして ClusterIP が必要です。また、Tanzu Kubernetes Grid で ANTREA_NODEPORTLOCAL 構成変数を true に設定する必要があります。Antrea の NodePortLocal 機能の詳細については、Antrea ドキュメントの「NodePortLocal (NPL)」を参照してください。

次の図は、ネットワーク トラフィックが NodePortLocal モードでどのようにルーティングされるかを示しています。

NodePortLocal モードのネットワーク トラフィック

NodePortLocal モードは、SE からポッドに直接ルーティングすることで、ネットワーク トラフィックを簡素化します。このモードでは、クラスタの共有 SE がサポートされ、クラスタ内のポートの公開を防止します。

既存の管理クラスタで NodePortLocal 入力方向モードを構成するには、次の手順を実行します。

  1. 次のように、AKODeploymentConfig CR オブジェクトを作成します。

    apiVersion: networking.tkg.tanzu.vmware.com/v1alpha1
    kind: AKODeploymentConfig
    metadata:
      name: install-ako-for-l7-node-port-local
    spec:
      adminCredentialRef:
        name: avi-controller-credentials
        namespace: tkg-system-networking
      certificateAuthorityRef:
        name: avi-controller-ca
        namespace: tkg-system-networking
      controller: 10.191.192.137
      cloudName: Default-Cloud
      serviceEngineGroup: Default-Group
      clusterSelector:
        matchLabels:
          nsx-alb-node-port-local-l7: "true"
      controlPlaneNetwork:
        cidr: 10.191.192.0/20
        name: VM Network
      dataNetwork:
        cidr: 10.191.192.0/20
        name: VM Network
      extraConfigs:
        cniPlugin: antrea
        disableStaticRouteSync: true
        ingress:
          defaultIngressController: true # optional, if set to false, you need to specify ingress class in your ingress object
          disableIngressClass: false  # required
          serviceType: NodePortLocal  # required
          shardVSSize: SMALL
          nodeNetworkList:            # required
          - networkName: VM Network
            cidrs:
            - 10.191.192.0/20
    
    
  2. 管理クラスタに変更を適用します。

    kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-node-port-local.yaml
    
  3. ワークロード クラスタで NodePortLocal 入力方向モードを有効にするには、ワークロード クラスタ構成 YAML ファイルを作成し、次のフィールドを追加します。

    AVI_LABELS: '{"nsx-alb-node-port-local-l7":"true"}'
    
    ANTREA_NODEPORTLOCAL: "true"
    
  4. tanzu cluster create コマンドを使用してワークロード クラスタを展開します。

NSX ALB 入力方向サービス プロバイダは、install-ako-l7-node-port-local AKODeploymentConfig オブジェクトのクラスタ セレクタと一致する AVI_LABELS を持つワークロード クラスタで NodePortLocal モードを使用するように構成されました。

管理クラスタでの NSX ALB L7 入力方向のサポート

NSX ALB をクラスタ エンドポイント VIP プロバイダとして使用する場合は、管理クラスタで NodePort 入力方向モードのみがサポートされます。クラスタ エンドポイント VIP プロバイダとして NSX ALB を使用しない場合は、3 つの入力方向モードがすべてサポートされます。

管理クラスタで L7 入力方向を有効にするには、次の手順を実行します。

  1. 管理クラスタで AKODeploymentConfig ファイルを編集します。

    kubectl --context=MGMT-CLUSTER-CONTEXT edit adc install-ako-for-management-cluster
    
  2. 開いたファイルで、次の例のように spec.extraConfigs.ingress フィールドを変更します。

      extraConfigs:
        cniPlugin: antrea
        disableStaticRouteSync: true
        ingress:
          defaultIngressController: true # optional, if set to false, you need to specify ingress class in your ingress object
          disableIngressClass: false  # required
          serviceType: NodePort       # required
          shardVSSize: SMALL
          nodeNetworkList:            # required
          - networkName: VM Network
            cidrs:
            - 10.191.192.0/20
    
    
check-circle-line exclamation-circle-line close-line
Scroll to top icon