Citrix ADC Ingress Controller

Dienste vom Typ LoadBalancer verfügbar machen

Services vom Typ LoadBalancer im Überblick

In einer Kubernetes-Umgebung wird ein Microservice als eine Reihe von Pods bereitgestellt, die dynamisch erstellt und zerstört werden. Da sich die Menge der Pods, die sich auf einen Microservice beziehen, ständig ändert, bietet Kubernetes eine logische Abstraktion, die als Service bezeichnet wird, um Ihren Microservice auf einer Reihe von Pods verfügbar zu machen. Ein Dienst definiert einen logischen Satz von Pods sowie Richtlinien für den Zugriff darauf.

Ein Dienst vom Typ LoadBalancer ist der einfachste Weg, einen Microservice innerhalb eines Kubernetes-Clusters der Außenwelt zugänglich zu machen. Services vom Typ LoadBalancer werden nativ in Kubernetes-Bereitstellungen in öffentlichen Clouds wie AWS, GCP oder Azure unterstützt. Wenn Sie in Cloud-Bereitstellungen einen Dienst vom Typ LoadBalancer erstellen, wird dem Dienst ein in der Cloud verwalteter Load Balancer zugewiesen. Der Dienst wird dann mithilfe des Load Balancers verfügbar gemacht.

Citrix Lösung für Dienste vom Typ LoadBalancer

Es kann verschiedene Situationen geben, in denen Sie Ihren Kubernetes-Cluster auf Bare-Metal oder on-premises bereitstellen möchten, anstatt ihn in der Public Cloud bereitzustellen. Wenn Sie Ihre Anwendungen auf Bare-Metal-Kubernetes-Clustern ausführen, ist es viel einfacher, TCP- oder UDP-Datenverkehr mit einem Dienst des Typs LoadBalancer weiterzuleiten, als Ingress. Selbst für den HTTP-Verkehr ist es manchmal bequemer als Ingress. Für Bare-Metal-Kubernetes-Cluster ist jedoch keine Load Balancer-Implementierung nativ verfügbar. Citrix bietet eine Möglichkeit, solche Dienste mithilfe des Citrix Ingress Controller und Citrix ADC zu verteilen.

In der Citrix Lösung für Dienste des Typs konfiguriert der Citrix Ingress Controller LoadBalancer, der innerhalb des Kubernetes-Clusters bereitgestellt wird, einen Citrix ADC, der außerhalb des Clusters bereitgestellt wird, um den eingehenden Datenverkehr zu verteilen. Mit der Citrix Lösung können Sie den eingehenden Datenverkehr zum Kubernetes-Cluster ausgleichen, unabhängig davon, ob die Bereitstellung auf Bare-Metal, on-premises oder in der Public Cloud erfolgt. Da der Citrix Ingress Controller eine flexible IP-Adressverwaltung bietet, die Mehrmandantenfähigkeit für Citrix ADCs ermöglicht, können Sie einen einzelnen Citrix ADC verwenden, um mehrere Dienste zu belasten und Ingress-Funktionen auszuführen. Auf diese Weise können Sie die Auslastung der Load Balancer-Ressourcen maximieren und Ihre Betriebskosten erheblich senken.

Dienste des Typs LoadBalancer VS Kubernetes Ingress

Die folgende Tabelle fasst einen Vergleich zwischen Kubernetes Ingress und Diensten vom Typ LoadBalancer zusammen, der Ihnen hilft, die richtige Option basierend auf Ihren Anforderungen auszuwählen:

