Citrix ADC Ingress Controller

IP-Adressverwaltung mit dem Citrix IPAM-Controller für Ingress-Ressourcen

Der IPAM-Controller ist eine von Citrix bereitgestellte Anwendung für die IP-Adressverwaltung und wird parallel zum Citrix Ingress Controller im Kubernetes-Cluster ausgeführt. Die automatische Zuweisung von IP-Adressen zu Diensten vom Typ LoadBalancer aus einem angegebenen IP-Adressbereich mithilfe des IPAM-Controllers wird bereits unterstützt. Jetzt können Sie mithilfe des IPAM-Controllers auch IP-Adressen zu Ingress-Ressourcen aus einem bestimmten Bereich zuweisen.

Sie können IP-Adressbereiche in der YAML-Datei angeben, während Sie den IPAM-Controller mit YAML bereitstellen. Der Citrix Ingress Controller konfiguriert die der Ingress-Ressource zugewiesene IP-Adresse als virtuelle IP-Adresse (VIP) in Citrix ADC MPX oder VPX.

Der IPAM-Controller benötigt die von Citrix bereitgestellte VIP CustomResourceDefinition (CRD). Die VIP CRD wird für die interne Kommunikation zwischen dem Citrix Ingress Controller und dem IPAM-Controller verwendet.

Weisen Sie mithilfe des IPAM-Controllers die IP-Adresse für Ingress-Ressource zu

Dieses Thema enthält Informationen zur Verwendung des IPAM-Controllers zum Zuweisen von IP-Adressen für Ingress-Ressourcen.

Um eine Ingress-Ressource mit einer IP-Adresse vom IPAM-Controller zu konfigurieren, führen Sie die folgenden Schritte aus:

  1. Stellen Sie die VIP CRD bereit
  2. Bereitstellen des Citrix Ingress Controller
  3. Bereitstellen des IPAM-Controllers
  4. Stellen Sie die Anwendung und die Ingress-Ressource bereit

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 in der 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 die Datei 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. Hier müssen Sie nicht angeben NS_VIP.

    • 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. Die neueste Version finden Sie in der Datei citrix-k8s-ingress-controller.yaml .

    apiVersion: v1
    kind: Pod
    metadata:
      name: 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:
              - name: "NS_IP"
                value: "x.x.x.x"
              - name: "NS_USER"
                valueFrom:
                secretKeyRef:
                  name: nslogin
                  key: username
              - name: "NS_PASSWORD"
                valueFrom:
                secretKeyRef:
                  name: nslogin
                  key: password
              - name: "EULA"
                value: "yes"
              - name: POD_NAME
                valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: metadata.name
              - name: POD_NAMESPACE
                valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: metadata.namespace
            args:
              - --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. Erstellen Sie eine Datei mit dem Namen citrix-ipam-controller.yaml mit der folgenden Konfiguration:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: citrix-ipam-controller
      namespace: kube-system
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: citrix-ipam-controller
      template:
        metadata:
          labels:
            app: citrix-ipam-controller
        spec:
          serviceAccountName: citrix-ipam-controller
          containers:
          - name: citrix-ipam-controller
            image: quay.io/citrix/citrix-ipam-controller:1.0.3
            env:
            # This IPAM controller takes envirnment variable VIP_RANGE. IPs in this range are used to assign values for IP range
            - name: "VIP_RANGE"
              value: '[["10.217.6.115-10.217.6.117"], {"one-ip": ["5.5.5.5"]}, {"two-ip": ["6.6.6.6", "7.7.7.7"]}]'
            # The IPAM controller can also be configured with name spaces for which it would work through the environment variable
            # VIP_NAMESPACES, This expects a set of namespaces passed as space separated string
            imagePullPolicy: Always
    

    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 VIP_NAMESPACES angeben, sodass der IPAM-Controller Adressen nur für Dienste oder Ingress-Ressourcen aus bestimmten Namespaces zuweist.

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

    kubectl create -f citrix-ipam-controller.yaml

Schritt 4: Ingress-Ressourcen bereitstellen

Führen Sie die folgenden Schritte aus, um eine Beispielanwendung und eine Ingress-Ressource bereitzustellen.

  1. Stellen Sie die Guestbook-Anwendung mit dem folgenden Befehl bereit:

    kubectl apply -f https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/example/guestbook/guestbook-all-in-one.yaml
    
  2. Erstellen Sie die YAML-Datei für den Gastbucheingang mit Ingress-Ressourcendefinition, um Datenverkehr an das Front-End der Gästebuchanwendung zu senden.

    Das Folgende ist ein Beispiel für YAML:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: guestbook-ingress
      annotations:
    annotations:
      ingress.citrix.com/ipam-range: "two-ip"
      #ingress.citrix.com/frontend-ip: "5.5.5.5"
      kubernetes.io/ingress.class: "cic-vpx"
    spec:
      rules:
      - host:  www.guestbook.com
        http:
          paths:
          - path: /
            backend:
              serviceName: frontend
              servicePort: 80
    
  3. Stellen Sie die Ingress-Ressource bereit.

    kubectl create -f guestbook-ingress.yaml
    

Mehrfache IP-Adresszuweisungen

Für Ingress-Ressourcen kann eine IP-Adresse mehrfach zugewiesen werden, da mehrere eingehende Ressourcen von einem einzigen CSV-Server verwaltet werden können. Wenn der angegebene IP-Bereich nur eine einzige IP-Adresse hat, wird er mehrfach zugewiesen. Wenn der benannte IP-Bereich jedoch aus mehreren IP-Adressen besteht, wird nur eine davon ständig zugewiesen.

Um mehrere Zuweisungen zu ermöglichen, verfolgt der IPAM-Controller zugewiesene IP-Adressen. Der IPAM-Controller legt eine IP-Adresse nur dann in den freien Pool ein, wenn alle Zuordnungen dieser IP-Adresse durch Ingress-Ressourcen freigegeben werden.

Allokationen durch verschiedene Ressourcen

Beide Dienste vom Typ LoadBalancer und Ingress-Ressourcen können den IPAM-Controller gleichzeitig für IP-Zuweisungen verwenden. Wenn eine IP-Adresse von einem Ressourcentyp zugewiesen wird, ist sie für eine Ressource eines anderen Typs nicht verfügbar. Dieselbe IP-Adresse kann jedoch von mehreren eingehenden Ressourcen verwendet werden.

IP-Adressverwaltung mit dem Citrix IPAM-Controller für Ingress-Ressourcen