NSX ALB als L7-Ingress-Controller

Um NSX Advanced Load Balancer als Ingress-Controller im Kubernetes-Cluster zu verwenden, benötigen Sie die NSX ALB Enterprise-Version. Alternativ können Sie Contour als Ingress-Controller in Ihren Tanzu Kubernetes Grid-Clustern verwenden.

Bei der Integration über AKO in Tanzu Kubernetes Grid unterstützt NSX ALB drei Ingress-Modi: NodePort, ClusterIP und NodePortLocal. Wählen Sie einen Typ basierend auf Ihren Anforderungen aus.

NodePort

Wenn Sie den NodePort-Modus für NSX ALB-Ingress verwenden möchten, muss sich der Ingress-Backend-Dienst im NodePort-Modus befinden. Bei diesem Typ wird der Netzwerkdatenverkehr vom Client zur NSX ALB SE und dann zu den Clusterknoten weitergeleitet, bevor er die Pods erreicht. Die NSX ALB SE leitet den Datenverkehr an die Knoten weiter, und kube-proxy hilft dabei, den Datenverkehr von den Knoten an die Ziel-Pods weiterzuleiten.

Das folgende Diagramm beschreibt, wie der Netzwerkdatenverkehr im NodePort-Modus weitergeleitet wird:

Netzwerkdatenverkehr im NodePort-Modus

Der NodePort-Modus unterstützt die gemeinsame Nutzung einer NSX ALB SE zwischen verschiedenen Clustern. Dieser Diensttyp kann jedoch einen Port im Cluster offenlegen, da er für die Verwendung des Backend-Diensts im NodePort-Modus erforderlich ist. Außerdem ist ein zusätzlicher Hop für kube-proxy erforderlich, um Datenverkehr vom Knoten zum Pod weiterzuleiten.

So konfigurieren Sie den NodePort-Ingress-Modus auf dem Verwaltungscluster:

  1. Erstellen Sie ein AKODeploymentConfig-CR-Objekt wie folgt:

    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. Wenden Sie die Änderungen auf den Verwaltungscluster an:

    kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-node-port.yaml
    
  3. Um den NodePort-Ingress-Modus auf den Arbeitslastclustern zu aktivieren, erstellen Sie eine YAML-Datei für die Arbeitslastclusterkonfiguration und fügen Sie das folgende Feld hinzu:

    AVI_LABELS: '{"nsx-alb-node-port-l7":"true"}'
    
  4. Stellen Sie den Arbeitslastcluster mit dem Befehl tanzu cluster create bereit.

Weitere Informationen zur Bereitstellung von Arbeitslastclustern auf vSphere finden Sie unter Erstellen von Arbeitslastclustern.

Der NSX ALB-Ingress-Dienstanbieter ist jetzt für die Verwendung des NodePort-Modus auf Arbeitslastclustern mit AVI_LABELS konfiguriert, die mit der Clusterauswahl im AKODeploymentConfig-Objekt install-ako-l7-node-port übereinstimmen.

ClusterIP

Im ClusterIP-Modus wird der Netzwerkdatenverkehr vom Client zur NSX ALB SE und dann zu den Pods weitergeleitet. Dieser Modus erfordert ClusterIP als Ingress-Backend-Diensttyp. Die NSX ALB SE leitet den Datenverkehr mithilfe der statischen Routen an die Pods weiter.

Das folgende Diagramm beschreibt, wie der Netzwerkdatenverkehr im ClusterIP-Modus weitergeleitet wird:

Netzwerkdatenverkehr im ClusterIP-Modus

Der ClusterIP-Modus vereinfacht den Netzwerkdatenverkehr, indem er direkt von der SE zu den Pods weitergeleitet wird. Dieser Modus verhindert auch die Offenlegung der Ports in einem Cluster. In diesem Modus können SEs jedoch nicht von Clustern gemeinsam genutzt werden, da eine SE an einen Cluster angehängt werden muss.

So aktivieren Sie diese Funktion:

  1. Erstellen Sie ein AKODeploymentConfig-CR-Objekt wie folgt:

    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. Wenden Sie die Änderungen auf den Verwaltungscluster an:

    kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-cluster-ip.yaml
    
  3. Um den ClusterIP-Ingress-Modus auf den Arbeitslastclustern zu aktivieren, erstellen Sie eine YAML-Datei für die Arbeitslastclusterkonfiguration und fügen Sie das folgende Feld hinzu:

    AVI_LABELS: '{"nsx-alb-cluster-ip-l7":"true"}'
    
  4. Stellen Sie den Arbeitslastcluster mit dem Befehl tanzu cluster create bereit.