Dienstleistungen vom Typ LoadBalancer Ingress
Einfachere und schnellere Möglichkeit, einen Dienst verfügbar zu machen. Sie müssen nur den Diensttyp type=LoadBalancer in der Dienstdefinition angeben. Ingress bietet erweiterte Funktionen, aber die Implementierung erfordert mehr Schritte. Sie müssen zusätzlich zur Dienstdefinition ein Ingress-Objekt schreiben. Außerdem ist die Wahrscheinlichkeit, bei der Definition des Ingress Fehler zu machen, größer.
Benötigt eine separate IP-Adresse für jeden Dienst. Bietet eine Möglichkeit, mehrere Dienste mit einer einzigen IP-Adresse verfügbar zu machen.
Leitet alle Arten von Datenverkehr, der auf dem angegebenen Port ankommt, an den Dienst weiter, unabhängig davon, ob es sich um HTTP, TCP oder UDP handelt. Es gibt keine Filterung oder Optionen, um erweitertes Routing durchzuführen. Funktionsreich und leistungsstark im Vergleich zu Diensten vom Typ LoadBalancer. Ingress bietet mehrere Routing-Optionen. Mit Ingress können Sie beispielsweise pfadbasiertes und subdomänenbasiertes Routing zu Back-End-Diensten durchführen.

Wie funktioniert die Citrix Lösung für Dienste vom Typ LoadBalancer auf Bare-Metal-Clustern?

Standardmäßig macht ein Dienst des Typs LoadBalancer einfach NodePorts für den Dienst in einem Bare-Metal-Kubernetes-Cluster verfügbar. Es werden keine externen Load Balancer konfiguriert.

Citrix bietet eine End-to-End-Lösung für Dienste des Typs LoadBalancer in einem Bare-Metal-Kubernetes-Cluster, indem es sowohl IP-Verwaltung als auch externe Load Balancer-Konfiguration bietet. Wenn bei der Citrix Lösung ein Dienst des Typs LoadBalancer im Bare-Metal-Cluster erstellt wird, konfiguriert der Citrix Ingress Controller den Citrix ADC außerhalb des Kubernetes-Clusters (Tier-1) mit einem virtuellen Lastausgleichsserver. Der virtuelle Lastausgleichsserver wird mit einer IP-Adresse konfiguriert, die entweder automatisch vom Citrix IPAM-Controller zugewiesen oder manuell in der Dienstdefinition mit dem Feld spec.loadBalancerIPangegeben wird. Sobald die IP-Adresse für einen Dienst konfiguriert wurde, können Sie die konfigurierte IP-Adresse verwenden, um extern auf den Dienst zuzugreifen.

IP-Adressverwaltung mithilfe des IPAM-Controllers

Der IPAM-Controller ist ein von Citrix bereitgestellter Container für die IP-Adressverwaltung und läuft parallel zum Citrix Ingress Controller, einem Pod im Kubernetes-Cluster. Für Dienste vom Typ LoadBalancerkönnen Sie den IPAM-Controller verwenden, um IP-Adressen aus einem bestimmten IP-Adressbereich automatisch zu Diensten zuzuweisen. Sie können diesen IP-Bereich in der YAML-Datei angeben, während Sie den IPAM-Controller mit YAML bereitstellen. Der Citrix Ingress Controller konfiguriert die dem Dienst zugewiesene IP-Adresse als virtuelle IP-Adresse (VIP) in Citrix ADC MPX oder VPX. Mit dieser IP-Adresse können Sie extern auf den Dienst zugreifen.

Der IPAM-Controller benötigt die von Citrix bereitgestellte VIP CustomResourceDefinition (CRD). Die VIP-CRD enthält Felder für den Dienstnamen, den Namespace und die IP-Adresse. Die VIP CRD wird für die interne Kommunikation zwischen dem Citrix Ingress Controller und dem IPAM-Controller verwendet.

Das folgende Diagramm zeigt eine Bereitstellung eines Lastausgleichsdiensts vom Diensttyp, bei dem der IPAM-Controller verwendet wird, um einem Dienst eine IP-Adresse zuzuweisen.

Dienstleistungen des Typs LoadBalancer

Wenn ein neuer Dienst vom Typ Loadbalancer erstellt wird, treten die folgenden Ereignisse ein:

  1. Der Citrix Ingress Controller erstellt ein VIP-CRD-Objekt für den Dienst, wenn das Feld loadBalancerIP im Dienst leer ist.
  2. Der IPAM-Controller weist eine IP-Adresse für das VIP-CRD-Objekt zu.
  3. Sobald das VIP-CRD-Objekt mit der IP-Adresse aktualisiert wurde, konfiguriert der Citrix Ingress Controller automatisch den Citrix ADC.

