IP-Adressverwaltung mit dem IPAM-Controller

Last published : Oct 02, 2026
Der IPAM-Controller ist eine von NetScaler bereitgestellte Anwendung zur IP-Adressverwaltung und läuft parallel zum NetScaler Ingress Controller im Kubernetes-Cluster. Mit dem IPAM-Controller können Sie Ingress-Ressourcen, Dienste vom Typ LoadBalancer und Listener-Ressourcen aus einem angegebenen IP-Adressbereich IP-Adressen zuweisen. Der NetScaler Ingress Controller konfiguriert eine einem Dienst, Ingress oder einer Listener-Ressource zugewiesene IP-Adresse als virtuelle IP-Adresse (VIP) in NetScaler MPX oder NetScaler VPX.
Der IPAM-Controller erfordert die von NetScaler bereitgestellte VIP CustomResourceDefinition (CRD). Die VIP-CRD wird für die interne Kommunikation zwischen dem NetScaler Ingress Controller und dem IPAM-Controller verwendet.

Infoblox-Integration mit dem IPAM-Controller

Mit der Infoblox-Integration weist der IPAM-Controller IP-Adressen für Dienste vom Typ LoadBalancer, Ingress oder Listener-Ressourcen von Infoblox zu.
Die folgenden Annotationen werden in einer Ingress-Ressource, Listener-Ressource bzw. einem Dienst vom Typ LoadBalancer unterstützt:
  • ingress.citrix.com/ipam-range
  • listeners.citrix.com/ipam-range
  • service.citrix.com/ipam-range
Sie müssen die im IPAM-Controller definierten IP-Adressbereiche mithilfe dieser Annotationen für die jeweiligen Ressourcen angeben. Der IP-Adressbereich muss entweder ein IPAM-VIP-Bereich oder ein Infoblox-VIP-Bereich sein.
Hinweis:
  • Die Infoblox-Integration wird für Versionen bis 2.12.3, beginnend mit IPAM Controller Version 2.2.10, unterstützt.
  • Sie dürfen die vom IPAM über Infoblox zugewiesene IP-Adresse nicht aktualisieren oder löschen.
Der IPAM-Controller stellt in einer Multi-Cluster-Einrichtung die folgenden Herausforderungen dar:
  • Eine IP-Adresse muss manuell bereitgestellt werden.
  • Eine gemeinsame IP-Adresse muss jeder Anwendung zugewiesen werden, die über mehrere Cluster hinweg bereitgestellt wird.
  • Einschränkungen beim Teilen des IP-Adressbereichs zwischen IPAM-Controllern in anderen Clustern, was die Aufgabe komplexer macht.
Die Infoblox-Integration mit IPAM hilft bei den folgenden Aufgaben:
  • Zuweisen einer verfügbaren IP-Adresse aus dem angegebenen IP-Adressbereich mithilfe der Infoblox-Netzwerkverwaltung.
  • Anfordern der einem Domänennamen zugeordneten IP-Adresse, um den Abruf einer bereits vorhandenen IP-Adresse sicherzustellen.
  • In einem Multi-Cluster-Ingress-Setup kann auf die über verschiedene Cluster hinweg bereitgestellte Anwendung über eine einzige, konsistente IP-Adresse zugegriffen werden.
Während der Initialisierung verbindet sich der IPAM-Controller mit Infoblox und erstellt eine Netzwerkansicht, falls diese noch nicht verfügbar ist. Diese Netzwerkansichtserstellung basiert auf dem Netzwerkbereich in der von Ihnen bereitgestellten DNS-Ansicht. Wenn der Netzwerkbereich in der DNS-Ansicht nicht angegeben ist, erstellt der IPAM-Controller eine Netzwerkansicht.

Zuweisen einer IP-Adresse mithilfe des IPAM-Controllers

Um eine Ingress-Ressource oder Listener-Ressource oder einen Dienst vom Typ LoadBalancer mit einer IP-Adresse vom IPAM-Controller zu konfigurieren, führen Sie die folgenden Schritte aus:
  1. Die VIP-CRD bereitstellen
  2. Den NetScaler Ingress Controller bereitstellen
  3. Den IPAM-Controller bereitstellen
  4. Die Anwendung und Ingress-Ressource bereitstellen

Schritt 1: Die VIP-CRD bereitstellen