Weitere Informationen zur Bereitstellung von Arbeitslastclustern auf vSphere finden Sie unter Erstellen von Arbeitslastclustern.

Der NSX ALB-Ingress-Dienstanbieter ist jetzt für die Verwendung des ClusterIP-Modus auf Arbeitslastclustern mit AVI_LABELS konfiguriert, die mit der Clusterauswahl im AKODeploymentConfig-Objekt install-ako-l7-cluster-ip übereinstimmen.

Um den ClusterIP-Ingress-Modus auf anderen Arbeitslastclustern zu aktivieren, müssen Sie eine neue SE im Avi-Controller erstellen und dann ein neues AKODeploymentConfig-Objekt erstellen, das den Namen der neuen SE angibt, bevor die Datei auf den Verwaltungscluster angewendet wird.

NodePortLocal (für Antrea-CNI)

Wenn Sie Antrea als CNI verwenden, können Sie den NodePortLocal-Ingress-Modus auf NSX ALB aktivieren. Dadurch wird die NodePortLocal-Funktion von Antrea genutzt, um den Datenverkehr direkt von der SE an den Pod weiterzuleiten. In diesem Modus wird der Netzwerkdatenverkehr vom Client zur NSX ALB SE und dann zu den Pods weitergeleitet. Dieser Modus erfordert ClusterIP als Ingress-Backend-Typ. Darüber hinaus muss die Konfigurationsvariable ANTREA_NODEPORTLOCAL in Tanzu Kubernetes Grid auf true festgelegt werden. Weitere Informationen zur NodePortLocal-Funktion in Antrea finden Sie unter NodePortLocal (NPL) in der Antrea-Dokumentation.

Das folgende Diagramm beschreibt, wie der Netzwerkdatenverkehr im NodePortLocal-Modus weitergeleitet wird:

Netzwerkdatenverkehr im NodePortLocal-Modus

Der Modus NodePortLocal vereinfacht den Netzwerkdatenverkehr, indem er direkt von der SE zu den Pods weitergeleitet wird. Dieser Modus unterstützt gemeinsam genutzte SEs für die Cluster und verhindert die Offenlegung der Ports in einem Cluster.

So konfigurieren Sie den NodePortLocal-Ingress-Modus auf einem vorhandenen Verwaltungscluster:

  1. Erstellen Sie ein AKODeploymentConfig-CR-Objekt wie folgt:

    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. Wenden Sie die Änderungen auf den Verwaltungscluster an:

    kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-node-port-local.yaml
    
  3. Um den NodePortLocal-Ingress-Modus auf den Arbeitslastclustern zu aktivieren, erstellen Sie eine YAML-Datei für die Arbeitslastclusterkonfiguration und fügen Sie das folgende Feld hinzu:

    AVI_LABELS: '{"nsx-alb-node-port-local-l7":"true"}'
    
    ANTREA_NODEPORTLOCAL: "true"
    
  4. Stellen Sie den Arbeitslastcluster mit dem Befehl tanzu cluster create bereit.

Der NSX ALB-Ingress-Dienstanbieter ist jetzt für die Verwendung des NodePortLocal-Modus auf Arbeitslastclustern mit AVI_LABELS konfiguriert, die mit der Clusterauswahl im AKODeploymentConfig-Objekt install-ako-l7-node-port-local übereinstimmen.

NSX ALB-Unterstützung für L7-Ingress im Verwaltungscluster

Nur der NodePort-Ingress-Modus wird im Verwaltungscluster unterstützt, wenn Sie NSX ALB als VIP-Anbieter für Cluster-Endpoints verwenden. Wenn Sie NSX ALB nicht als VIP-Anbieter für Cluster-Endpoints verwenden, werden alle drei Ingress-Modi unterstützt.

So aktivieren Sie L7-Ingress im Verwaltungscluster:

  1. Bearbeiten Sie die Datei AKODeploymentConfig im Verwaltungscluster:

    kubectl --context=MGMT-CLUSTER-CONTEXT edit adc install-ako-for-management-cluster
    
  2. Ändern Sie in der Datei, die geöffnet wird, das Feld spec.extraConfigs.ingress, wie im folgenden Beispiel gezeigt:

      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