Hinweis:

Benutzerdefinierte Ressourcendefinitionen (CRDs), die von Citrix angeboten werden, unterstützen auch Dienste des Typs LoadBalancer. Das heißt, Sie können einen Dienst des Typs LoadBalancer als Dienstnamen angeben, wenn Sie ein CRD-Objekt erstellen und die CRD auf den Dienst anwenden.

Die IPAM-Controller-Lösung ist so konzipiert, dass Sie die Lösung problemlos in externe DNS-Anbieter wie Infobloxintegrieren können. Weitere Informationen zu ExternalDNS finden Sie unter Interoperabilität mit ExternalDNS.

Stellen Sie Dienste vom Typ LoadBalancer mit IP-Adressen bereit, die vom IPAM-Controller zugewiesen wurden

Dieses Thema enthält Informationen dazu, wie Dienste vom Typ LoadBalancer mit vom IPAM-Controller zugewiesenen IP-Adressen verfügbar gemacht werden.

Um einen Dienst des Typs Load Balancer mit einer IP-Adresse vom IPAM-Controller verfügbar zu machen, führen Sie die folgenden Schritte aus:

  1. Stellen Sie die VIP CRD bereit
  2. Bereitstellen des Citrix Ingress Controller
  3. Stellen Sie den IPAM-Controller bereit.
  4. Stellen Sie eine Beispielanwendung bereit.
  5. Erstellen Sie einen Dienst des Typs LoadBalancer, um die Anwendung verfügbar zu machen.
  6. Zugriff auf den Dienst.

Schritt 1: VIP CRD bereitstellen

Führen Sie den folgenden Schritt aus, um die Citrix VIP CRD bereitzustellen, die die Kommunikation zwischen dem Citrix Ingress Controller und dem IPAM-Controller ermöglicht.

 kubectl create -f https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/crd/vip/vip.yaml

Weitere Informationen zur VIP CRD finden Sie unter VIP CustomResourceDefinition.

Schritt 2: Bereitstellen des Citrix Ingress Controller

Führen Sie die folgenden Schritte aus, um den Citrix Ingress Controller mit dem IPAM-Controller-Argument bereitzustellen.

  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:

    • Geben Sie die Werte der Umgebungsvariablen gemäß Ihren Anforderungen an. Weitere Informationen zum Festlegen der Umgebungsvariablen finden Sie unter Bereitstellen des Citrix Ingress Controller.

    • Geben Sie den IPAM-Controller als Argument an, indem Sie Folgendes verwenden:

         args:
         - --ipam
           citrix-ipam-controller
      

    Hier ist ein Ausschnitt einer YAML-Beispieldatei eines Citrix Ingress Controller mit dem IPAM-Controller-Argument:

    Hinweis:

    Diese YAML dient nur zu Demonstrationszwecken und nicht zur Vollversion. Verwenden Sie immer die neueste Version der YAML und bearbeiten Sie sie gemäß Ihren Anforderungen.

    apiVersion: v1
    kind: Pod
    metadata:
      name: cic-k8s-ingress-controller
      labels:
        app: cic-k8s-ingress-controller
    spec: 
      serviceAccountName: cic-k8s-role
      containers:
      - name: cic-k8s-ingress-controller
        image: "quay.io/citrix/citrix-k8s-ingress-controller:1.26.7"
        env:
        # Set Citrix ADC NSIP/SNIP, SNIP in case of HA (mgmt has to be enabled) 
          - name: "NS_IP"
            value: "x.x.x.x"
            # Set the username
          - name: "NS_USER"
            valueFrom:
              secretKeyRef:
                name: nslogin
                key: username
            # Set user password
          - name: "NS_PASSWORD"
            valueFrom:
              secretKeyRef:
                name: nslogin
                key: password
            # Set log level
          - name: "EULA"
            value: "yes"
        args:
          - --ingress-classes
            citrix
          - --feature-node-watch
            false
          - --ipam
            citrix-ipam-controller
        imagePullPolicy: Always
    
  3. Stellen Sie den Citrix Ingress Controller mithilfe der bearbeiteten YAML-Datei mit dem folgenden Befehl bereit:

    kubectl create -f citrix-k8s-ingress-controller.yaml
    

    Weitere Informationen zum Bereitstellen des Citrix Ingress Controller finden Sie unter Bereitstellen des Citrix Ingress Controller.

