Contrôleur d'entrée Citrix ADC

Gestion des adresses IP à l’aide du contrôleur IPAM Citrix pour les ressources Ingress

Le contrôleur IPAM est une application fournie par Citrix pour la gestion des adresses IP et elle s’exécute en parallèle au Citrix ingress controller dans le cluster Kubernetes. L’allocation automatique d’adresses IP à des services de type LoadBalancer à partir d’une plage d’adresses IP spécifiée à l’aide du contrôleur IPAM est déjà prise en charge. Désormais, vous pouvez également attribuer des adresses IP aux ressources d’entrée d’une plage spécifiée à l’aide du contrôleur IPAM.

Vous pouvez spécifier des plages d’adresses IP dans le fichier YAML lors du déploiement du contrôleur IPAM à l’aide de YAML. Le Citrix ingress controller configure l’adresse IP allouée à la ressource Ingress en tant qu’adresse IP virtuelle (VIP) dans Citrix ADC MPX ou VPX.

Le contrôleur IPAM nécessite la CustomResourceDefinition (CRD) VIP fournie par Citrix. Le CRD VIP est utilisé pour la communication interne entre le Citrix ingress controller et le contrôleur IPAM.

Attribution d’une adresse IP pour la ressource d’entrée à l’aide du contrôleur IPAM

Cette rubrique fournit des informations sur la façon d’utiliser le contrôleur IPAM pour attribuer des adresses IP aux ressources d’entrée.

Pour configurer une ressource d’entrée avec une adresse IP provenant du contrôleur IPAM, effectuez les opérations suivantes :

  1. Déployer le CRD VIP
  2. Déployer le Citrix ingress controller
  3. Déployer le contrôleur IPAM
  4. Déployer l’application et la ressource Ingress

Étape 1 : Déployer le CRD VIP

Effectuez l’étape suivante pour déployer le CRD VIP Citrix qui permet la communication entre le Citrix ingress controller et le contrôleur IPAM.

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

Pour plus d’informations sur le CRD VIP, consultez le CustomResourceDefinitionVIP.

Étape 2 : Déployer le Citrix ingress controller

Effectuez les étapes suivantes pour déployer le Citrix ingress controller avec l’argument contrôleur IPAM.

  1. Téléchargez le fichier citrix-k8s-ingress-controller.yaml à l’aide de la commande suivante :

    wget  https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/deployment/baremetal/citrix-k8s-ingress-controller.yaml
    
  2. Modifiez le fichier YAML du Citrix ingress controller :

    • Spécifiez les valeurs des variables d’environnement selon vos besoins. Pour plus d’informations sur la spécification des variables d’environnement, consultez la section Déployer le Citrix ingress controller. Ici, vous n’avez pas besoin de préciser NS_VIP.

    • Spécifiez le contrôleur IPAM en tant qu’argument à l’aide de ce qui suit :

      args : - —ipam citrix-ipam-controller

    Voici un extrait d’un exemple de fichier YAML du Citrix ingress controller avec l’argument du contrôleur IPAM :

    Remarque :

    Ce YAML est uniquement destiné à la démonstration et non à la version complète. Utilisez toujours la dernière version du YAML et modifiez selon vos besoins. Pour obtenir la dernière version, consultez le fichier 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. Déployez le Citrix ingress controller à l’aide du fichier YAML modifié à l’aide de la commande suivante :

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

    Pour plus d’informations sur la façon de déployer le Citrix ingress controller, consultez la section Déployer le Citrix ingress controller.

Étape 3 : Déployer le contrôleur IPAM

Effectuez les étapes suivantes pour déployer le contrôleur IPAM.

  1. Créez un fichier nommé citrix-ipam-controller.yaml avec la configuration suivante :

    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
    

    Le manifeste contient deux variables d’environnement, VIP_RANGE et VIP_NAMESPACES. Vous pouvez spécifier la plage d’adresses IP routables appropriée avec un CIDR valide sous le VIP_RANGE. Si nécessaire, vous pouvez également spécifier un ensemble d’espaces de noms sous VIP_NAMESPACES afin que le contrôleur IPAM alloue des adresses uniquement pour les services ou les ressources d’entrée provenant d’espaces de noms spécifiques.

  2. Déployez le contrôleur IPAM à l’aide de la commande suivante :

    kubectl créer -f citrix-ipam-controller.yaml

Étape 4 : Déployer les ressources Ingress

Effectuez les étapes suivantes pour déployer un exemple d’application et une ressource Ingress.

  1. Déployez l’application Livre d’or à l’aide de la commande suivante :

    kubectl apply -f https://raw.githubusercontent.com/citrix/citrix-k8s-ingress-controller/master/example/guestbook/guestbook-all-in-one.yaml
    
  2. Créez le fichier YAML d’entrée de livre d’or avec la définition de ressource Ingress pour envoyer le trafic vers le front-end de l’application de livre d’or.

    Voici un exemple de 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. Déployez la ressource Ingress.

    kubectl create -f guestbook-ingress.yaml
    

Allocations d’adresses IP multiples

Pour les ressources d’entrée, une adresse IP peut être allouée plusieurs fois étant donné que plusieurs ressources d’entrée peuvent être gérées par un seul serveur csv. Si la plage IP spécifiée n’a qu’une seule adresse IP, elle est allouée plusieurs fois. Mais, si la plage IP nommée se compose de plusieurs adresses IP, une seule d’entre elles est allouée en permanence.

Pour faciliter les attributions multiples, le contrôleur IPAM assure le suivi des adresses IP allouées. Le contrôleur IPAM place une adresse IP dans le pool libre uniquement lorsque toutes les allocations de cette adresse IP par les ressources d’entrée sont libérées.

Allocations par différentes ressources

Les services de type LoadBalancer et les ressources Ingress peuvent utiliser le contrôleur IPAM pour les allocations IP en même temps. Si une adresse IP est allouée par un type de ressource, elle n’est pas disponible pour une ressource d’un autre type. Cependant, la même adresse IP peut être utilisée par plusieurs ressources d’entrée.

Gestion des adresses IP à l’aide du contrôleur IPAM Citrix pour les ressources Ingress