Führen Sie den folgenden Schritt aus, um die NetScaler VIP-CRD bereitzustellen, die die Kommunikation zwischen dem NetScaler Ingress Controller und dem IPAM-Controller ermöglicht.
kubectl create -f https://raw.githubusercontent.com/netscaler/netscaler-k8s-ingress-controller/master/crd/vip/vip.yaml
Weitere Informationen zur VIP CRD finden Sie unter VIP CustomResourceDefinition.

Schritt 2: NetScaler Ingress Controller bereitstellen

Voraussetzungen

  • Kubernetes-Cluster und ein kubectl-Befehlszeilentool zur Kommunikation mit dem Cluster.
  • Erstellen Sie mit dem folgenden Befehl ein Secret unter Verwendung der NetScaler VPX- oder NetScaler MPX-Anmeldeinformationen:
    kubectl create secret  generic nslogin --from-literal=username=<username> --from-literal=password=<password>
  • Fügen Sie das NetScaler Helm-Chart-Repository mit dem folgenden Befehl hinzu:
    helm repo add netscaler https://netscaler.github.io/netscaler-helm-charts/
NSIC bereitstellen
  1. Aktualisieren Sie das NetScaler Helm-Chart-Repository mit dem folgenden Befehl:
    helm repo update netscaler
  2. Aktualisieren Sie values.yaml, um den NetScaler Ingress Controller wie folgt zu konfigurieren.
    Beispiel values.yaml:
    license:
      accept: yes
    adcCredentialSecret: nslogin # K8s Secret Name
    nsIP: <x.x.x> # CLIP (for appliances in Cluster mode), SNIP (for appliances in High Availability mode) , NSIP (for standalone appliances)
    openshift: false # set to true for OpenShift deployments
    entityPrefix: cluster1 # unique for each NSIC instance.
    ipam: true
    ingressClass: ['cic-vpx'] # ingress class used in the ingress resources
    serviceClass: ['netscaler'] # To use service type LB, specify the service class
  3. Installieren Sie den NetScaler Ingress Controller für Ihren NetScaler VPX oder NetScaler mit dem folgenden Helm-Befehl:
    helm install nsic netscaler/netscaler-ingress-controller -f values.yaml
Detaillierte Informationen zur Bereitstellung und Konfiguration des NetScaler Ingress Controllers mithilfe von Helm-Charts finden Sie unter dem Helm-Chart-Repository.

Schritt 3: IPAM-Controller bereitstellen

Voraussetzungen
  • Stellen Sie für die Infoblox-Integration sicher, dass Sie in Infoblox eine Benutzerrolle mit den folgenden Berechtigungen erstellen:
    • IP-Adressverwaltung:
      • IP-Adressen zuweisen und verwalten.
      • Host-Einträge erstellen, aktualisieren und löschen.
    • Verwaltung erweiterbarer Attribute:
      • Erweiterbare Attribute erstellen, aktualisieren und löschen.
  • Für die Infoblox-Integration erstellen Sie ein Kubernetes-Secret mit Infoblox-Benutzeranmeldeinformationen, indem Sie den folgenden Befehl ausführen:
    kubectl create secret  generic infobloxlogin --from-literal=username=<Infoblox_username> --from-literal=password=<Infoblox_password>
In diesem Verfahren stellen wir einen IPAM-Controller bereit und integrieren Infoblox in den IPAM-Controller.
  1. Fügen Sie das NetScaler Helm Chart-Repository zu Ihrer lokalen Registrierung hinzu, indem Sie den folgenden Befehl verwenden:
    helm repo add netscaler https://netscaler.github.io/netscaler-helm-charts/
  2. Installieren Sie den NetScaler IPAM-Controller, indem Sie den folgenden Befehl verwenden:
    helm install netscaler-ipam-controller netscaler/netscaler-ipam-controller -f values.yaml
Beispiel values.yaml:
cluster: 'cluster1' # enables you to know in which cluster IPAM is installed in multi-cluster solution
vipRange: "[{\"range1\": [\"1.2.1.51-1.2.1.59\"]\,\"range2\": [\"1.2.1.61-1.2.1.69\"]}]" # range1 has IPs from 1.2.1.51 to 1.2.1.59 and range2 has IPs from 1.2.1.61 to 1.2.1.69
reuseIngressVip: "True"  # set to False to assigns  different IP address to each ingress resource
infoblox:
  enabled: True #set to false to disable Infoblox integration with IPAM controller
  credentialSecret: <secret> # Kubernetes secret created using Infoblox user credentials
  gridHost: <x.x.x.x>  # Infoblox grid host IP or FQDN
  vipRange: "[{"infoblox-range": ["1.1.1.0/24"]}]"  # Infoblox IPAM VIP Range, which is different from the vipRange mentioned above. This has to be in CIDR format like 1.1.1.0/24