Schritt 3: Bereitstellen des IPAM-Controllers

Führen Sie die folgenden Schritte aus, um den IPAM-Controller bereitzustellen.

  1. Laden Sie die Datei citrix-ipam-controller.yaml herunter.

    Das Manifest enthält zwei Umgebungsvariablen VIP_RANGE und VIP_NAMESPACES. Sie können den entsprechenden routbaren IP-Bereich mit einem gültigen CIDR unter VIP_RANGE angeben. Bei Bedarf können Sie auch eine Reihe von Namespaces unter angeben, VIP_NAMESPACES sodass der IPAM-Controller Adressen nur für Dienste aus bestimmten Namespaces zuweist.

    Weitere Informationen finden Sie unter VIP_RANGE und VIP_NAMESPACES.

  2. Stellen Sie den IPAM-Controller mit dem folgenden Befehl bereit:

    kubectl create -f citrix-ipam-controller.yaml
    

Schritt 4: Bereitstellen einer Beispielanwendung

Führen Sie die folgenden Schritte aus, um eine apache-Anwendung in Ihrem Kubernetes-Cluster bereitzustellen.

Hinweis:

In diesem Beispiel wird eine apache-Anwendung verwendet. Sie können eine Beispielanwendung Ihrer Wahl bereitstellen.

  1. Erstellen Sie eine Datei mit dem Namen apache-deployment.yaml mit der folgenden Konfiguration:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: apache
      labels:
       name: apache
    spec:
      selector:
        matchLabels:
          app: apache
      replicas: 8
      template:
        metadata:
          labels:
            app: apache
        spec:
          containers:
          - name: apache
            image: httpd:latest
            ports:
            - name: http
              containerPort: 80
            imagePullPolicy: IfNotPresent
    
  2. Stellen Sie die apache-Anwendung mit dem folgenden Befehl bereit:

    kubectl create -f apache-deployment.yaml
    
  3. Prüfen Sie, ob die Pods ausgeführt werden, indem Sie Folgendes verwenden:

    kubectl get pods
    

    Ausgang:

    NAME                      READY   STATUS   RESTARTS   AGE
    apache-7db8f797c7-2x6jc   1/1     Running   0          8s
    apache-7db8f797c7-cdgmw   1/1     Running   0          8s
    apache-7db8f797c7-lh447   1/1     Running   0          8s
    apache-7db8f797c7-m7mhd   1/1     Running   0          8s
    apache-7db8f797c7-m9rn7   1/1     Running   0          8s
    apache-7db8f797c7-r9jgz   1/1     Running   0          8s
    apache-7db8f797c7-vwhc8   1/1     Running   0          8s
    apache-7db8f797c7-zslwv   1/1     Running   0          8s
    

Schritt 5: Stellen Sie die Beispielanwendung mithilfe des Service vom Typ LoadBalancer zur Verfügung

