Gestion des adresses IP à l'aide du contrôleur IPAM

Dernière publication : Oct 02, 2026
Le contrôleur IPAM est un conteneur fourni par NetScaler pour la gestion des adresses IP et il s'exécute en parallèle du NetScaler Ingress Controller en tant que pod dans le cluster Kubernetes. Pour les services de type LoadBalancer, vous pouvez utiliser le contrôleur IPAM pour allouer automatiquement des adresses IP aux services à partir d'une plage d'adresses IP spécifiée. Vous pouvez spécifier cette plage d'adresses IP dans le fichier YAML lors du déploiement du contrôleur IPAM à l'aide de YAML. Le NetScaler Ingress Controller configure l'adresse IP allouée au service comme une adresse IP virtuelle (VIP) dans NetScaler MPX ou VPX. En utilisant cette adresse IP, vous pouvez accéder au service de l'extérieur.

Présentation des services de type LoadBalancer

Dans un environnement Kubernetes, un microservice est déployé sous forme d'un ensemble de pods créés et détruits dynamiquement. Étant donné que l'ensemble des pods qui font référence à un microservice change constamment, Kubernetes fournit une abstraction logique appelée service pour exposer votre microservice s'exécutant sur un ensemble de pods. Un service définit un ensemble logique de pods et des politiques pour y accéder.
Un service de type LoadBalancer est le moyen le plus simple d'exposer un microservice à l'intérieur d'un cluster Kubernetes au monde extérieur. Les services de type LoadBalancer sont nativement pris en charge dans les déploiements Kubernetes sur les clouds publics tels que AWS, GCP ou Azure. Dans les déploiements cloud, lorsque vous créez un service de type LoadBalancer, un équilibreur de charge géré par le cloud est attribué au service. Le service est ensuite exposé à l'aide de l'équilibreur de charge.

Solution IPAM NetScaler pour les services de type LoadBalancer

Il peut y avoir plusieurs situations où vous souhaitez déployer votre cluster Kubernetes sur du bare metal ou sur site plutôt que sur un cloud public. Lorsque vous exécutez vos applications sur des clusters Kubernetes bare metal, il est beaucoup plus facile de router le trafic TCP ou UDP en utilisant un service de type LoadBalancer qu'en utilisant l'ingress. Même pour le trafic HTTP, c'est parfois plus pratique que l'ingress. Cependant, il n'existe pas d'implémentation d'équilibreur de charge nativement disponible pour les clusters Kubernetes bare metal. NetScaler offre un moyen d'équilibrer la charge de ces services à l'aide du NetScaler Ingress Controller et de NetScaler.
Dans la solution NetScaler pour les services de type LoadBalancer, le NetScaler Ingress Controller déployé à l'intérieur du cluster Kubernetes configure un NetScaler déployé à l'extérieur du cluster pour équilibrer la charge du trafic entrant. Grâce à la solution NetScaler, vous pouvez équilibrer la charge du trafic entrant vers le cluster Kubernetes, que le déploiement soit sur bare metal, sur site ou sur un cloud public. Étant donné que le NetScaler Ingress Controller offre une gestion flexible des adresses IP qui permet la multi-location pour les NetScalers, vous pouvez utiliser un seul NetScaler pour équilibrer la charge de plusieurs services et pour exécuter des fonctions d'ingress. Ainsi, vous pouvez maximiser l'utilisation des ressources de l'équilibreur de charge et réduire considérablement vos dépenses opérationnelles.

Gestion des adresses IP à l'aide du contrôleur IPAM

Le contrôleur IPAM NetScaler nécessite le VIP CRD fourni par NetScaler. Le VIP CRD contient des champs pour le nom du service, l'espace de noms et l'adresse IP. Le VIP CRD est utilisé pour la communication interne entre le NetScaler Ingress Controller et le contrôleur IPAM.
Le diagramme suivant montre un déploiement d'un équilibreur de charge de type service où le contrôleur IPAM est utilisé pour attribuer une adresse IP à un service.
Services de type LoadBalancer
Lorsqu'un nouveau service de type Loadbalancer est créé, les événements suivants se produisent :
  1. Le NetScaler Ingress Controller crée un objet VIP CRD pour le service chaque fois que le champ loadBalancerIP du service est vide.
  2. Le contrôleur IPAM attribue une adresse IP à l'objet VIP CRD.
  3. Une fois que l'objet CRD VIP est mis à jour avec l'adresse IP, le NetScaler Ingress Controller configure automatiquement le NetScaler.