Die folgende Tabelle enthält Informationen zu allen konfigurierbaren Parametern während der Installation des IPAM-Controllers:
Parameter Obligatorisch oder optional Standardwert Beschreibung
imageRegistry Obligatorisch quay.io Die Image-Registry des NetScaler IPAM Controllers.
imageRepository Obligatorisch netscaler/netscaler-ipam-controller Das Image-Repository des NetScaler IPAM Controllers.
imageTag Obligatorisch 2.1.2 Der Image-Tag des NetScaler IPAM Controllers.
pullPolicy Obligatorisch IfNotPresent Die Image-Pull-Richtlinie des NetScaler IPAM Controllers.
vipRange Obligatorisch N/A Diese Variable ermöglicht es Ihnen, den IP-Adressbereich zu definieren. Sie können entweder einen IP-Adressbereich oder einen IP-Adressbereich, der mit einem eindeutigen Namen verknüpft ist, definieren. Der NetScaler IPAM Controller weist dem Dienst vom Typ LoadBalancer die IP-Adresse aus diesem IP-Adressbereich zu.
reuseIngressVip Optional True Diese Variable ermöglicht es Ihnen, dieselbe IP-Adresse für alle Ingresses zu verwenden, die dasselbe vipRange nutzen.
Cluster Obligatorisch, wenn infoblox.enabled true ist N/A Diese Variable ermöglicht es Ihnen, den Clusternamen anzugeben, der zur Identifizierung des Clusters verwendet wird, in dem der IPAM Controller bereitgestellt wird.
infoblox.enabled Optional falsch Boolescher Wert, mit dem Sie Infoblox IPAM aktivieren oder deaktivieren können.
infoblox.gridHost Obligatorisch, wenn infoblox.enabled wahr ist N/A Infoblox Grid-Host-IP oder FQDN, der vom Cluster aus erreichbar sein muss.
infoblox.credentialSecret Obligatorisch, wenn infoblox.enabled wahr ist N/A Kubernetes Secret im selben Namespace, das den Infoblox-Benutzernamen und das Passwort mit den gewünschten Zugriffsrechten enthält, wie in den Voraussetzungen aufgeführt.
infoblox.httpTimeout Optional 10 Diese Variable ermöglicht es Ihnen, das HTTP-Timeout des Infoblox-Clients in Sekunden anzugeben.
infoblox.maxRetries Optional 3 Diese Variable ermöglicht es Ihnen, die maximale Anzahl der Wiederholungsversuche des Infoblox-Clients bei einem Fehler anzugeben.
infoblox.netView Optional Standard Diese Variable ermöglicht es Ihnen, die Infoblox-Netzwerkansicht anzugeben. Wenn die Netzwerkansicht nicht vorhanden ist, wird sie erstellt.
infoblox.vipRange Obligatorisch, wenn infoblox.enabled auf true gesetzt ist N/A Infoblox IPAM virtueller IP-Adressbereich, der vom Controller verwaltet wird. Alle IP-Adressen in diesem Bereich werden in Infoblox vom Controller verwaltet und dürfen für keine anderen Prozesse in Konflikt geraten. Der IP-Bereich muss im CIDR-Format a.b.c.d/n vorliegen. Beispiel: "[{"infoblox-range": ["1.1.1.0/24"]}]".
serviceAccount.create Obligatorisch wahr Diese Variable erstellt ein Dienstkonto für den NetScaler IPAM Controller.
serviceAccount.tokenExpirationSeconds Obligatorisch 31536000 Zeit in Sekunden, nach der das Token des Dienstkontos abläuft.
serviceAccount.name Optional "" Name des Dienstkontos für den IPAM Controller. Wenn Sie ein Dienstkonto verwenden möchten, das Sie bereits erstellt und selbst verwalten, geben Sie hier dessen Namen an und setzen Sie serviceAccount.create auf false.

Schritt 4: Ingress-Ressourcen bereitstellen