Führen Sie Folgendes aus, um einen Service (apache) des Typs zu erstellen LoadBalancer.

  1. Erstellen Sie eine Datei mit dem Namen apache-service.yaml mit der folgenden Konfiguration:

    apiVersion: v1
    kind: Service
    metadata:
      name: apache
      labels:
        name: apache
    spec:
      externalTrafficPolicy: Local
      type: LoadBalancer
      ports:
      - name: http
        port: 80
        targetPort: http
      selector:
        app: apache
    
  2. Stellen Sie den Dienst mit dem folgenden Befehl bereit:

    kubectl create -f apache-service.yaml
    

    Wenn Sie den Dienst erstellen, weist der IPAM-Controller dem apache-Dienst eine IP-Adresse aus dem IPAM-Controller-Bereich zu, den Sie in der IPAM-Controller-Bereitstellung definiert hatten. Die vom IPAM-Controller zugewiesene IP-Adresse wird im Bereich status.loadBalancer.ingress: der Dienstdefinition bereitgestellt. Der Citrix Ingress Controller konfiguriert die dem Dienst zugewiesene IP-Adresse als virtuelle IP (VIP) im Citrix ADC.

  3. Zeigen Sie den Dienst mit dem folgenden Befehl an:

    kubectl get service apache --output yaml
    

    Ausgang:

    Diensttyp LoadBalancer-Ausgabe

Schritt 6: Zugriff auf den Dienst

Sie können über die vom IPAM-Controller dem apache-Dienst zugewiesene IP-Adresse auf den Dienst zugreifen. Sie finden die IP-Adresse im Feld status.loadBalancer.ingress: der Dienstdefinition. Verwenden Sie den Befehl curl, um auf den Dienst zuzugreifen:

curl <IP_address>

Die Antwort sollte lauten:

<html><body><h1>It works!</h1></body></html>

Stellen Sie Dienste vom Typ LoadBalancer verfügbar, indem Sie eine IP-Adresse angeben

Sie können einen Dienst vom Typ LoadBalancer auch manuell verfügbar machen, indem Sie in Ihrer Dienstdefinition eine IP-Adresse angeben.

Um einen Dienst vom Typ LoadBalancer manuell verfügbar zu machen, können Sie die IP-Adresse in der YAML-Datei der Dienstdefinition wie folgt angeben.

spec:
  type: LoadBalancer
  loadBalancerIP: "<ip-address>"

Wenn Sie einen Dienst vom Typ LoadBalancererstellen, konfiguriert der Citrix Ingress Controller die IP-Adresse, die Sie im Feld spec.loadBalancerIP definiert haben, als virtuelle IP-Adresse (VIP) in Citrix ADC.

Beispiel: Stellen Sie eine Apache-Anwendung mit einem Dienst vom Typ LoadBalancer bereit, indem Sie eine IP-Adresse angeben

Führen Sie folgende Schritte aus:

  1. Erstellen Sie eine Datei mit dem Namen apache-deployment.yaml mit der folgenden Konfiguration:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: apache
      labels:
        name: apache
    spec:
      selector:
        matchLabels:
          app: apache
      replicas: 8
      template:
        metadata:
          labels:
            app: apache
        spec:
          containers:
          - name: apache
            image: httpd:latest
            ports:
            - name: http
              containerPort: 80
            imagePullPolicy: IfNotPresent
    
  2. Stellen Sie die apache-Anwendung mit dem folgenden Befehl bereit:

    kubectl create -f apache-deployment.yaml
    
  3. Prüfen Sie, ob die Pods ausgeführt werden, indem Sie Folgendes verwenden:

    kubectl get pods
    

    Ausgang:

    NAME                      READY   STATUS   RESTARTS   AGE
    apache-7db8f797c7-2x6jc   1/1     Running   0          8s
    apache-7db8f797c7-cdgmw   1/1     Running   0          8s
    apache-7db8f797c7-lh447   1/1     Running   0          8s
    apache-7db8f797c7-m7mhd   1/1     Running   0          8s
    apache-7db8f797c7-m9rn7   1/1     Running   0          8s
    apache-7db8f797c7-r9jgz   1/1     Running   0          8s
    apache-7db8f797c7-vwhc8   1/1     Running   0          8s
    apache-7db8f797c7-zslwv   1/1     Running   0          8s
    
  4. Erstellen Sie einen Service (apache) des Typs LoadBalancer. Erstellen Sie einen Dateinamen apache-service.yaml mit der folgenden Konfiguration:

    apiVersion: v1
    kind: Service
    metadata:
      name: apache
      labels:
        name: apache
    spec:
      externalTrafficPolicy: Local
      loadBalancerIP: "10.217.212.16"
      type: LoadBalancer
      ports:
        - name: http
          port: 80
          targetPort: http
      selector:
        app: apache
    
  5. Stellen Sie den Dienst mit dem folgenden Befehl bereit:

    kubectl create -f apache-service.yaml
    

    Wenn Sie den Dienst (apache) erstellen, wird vom Citrix Ingress Controller 192.217.212.16 als virtuelle IP-Adresse (VIP) in Citrix ADC VPX konfiguriert.

  6. Greifen Sie mit der IP-Adresse (192.217.212.16) auf den apache-Dienst zu, die Sie dem Dienst zugewiesen haben. Verwenden Sie den Befehl curl, um auf den Dienst zuzugreifen:

    curl 192.217.212.16
    

    Die Antwort sollte lauten:

    <html><body><h1>It works!</h1></body></html>
    

