Citrix ADC Ingress Controller

Citrix ADC CPX-Integration mit MetalLB im Layer-2-Modus für on-premises Kubernetes-Cluster

Der Kubernetes-Dienst vom Typ LoadBalancer Support wird von Cloud-Load Balancern in einer Cloud-Umgebung bereitgestellt. Cloud-Dienstanbieter ermöglichen diese Unterstützung, indem sie automatisch einen Load Balancer erstellen und eine IP-Adresse zuweisen, die als Teil des Dienststatus angezeigt wird. Jeder Datenverkehr, der für die externe IP-Adresse bestimmt ist, wird vom Cloud-Load Balancer auf NodeIP und NodePort Lastenausgleich durchgeführt.

Citrix bietet verschiedene Optionen zur Unterstützung der LoadBalancer Typdienste in einer on-premises Umgebung, darunter:

  • Verwenden eines externen Citrix ADC VPX oder Citrix ADC MPX als Tier-1-Load Balancer zum Lastausgleich des eingehenden Datenverkehrs zu Kubernetes-Diensten.

Weitere Informationen zu einer solchen Bereitstellung finden Sie unter Expose-Dienste vom Typ LoadBalancer.

  • Stellen Sie Anwendungen bereit, die in einem Kubernetes-Cluster ausgeführt werden, mithilfe des Citrix ADC CPX-Daemonsets, der im Kubernetes-Cluster ausgeführt wird, zusammen mit einem Router, der ECMP über BGP unterstützt. Die ECMP-Routerlast gleicht den Datenverkehr auf mehrere Citrix ADC CPX-Instanzen aus. Citrix ADC CPX-Instanzen balanciert die tatsächlichen Anwendungspods aus. Weitere Informationen zu einer solchen Bereitstellung finden Sie unter BGP-Ankündigung externer IP-Adressen für den Typ LoadBalancer-Dienste und Inresses mit Citrix ADC CPX.

  • Stellen Sie die Citrix ADC CPX-Dienste als externen IP-Dienst mit einer externen IP-Adresse des Knotens bereit. Sie können diese Option verwenden, wenn ein externer ADC als Tier-1 nicht realisierbar ist und ein BGP-Router nicht vorhanden ist. In dieser Bereitstellung leitet Kubernetes den Datenverkehr, spec.externalIP der zum Citrix ADC CPX-Dienst über Dienstports kommt, an Citrix ADC CPX-Pods weiter. Ingress-Ressourcen können mit dem Citrix Ingress Controller konfiguriert werden, um SSL-Offloading (Secure Sockets Layer) und Load Balancing-Anwendungen durchzuführen. Diese Bereitstellung hat jedoch den großen Nachteil, dass sie bei einem Knotenausfall nicht zuverlässig ist.

  • Verwenden Sie MetalLB, eine Load-Balancer-Implementierung für Bare-Metal-Kubernetes-Cluster im Layer-2-Modus mit Citrix ADC CPX, um Eingangsfähigkeit zu erreichen.

Diese Dokumentation zeigt, wie Sie MetalLB zusammen mit Citrix ADC CPX nutzen können, um Ingress-Funktionen in Bare-Metal-Clustern zu erreichen, wenn die anderen Lösungen nicht realisierbar sind. MetalLB konfiguriert im Layer-2-Modus einen Knoten, um den gesamten Datenverkehr an den Citrix ADC CPX-Dienst zu senden. MetalB verschiebt die IP-Adresse automatisch auf einen anderen Knoten, wenn ein Knoten ausfällt. Dies bietet eine bessere Zuverlässigkeit als der ExternalIP-Dienst.

Hinweis: MetalLB ist immer noch in der Beta-Version. In der offiziellen Dokumentation erfahren Sie mehr über die Laufzeit des Projekts und etwaige Einschränkungen.

Führen Sie die folgenden Schritte aus, um die Citrix ADC CPX-Integration mit MetalLB im Layer-2-Modus für on-premises Kubernetes-Cluster bereitzustellen.

  1. Installieren und Konfigurieren von MetalLB
  2. Konfigurieren der MetalLB -Konfiguration für Layer 2
  3. Installieren des Citrix ADC CPX-Dienstes

Installieren und Konfigurieren von MetalLB

Zunächst sollten Sie MetalLB im Layer-2-Modus installieren. Weitere Informationen zu verschiedenen Arten von Installationen für MetalLB finden Sie in der MetalLB -Dokumentation.

Führen Sie die folgenden Schritte aus, um MetalLB zu installieren:

  1. Erstellen Sie einen Namespace für die Bereitstellung von MetalLB .

    kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.5/manifests/namespace.yaml 
    
  2. Stellen Sie MetalLB mit dem folgenden Befehl bereit.

    kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.5/manifests/metallb.yaml 
    
  3. Führen Sie den folgenden Schritt aus, wenn Sie die Installation zum ersten Mal durchführen.

    kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)" 
    
  4. Überprüfen Sie die MetalLB -Installation und stellen Sie mithilfe des folgenden Befehls sicher, dass Lautsprecher und Controller im laufenden Zustand sind:

    kubectl get pods -n metallb-system 
    