Remarque :
Les définitions de ressources personnalisées (CRD) offertes par NetScaler prennent également en charge les services de type LoadBalancer. Cela signifie que vous pouvez spécifier un service de type LoadBalancer comme nom de service lorsque vous créez un objet CRD et appliquez le CRD au service.

Exposer des services de type LoadBalancer avec des adresses IP attribuées par le contrôleur IPAM

Cette rubrique fournit des informations sur la manière d'exposer des services de type LoadBalancer avec des adresses IP attribuées par le contrôleur IPAM.
Pour exposer un service de type équilibreur de charge avec une adresse IP du contrôleur IPAM, suivez les étapes suivantes :

Déployer le NetScaler Ingress Controller

Suivez les étapes suivantes pour déployer le NetScaler Ingress Controller avec l'argument du contrôleur IPAM.
  1. Ajoutez le référentiel de chart Helm NetScaler® à votre registre local à l'aide de la commande suivante.
    helm repo add netscaler https://netscaler.github.io/netscaler-helm-charts/
  2. Installez le NetScaler Ingress Controller à l'aide de la commande suivante.
    helm install netscaler-ingress-controller netscaler/netscaler-ingress-controller --set nsIP=<NS_IP>,license.accept=yes,adcCredentialSecret=<>,ingressClass[0]=netscaler,serviceClass[0]=netscaler,ipam=true -n netscaler
    Pour des informations détaillées sur le déploiement et la configuration de NetScaler Ingress Controller à l'aide des charts Helm, consultez le référentiel de charts Helm.

Déployer le contrôleur IPAM

  1. Ajoutez le référentiel de charts Helm NetScaler à votre registre local à l'aide de la commande suivante.
    helm repo add netscaler https://netscaler.github.io/netscaler-helm-charts/
  2. Installez le contrôleur IPAM NetScaler à l'aide de la commande suivante.
    helm install netscaler-ipam-controller netscaler/netscaler-ipam-controller --set vipRange='[{"Prod": ["10.1.2.0 - 10.1.2.255"]}]' -n netscaler

Déployer une application exemple

Effectuez les étapes suivantes pour déployer une application apache dans votre cluster Kubernetes.
Remarque :
Dans cet exemple, une application apache est utilisée. Vous pouvez déployer une application exemple de votre choix.
  1. Déployez une application exemple à l'aide de la commande suivante :
      kubectl apply -f - <<EOF
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: apache
        namespace: netscaler
        labels:
          name: apache
      spec:
        selector:
          matchLabels:
            app: apache
        replicas: 2
        template:
          metadata:
            labels:
              app: apache
          spec:
            containers:
            - name: apache
              image: httpd:latest
              ports:
              - name: http
                containerPort: 80
              imagePullPolicy: IfNotPresent
        EOF
        ```
  2. Vérifiez si les pods sont en cours d'exécution à l'aide de la commande suivante :
    kubectl get pods

Exposer l'application exemple à l'aide d'un service de type LoadBalancer

Effectuez les étapes suivantes pour créer un service de type LoadBalancer :
  1. Déployez un service pour exposer l'application apache, pour laquelle l'adresse IP est allouée à partir de la plage VIP Prod spécifiée lors de l'installation d'IPAM.
      kubectl apply -f - <<EOF  
      apiVersion: v1
      kind: Service
      metadata:
        name: apache
        namespace: netscaler
        labels:
          name: apache
        annotations:
          service.citrix.com/class: 'netscaler'
          service.citrix.com/ipam-range: 'Prod'
      spec:
        externalTrafficPolicy: Local
        type: LoadBalancer
        ports:
        - name: http
          port: 80
          targetPort: http
        selector:
          app: apache

      EOF
    Lorsque vous créez le service, le contrôleur IPAM attribue une adresse IP au service apache à partir de la plage d'adresses IP que vous avez définie lors du déploiement du contrôleur IPAM. L'adresse IP allouée par le contrôleur IPAM est fournie dans le champ status.loadBalancer.ingress: de la définition du service. NetScaler Ingress Controller configure l'adresse IP allouée au service comme une adresse IP virtuelle (VIP) dans NetScaler.
  2. Affichez le service à l'aide de la commande suivante :
kubectl get service apache --output yaml
Sortie :
Sortie du service de type LoadBalancer

Accéder au service

Vous pouvez accéder au service apache en utilisant l'adresse IP attribuée au service par le contrôleur IPAM. Vous pouvez trouver l'adresse IP dans le champ status.loadBalancer.ingress: de la définition du service. Utilisez la commande curl suivante pour accéder au service :
curl <IP_address>
La réponse devrait être :
<html><body><h1>It works!</h1></body></html>