Anwendungsbeispiel: Stellen Sie Microservices mithilfe von Diensten vom Typ LoadBalancer in einer Citrix ADC Dual-Tier-Bereitstellung zur Verfügung

Dieses Beispiel zeigt, wie in Kubernetes bereitgestellte Microservices mithilfe von Diensten vom Typ LoadBalancer in einer Citrix ADC Dual-Tier-Bereitstellung für Clients außerhalb des Clusters verfügbar gemacht werden.

Sie können Citrix ADC VPX, MPX oder CPX als Load Balancer in Tier-1 bereitstellen, um hohen Nord-Süd-Datenverkehr zu den Microservices zu verwalten. In Tier-2 können Sie Citrix ADC CPX als intelligenten L7-Microservices-Router für Nord-Süd- und Ost-West-Verkehr bereitstellen. In diesem Beispiel wird ein Citrix ADC VPX (Dienst des Typs LoadBalancer) in Tier-1 und ein Citrix ADC CPX (Ingress) in Tier-2 verwendet.

Das folgende Diagramm zeigt die Microservice-Bereitstellung in diesem Beispiel. Die Bereitstellung enthält drei Dienste, die in den Farben Blau, Rot und Grün hervorgehoben sind. Die Bereitstellung enthält 12 Pods, die auf zwei Worker-Knoten laufen. Diese Bereitstellungen werden logisch mithilfe von Kubernetes-Namespaces kategorisiert.

Beispiel für Microservice-Bereitstellung

Voraussetzungen

Stellen Sie sicher, dass Sie