Führen Sie die folgenden Schritte aus, um eine Beispielanwendung und eine Ingress-Ressource bereitzustellen.
  1. Stellen Sie die CNN-Anwendung mit dem folgenden Befehl bereit:
    kubectl apply -f - <<EOF
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: cnn-website
      labels:
        name: cnn-website
        app: cnn-website
    spec:
      selector:
        matchLabels:
          app: cnn-website
      replicas: 2
      template:
        metadata:
          labels:
            name: cnn-website
            app: cnn-website
        spec:
          containers:
          - name: cnn-website
            image: quay.io/sample-apps/cnn-website:v1.0.0
            ports:
            - name: http-80
              containerPort: 80
            - name: https-443
              containerPort: 443
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: cnn-website
      labels:
        app: cnn-website
    spec:
      type: NodePort
      ports:
      - name: http-80
        port: 80
        targetPort: 80
      - name: https-443
        port: 443
        targetPort: 443
      selector:
        name: cnn-website
    EOF
  2. Stellen Sie die Ingress-Ressource bereit, um Datenverkehr mit dem folgenden Befehl an die CNN-Anwendung zu senden:
    kubectl apply -f - <<EOF
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: cnn-ingress
      annotations:
        ingress.citrix.com/ipam-range: "<IPAM-vip-range or Infoblox-vip-range>"
    spec:
      ingressClassName: cic-vpx
      rules:
      - host: www.cnn.com
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: cnn-website
                port:
                  number: 80
    EOF
Für das vorhergehende Ingress-Beispiel ist die Reihenfolge der IP-Zuweisung wie folgt:
  • Wenn die Standard-Umgebungsvariable NS_VIP bereitgestellt wird, stellt der NetScaler Ingress Controller nur dann eine Anfrage an den IPAM Controller, wenn der Bereichsname (ingress.citrix.com/ipam-range:) im Ingress angegeben ist. Wenn die Annotation nicht bereitgestellt wird, wird NS_VIP für diesen Ingress verwendet.
  • Wenn die Standard-Umgebungsvariable NS_VIP nicht bereitgestellt wird, stellt der NetScaler Ingress Controller immer eine Anfrage an den IPAM Controller für die IP-Zuweisung.

IP-Adresszuweisungen

  • Für Dienste vom Typ LoadBalancer wird jedem Dienst eine eindeutige IP-Adresse aus dem VIP-Bereich oder dem Infoblox-VIP-Bereich zugewiesen.
  • Für eine Ingress-Ressource wird eine IP-Adresse im angegebenen IP-Bereich zugewiesen. Wenn weitere Ingress-Ressourcen auf denselben VIP-Bereich verweisen, wird die der ersten Ingress-Ressource zugewiesene IP-Adresse allen anderen Ingress-Ressourcen zugewiesen.
  • Dienste vom Typ LoadBalancer, Ingress-Ressourcen und Listener-Ressourcen können den NetScaler IPAM-Controller gleichzeitig für IP-Adresszuweisungen verwenden. Wenn eine IP-Adresse einem Ressourcentyp zugewiesen wird, ist sie für einen anderen Ressourcentyp nicht verfügbar. Dieselbe IP-Adresse kann jedoch mehreren Ingress-Ressourcen zugewiesen werden.

IP-Adressbereich, der einem eindeutigen Namen zugeordnet ist

Sie können dem IP-Adressbereich einen eindeutigen Namen zuweisen und den Bereich in der Umgebungsvariablen VIP_RANGE definieren. Diese Art der Zuweisung des IP-Adressbereichs ermöglicht es Ihnen, zwischen den IP-Adressbereichen zu unterscheiden. Wenn Sie die Dienste vom Typ LoadBalancer erstellen, können Sie die Anmerkung service.citrix.com/ipam-range in der Dienstdefinition verwenden, um den für die IP-Adresszuweisung zu verwendenden IP-Adressbereich anzugeben.

Mehrere IP-Adresszuweisungen

Für Ingress-Ressourcen kann eine IP-Adresse mehrfach zugewiesen werden, indem der Helm-Chart-Parameter reuseIngressVip als true angegeben wird, da mehrere Ingress-Ressourcen von einem einzigen Content Switching Virtual Server verarbeitet werden könnten. Wenn der angegebene IP-Bereich nur eine einzige IP-Adresse hat, wird sie mehrfach zugewiesen. Und wenn der IP-Bereich aus mehreren IP-Adressen besteht, wird nur eine davon wiederholt zugewiesen.
Um mehrere Zuweisungen zu ermöglichen, verfolgt der IPAM-Controller die zugewiesenen IP-Adressen. Der IPAM-Controller legt eine IP-Adresse nur dann in den freien Pool, wenn alle Zuweisungen dieser IP-Adresse durch Ingress-Ressourcen freigegeben werden.