Mit diesen Schritten wird MetalLB in Ihrem Cluster unter dem metallb-system Namespace bereitgestellt.

Die MetalLB -Bereitstellungs-YAML-Datei enthält die folgenden Komponenten:

  • Die Bereitstellung des MetalLB -Systems/Controllers: Diese Komponente ist der clusterweite Controller, der IP-Adresszuweisungen verarbeitet.

  • Der Daemonset des Metallsystems/Lautsprechers. Diese Komponente kommuniziert mit Protokollen Ihrer Wahl, um die Dienste erreichbar zu machen.

  • Dienstkonten für den Controller und den Lautsprecher sowie die RBAC-Berechtigungen, die die Komponenten benötigen, um zu funktionieren.

MetalLB -Konfiguration für Layer 2

Sobald MetalLB installiert ist, sollten Sie das MetalLB für den Layer-2-Modus konfigurieren. MetalLB verwendet einen Bereich von IP-Adressen, die dem Typ LoadBalancer-Dienste als externe IP zugewiesen werden. In dieser Bereitstellung fungiert ein Citrix ADC CPX-Dienst als Front-End für alle anderen Anwendungen. Daher ist eine einzige IP-Adresse ausreichend.

Erstellen Sie eine ConfigMap für MetalLB mit dem folgenden Befehl, wobei MetalLB -config.yaml die YAML-Datei mit der MetalLB -Konfiguration ist.

kubectl create –f metallb-config.yaml 

Es folgt ein Beispiel für eine MetalLB -Konfiguration für den Layer2-Modus. In diesem Beispiel wird 192.168.1.240-192.168.1.240 als IP-Adressbereich angegeben.


apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: default
      protocol: layer2
      addresses:
      - 192.168.1.240-192.168.1.240
<!--NeedCopy-->

Citrix ADC CPX-Dienstinstallation

Sobald das Metal LB erfolgreich installiert wurde, können Sie die Citrix ADC CPX-Bereitstellung und einen Dienst des Typs installieren LoadBalancer.

Um Citrix ADC CPX zu installieren, können Sie entweder die YAML-Datei oder Helm-Diagramme verwenden.

Führen Sie die folgenden Schritte aus, um Citrix ADC CPX mithilfe der YAML-Datei zu installieren:

  1. Laden Sie die Citrix ADC CPX-Bereitstellungsmanifeste herunter.

    wget https://github.com/citrix/citrix-k8s-ingress-controller/blob/master/deployment/baremetal/citrix-k8s-cpx-ingress.yml 
    
  2. Bearbeiten Sie die Citrix ADC CPX-Bereitstellung YAML:

    • Stellen Sie die Replikatanzahl nach Bedarf ein. Für eine hohe Verfügbarkeit ist es besser, mehr als ein Replikat zu haben.
    • Ändern Sie den Diensttyp in LoadBalancer.
  3. Wenden Sie die bearbeitete YAML-Datei mit dem Befehl Kubectl an.

    kubectl apply –f citrix-k8s-cpx-ingress.yaml 
    
  4. Zeigen Sie den Dienst mit dem folgenden Befehl an:

    kubectl get svc cpx-service -output yaml
    

    Sie können sehen, dass MetalLB dem Citrix ADC CPX-Dienst eine externe IP-Adresse wie folgt zuweist:


apiVersion: v1
kind: Service
metadata:
  name: cpx-service
  namespace: default
spec:
  clusterIP: 10.107.136.241
  externalTrafficPolicy: Cluster
  healthCheckNodePort: 31916
  ports:
  - name: http
    nodePort: 31528
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    nodePort: 31137
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: cpx-ingress
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer:
    ingress:
    - ip: 192.168.1.240

<!--NeedCopy-->

Bereitstellen einer Beispielanwendung

Führen Sie die folgenden Schritte aus, um eine Beispielanwendung bereitzustellen und die Bereitstellung zu überprüfen.

  1. Erstellen Sie mithilfe der Datei sample-deployment.yaml eine Beispielbereitstellung.

    kubectl create –f sample-deployment.yaml
    
  2. Stellen Sie die Anwendung mit einem Dienst mithilfe der Datei sample-service.yaml zur Verfügung.

    kubectl create –f sample-service.yaml  
    
  3. Sobald der Dienst erstellt wurde, können Sie mithilfe von sample-ingress.yaml eine Eingangsressourcehinzufügen.

    kubectl create –f sample-ingress.yaml  
    

Sie können den Ingress testen, indem Sie wie folgt über eine cpx-service externe IP-Adresse auf die Anwendung zugreifen:

   curl -v http://192.168.1.240 -H ‘host: testdomain.com’ 

Zusätzliche Referenzen

Weitere Informationen zur Konfiguration und Problembehandlung für MetalLB finden Sie unter den folgenden Links:

Citrix ADC CPX-Integration mit MetalLB im Layer-2-Modus für on-premises Kubernetes-Cluster