Microservices mithilfe des Kubernetes-Service vom Typ LoadBalancer-Lösung bereitstellen

  1. Klonen Sie das GitHub-Repository mit dem folgenden Befehl auf Ihren Master-Knoten:

    git clone https://github.com/citrix/example-cpx-vpx-for-kubernetes-2-tier-microservices.git
    
  2. Erstellen Sie mithilfe der CLI-Konsole des Master-Knotens Namespaces mit dem folgenden Befehl:

    kubectl create -f namespace.yaml
    

    Überprüfen Sie mit dem folgenden Befehl, ob die Namespaces in Ihrem Kubernetes-Cluster erstellt wurden:

    kubectl get namespaces
    

    Die Ausgabe des Befehls sollte wie folgt lauten:

    Namespace

  3. Stellen Sie im Kubernetes-Dashboard rbac.yaml im Standard-Namespace mit dem folgenden Befehl bereit:

    kubectl create -f rbac.yaml 
    
  4. Stellen Sie das VIP CRD und den IPAM-Controller bereit, um den Kubernetes-Diensten automatisch IP-Adressen zuzuweisen. Verwenden Sie den folgenden Befehl:

    kubectl create -f vip.yaml
    kubectl create -f ipam_deploy.yaml
    
  5. Stellen Sie Citrix ADC CPX für die Microservices hotdrink, colddrink und guestbook mit den folgenden Befehlen bereit:

    kubectl create -f cpx.yaml -n tier-2-adc
    kubectl create -f hotdrink-secret.yaml -n tier-2-adc
    
  6. Stellen Sie mit den folgenden Befehlen drei Arten von hotdrink-Getränke-Microservices bereit:

    kubectl create -f team_hotdrink.yaml -n team-hotdrink
    kubectl create -f hotdrink-secret.yaml -n team-hotdrink
    
  7. Stellen Sie den colddrink-Getränke-Microservice mit den folgenden Befehlen bereit:

    kubectl create -f team_colddrink.yaml -n team-colddrink
    kubectl create -f colddrink-secret.yaml -n team-colddrink
    
  8. Stellen Sie den guestbook Microservice mit den folgenden Befehlen bereit:

    kubectl create -f team_guestbook.yaml -n team-guestbook
    
  9. Melden Sie sich beim Tier-1-Citrix ADC an, um sicherzustellen, dass die Konfiguration nicht vom Citrix Ingress Controller übertragen wird, bevor Sie den Tier-1-Citrix ADC automatisieren.

  10. Stellen Sie den Citrix Ingress Controller bereit, um die Citrix ADC CPX-Konfiguration automatisch an den Tier-1-Citrix ADC zu übertragen. Ändern Sie in cic_vpx.yaml den Wert der Umgebungsvariable NS_IP mit der NS-IP Ihres Citrix ADC VPX. Weitere Informationen zur Bereitstellung des Citrix Ingress Controller finden Sie unter Bereitstellen des Citrix Ingress Controller mit YAML.

    Nachdem Sie die Datei cic_vpx.yaml aktualisiert haben, stellen Sie die Datei mit dem folgenden Befehl bereit:

    kubectl create -f cic_vpx.yaml -n tier-2-adc
    
  11. Überprüfen Sie mit dem folgenden Befehl, ob der IPAM-Controller den Citrix ADC CPX-Diensten IP-Adressen zugewiesen hat:

    kubectl holt svc -n Tier-2-adc

  12. Fügen Sie die folgenden DNS-Einträge zu den Host-Dateien Ihrer lokalen Maschine hinzu, um über das Internet auf die Microservices zuzugreifen:

     <frontend-ip from ingress_vpx.yaml> hotdrink.beverages.com
     <frontend-ip from ingress_vpx.yaml> colddrink.beverages.com
     <frontend-ip from ingress_vpx.yaml> guestbook.beverages.com
    

Sie können jetzt über die folgende URL auf die Microservices zugreifen: https://hotdrink.beverages.com

Kaffee- und Teeservice

Umgebungsvariablen: IPAM-Controller

Dieser Abschnitt enthält Informationen zu den Umgebungsvariablen im IPAM-Controller.

VIP_RANGE

Mit der Umgebungsvariable VIP_RANGE können Sie den IP-Adressbereich definieren. Sie können entweder einen IP-Adressbereich oder einen IP-Adressbereich definieren, der mit einem eindeutigen Namen verknüpft ist.

IP-Adressbereich

Sie können den IP-Adressbereich aus einem Subnetz oder mehreren Subnetzen definieren. Sie können das Zeichen - auch verwenden, um den IP-Adressbereich zu definieren. Der IPAM-Controller weist dem Dienst die IP-Adresse aus diesem IP-Adressbereich zu.

Die folgenden Beispiele veranschaulichen die verschiedenen Möglichkeiten, den IP-Adressbereich in der Umgebungsvariable VIP_RANGE zu definieren:

To define the IP address range from a subnet:

    - name: "VIP_RANGE"
      value: '["10.xxx.xxx.18/31"]'

To define the IP address range from multiple subnets, ensure that the values are valid CIDRs for the subnets:

    - name: "VIP_RANGE"
      value: '["10.217.212.18/31",  "10.217.212.20/31", "10.217.212.16/30", "10.217.212.0/24"]'

