Citrix ADC Ingress Controller

Richtlinienbasierte Routing-Unterstützung für mehrere Kubernetes-Cluster

Wenn Sie einen einzelnen Citrix ADC zum Lastenausgleich mehrerer Kubernetes-Cluster verwenden, fügt der Citrix Ingress Controller Pod-CIDR-Netzwerke über statische Routen hinzu. Diese Routen stellen die Netzwerkkonnektivität zwischen Kubernetes-Pods und Citrix ADC her. Wenn sich die Pod-CIDRs jedoch überschneiden, kann es zu Routen-Konflikten kommen. Citrix ADC unterstützt Policy Based Routing (PBR), um die Netzwerkkonflikte in solchen Szenarien zu beheben. In PBR werden Entscheidungen auf der Grundlage der von Ihnen angegebenen Kriterien getroffen. In der Regel wird ein nächster Hop angegeben, an den Sie die ausgewählten Pakete senden. In einer Kubernetes-Umgebung mit mehreren Clustern wird PBR implementiert, indem eine Subnetz-IP-Adresse (SNIP) für jeden Kubernetes-Cluster oder den Citrix Ingress Controller reserviert wird. Mithilfe des Netzprofils ist das SNIP an alle Dienstgruppen gebunden, die von demselben Citrix Ingress Controller erstellt wurden. Für den gesamten Datenverkehr, der von Dienstgruppen generiert wird, die zu demselben Cluster gehören, ist die Quell-IP-Adresse derselbe SNIP.

Im Folgenden finden Sie eine Beispieltopologie, in der PBR für zwei Kubernetes-Cluster konfiguriert ist, die mit einem Citrix ADC VPX oder MPX Lastenausgleich durchgeführt werden.

PBR-Konfiguration

Konfigurieren von PBR mithilfe des Citrix Ingress Controller

Um PBR zu konfigurieren, benötigen Sie ein SNIP oder mehr pro Kubernetes-Cluster. Sie können SNIP-Werte entweder mithilfe der Umgebungsvariablen in der YAML-Datei der Citrix Ingress Controller-Bereitstellung während des Startvorgangs oder mithilfe von ConfigMap angeben.

Führen Sie die folgenden Schritte aus, um den Citrix Ingress Controller bereitzustellen und PBR mithilfe von ConfigMap zu konfigurieren.

  1. Laden Sie citrix-k8s-ingress-controller.yaml mit dem folgenden Befehl herunter:

    wget  https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/deployment/baremetal/citrix-k8s-ingress-controller.yaml
    
  2. Bearbeiten Sie die YAML-Datei des Citrix Ingress Controller:

      - Specify the values of the environment variables as per your requirements. For more information on specifying the environment variables, see the [Deploy Citrix ingress controller](/en-us/citrix-k8s-ingress-controller/cic-yaml.html) documentation.
    
  3. Stellen Sie den Citrix Ingress Controller mithilfe der bearbeiteten YAML-Datei mit dem folgenden Befehl auf jedem Cluster bereit.

    kubectl create -f citrix-k8s-ingress-controller.yaml
    
  4. Erstellen Sie eine YAML-Datei cic-configmap.yaml mit den erforderlichen SNIP-Werten in der ConfigMap.

    Es folgt ein Beispiel für eine ConfigMap mit den SNIP-Werten:

    apiVersion: v1
    kind: ConfigMap
    metadata:
        name: pbr-test
        namespace: default
    data:
        NS_SNIPS: '["192.0.2.2", "192.0.2.1"]'
    
  5. Wenden Sie die ConfigMap an.

     kubectl create -f cic-configmap.yaml
    

Sie können die SNIPs auch mithilfe der NS_SNIPS Umgebungsvariablen in der YAML-Datei der Citrix Ingress Controller-Bereitstellung angeben.

     - name: "NS_SNIPS"
        value: '["192.0.2.2", "192.0.2.1"]'

Im Folgenden finden Sie die Verwendungsrichtlinien bei der Verwendung von ConfigMap zum Konfigurieren von SNIP:

  • Nur SNIPs können über ConfigMap hinzugefügt oder entfernt werden. Das feature-node-watch Argument kann nur während des Hochfahrens aktiviert werden.

  • Wenn Sie eine ConfigMap hinzufügen:

    • Wenn SNIPs bereits während des Startvorgangs mithilfe der Umgebungsvariablen bereitgestellt werden und Sie sie beibehalten möchten, sollten diese SNIPs zusammen mit den neuen SNIPs in der ConfigMap angegeben werden.
  • Wenn Sie ConfigMap löschen:

    • Alle von ConfigMap SNIPs generierten PBRs werden gelöscht. Wenn SNIPs über die Umgebungsvariable bereitgestellt werden, wird PBR für diese IP-Adressen hinzugefügt.

    • Wenn SNIPs nicht mithilfe der NS_SNIPS Umgebungsvariablen bereitgestellt werden, werden statische Routen hinzugefügt, da aktiviert feature-node-watch ist.

Validieren der PBR-Konfiguration auf einem Citrix ADC nach der Bereitstellung des Citrix Ingress Controller

In diesem Validierungsbeispiel wird ein Kubernetes-Cluster mit zwei Knoten verwendet, wobei der Citrix Ingress Controller zusammen mit der folgenden ConfigMap mit zwei SNIPs bereitgestellt wird.

Image