Also, you can use dash (`-`) to define the IP address range:

    - name: "VIP_RANGE"
      value: '["10.217.212.18 - 10.217.212.21",  “10.217.212.27 - 10.217.212.31",  “10.217.213.24 - 10.217.213.32" ]'

Mit einem eindeutigen Namen verknüpfter IP-Adressbereich

Sie können dem IP-Adressbereich einen eindeutigen Namen zuweisen und den Bereich in der Umgebungsvariable VIP_RANGE definieren. Auf diese Weise der Zuweisung des IP-Adressbereichs können Sie zwischen den IP-Adressbereichen unterscheiden. Wenn Sie die Dienste des Typs LoadBalancer erstellen, können Sie die Annotation service.citrix.com/ipam-range in der Dienstdefinition verwenden, um den IP-Adressbereich anzugeben, der für die IP-Adresszuweisung verwendet werden soll.

Zum Beispiel gibt es drei Domänen Dev, Test und Prod die dedizierte Arbeitslasten zu verwalten haben. Wenn jedes Team einen separaten IP-Adressbereich für den Lastenausgleich des Microservice-Datenverkehrs wünscht, können Sie den IP-Adressbereichen eindeutige Namen zuweisen. Anschließend können Sie die Namen in der Anmerkung service.citrix.com/ipam-range in Ihrer Service-Definition definieren. Dem mit service.citrix.com/ipam-range = 'Dev' definierten Dienst wird eine IP-Adresse aus dem Dev zugeordneten IP-Adressbereich zugewiesen.

Die folgenden Beispiele veranschaulichen die verschiedenen Möglichkeiten, den IP-Adressbereich zu definieren, der mit einem eindeutigen Namen in der Umgebungsvariable VIP_RANGE verknüpft ist:

    - name: "VIP_RANGE"
      value: '[{"Prod": ["10.1.2.0/24"]}, {"Test": ["10.1.3.0/24"]}, {"Dev": ["10.1.4.0/24", "10.1.5.0/24"]},["10.1.6.0/24"]]'

Sie können das Zeichen - auch verwenden, um den IP-Adressbereich zu definieren:

    - name: "VIP_RANGE"
      value: '[{"Prod": ["10.1.2.0 - 10.1.2.255"]}, {"Test": ["10.1.3.0 - 10.1.3.255"]}, {"Dev": ["10.1.4.0/24", "10.1.5.0/24"]},["10.1.6.0/24"]]'

Im Folgenden finden Sie ein Beispiel für eine Service-Definition, um die Verwendung der Anmerkung service.citrix.com/ipam-range zu demonstrieren. In diesem Beispiel wird die Anmerkung verwendet, um dem Dienst eine IP-Adresse aus dem IP-Adressbereich zuzuweisen, der mit einem eindeutigen Dev-Namen verknüpft ist.

    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        service.citrix.com/ipam-range: "Dev"
      name: apache
      labels:
        name: apache
    spec:
      externalTrafficPolicy: Local
      type: LoadBalancer
      selector:
        name: apache
      ports:
      - name: http
        port: 80
        targetPort: http
      selector:
        app: apache

VIP_NAMESPACES

Mit der Umgebungsvariable VIP_NAMESPACES können Sie den IPAM-Controller so definieren, dass er nur für eine Reihe von Namespaces funktioniert. Der IPAM-Controller weist IP-Adressen nur Diensten zu, die aus den in der Umgebungsvariablen angegebenen Namensräumen erstellt wurden.

Das folgende Beispiel zeigt, wie Sie Namespaces in der Umgebungsvariable VIP_NAMESPACES angeben können:

    - name: "VIP_NAMESPACES"
      value: 'default kube-system'

Der IPAM-Controller weist IP-Adressen zu Diensten zu, die aus default- und kube-system-Namespaces erstellt wurden.

Hinweis:

Wenn Sie die Umgebungsvariable VIP_NAMESPACES nicht verwenden oder keinen Wert festlegen, weist der IPAM-Controller IP-Adressen zu Diensten zu, die aus allen Namespaces erstellt wurden.