Sie können überprüfen, ob der Citrix Ingress Controller dem ADC die folgenden Konfigurationen hinzufügt:

  1. Eines IPset von allen von der ConfigMap NS_SNIPs bereitgestellten wird hinzugefügt.

    Image

  2. Ein Netzprofil wird mit dem SrcIP Set zum hinzugefügt IPset.

    Image

  3. Die vom Citrix Ingress Controller hinzugefügte Dienstgruppe enthält den Netzprofilsatz.

    Image

  4. Schließlich fügt der Citrix Ingress Controller PBRs hinzu.

    Image

    Hier:

    • Die Anzahl der PBRs entspricht (Anzahl der SNIPs) * (Anzahl der Kubernetes-Knoten). In diesem Fall werden vier (2*2) PBRs hinzugefügt.
    • Der srcIP der PBR wird dem Citrix Ingress Controller von ConfigMap NS_SNIPS zur Verfügung gestellt. Der destIP ist der CNI-Overlay-Subnetzbereich des Kubernetes-Knotens.
    • NextHop ist die IP-Adresse des Kubernetes-Knotens.
  5. Sie können auch die Protokolle des Citrix Ingress Controller verwenden, um die Konfiguration zu überprüfen.

    aufzeichnen

Konfigurieren Sie PBR mit dem Citrix Node Controller

Sie können PBR mithilfe des Citrix Node Controllers für mehrere Kubernetes-Cluster konfigurieren. Wenn Sie einen einzelnen Citrix ADC zum Lastenausgleich mehrerer Kubernetes-Cluster mit Citrix Node Controller für das Netzwerk verwenden, können die statischen Routen, die von ihm hinzugefügt werden, um Pakete an die IP-Adresse der VXLAN-Tunnelschnittstelle weiterzuleiten, Routenkonflikte verursachen. Um PBR zu unterstützen, muss der Citrix Node Controller in Verbindung mit dem Citrix Ingress Controller, um das Netzprofil an die Dienstgruppe zu binden.

Führen Sie die folgenden Schritte aus, um PBR mit dem Citrix Node Controller zu konfigurieren:

  1. Geben Sie beim Starten des Citrix Node Controllers den CLUSTER_NAME als Umgebungsvariable an. Wenn Sie diese Variable angeben, handelt es sich um eine Multi-Cluster-Bereitstellung, und der Citrix Node Controller konfiguriert PBR anstelle von statischen Routen.

    Beispiel:

    - name: CLUSTER_NAME 
      value: "dev-cluster"
    
  2. Geben Sie beim Bereitstellen des Citrix Ingress Controller den CLUSTER_NAME als Umgebungsvariable an. Dieser Wert sollte dem Wert entsprechen, der in Citrix Node Controller bereitgestellt wird.

    Beispiel:

    - name: CLUSTER_NAME  
      value: "dev-cluster "
    
  3. Geben Sie das Argument --enable-cnc-pbr wie True im Abschnitt Argumente der YAML-Datei der Citrix Ingress Controller-Bereitstellung an. Wenn Sie dieses Argument angeben, Citrix Ingress Controller, dass der Citrix Node Controller PBR auf dem Citrix ADC konfiguriert.

    Beispiel:

    args: 
     - --enable-cnc-pbr True          
    

Hinweis:

  • Der CLUSTER_NAME in den Citrix Node Controller- und Citrix Ingress Controller Ingress-Controller-Bereitstellungsdateien angegebene Wert sollte übereinstimmen, wenn sie im selben Kubernetes-Cluster bereitgestellt werden.

  • Der CLUSTER_NAME wird beim Erstellen der Netzwerkprofilentität und beim Binden an Dienstgruppen auf Citrix ADC VPX oder MPX verwendet.

Validieren der PBR-Konfiguration auf einem Citrix ADC nach der Bereitstellung des Citrix Node Controllers

In diesem Validierungsbeispiel wird ein Kubernetes-Cluster mit zwei Knoten verwendet, wobei Citrix Node Controller und Citrix Ingress Controller bereitgestellt werden.

Sie können überprüfen, ob die folgenden Konfigurationen vom Citrix Node Controller zum ADC hinzugefügt wurden:

  1. Ein Netzprofil wird hinzugefügt, wobei der Wert von srcIP set auf SNIP vom Citrix Node Controller hinzugefügt wird, während das VXLAN-Tunnelnetzwerk zwischen den Citrix ADC- und Kubernetes-Knoten erstellt wird.

    Image

  2. Der Citrix Ingress Controller bindet das Netzprofil an die von ihm erstellten Dienstgruppen.

    Image

  3. Schließlich fügt der Citrix Node Controller PBRs hinzu.

    Image

    Hier:

    • Die Anzahl der PBRs entspricht der Anzahl der Kuberntes-Knoten. In diesem Fall werden zwei PBRs hinzugefügt.
    • Der srcIP der PBR wird vom Citrix Node Controller im Tunnelnetzwerk SNIP hinzugefügt. Der destIP ist der CNI-Overlay-Subnetzbereich des Kubernete-Knotens. Die NextHop ist die IP-Adresse der VXLAN-Tunnelschnittstelle des Kubernetes-Knotens.

      Hinweis:

      Citrix Node Controller fügt PBRs anstelle von statischen Routen hinzu. Der Rest der Konfiguration des VXLAN und der Bridge-Tabelle bleibt unverändert. Weitere Informationen finden Sie in der Citrix Node Controller-Konfiguration.

Richtlinienbasierte Routing-Unterstützung für mehrere Kubernetes-Cluster