Contrôleur d'entrée Citrix ADC

Prise en charge de ConfigMap pour le Citrix ingress controller

La ressource d’API ConfigMap contient des paires clé-valeur de données de configuration qui peuvent être consommées dans des espaces ou pour stocker des données de configuration pour des composants système tels que des contrôleurs.

ConfigMaps vous permet de séparer vos configurations de vos pods et de rendre vos charges de travail portables. Grâce à ConfigMaps, vous pouvez facilement modifier et gérer vos configurations de charge de travail et réduire le besoin de coder en dur les données de configuration en fonction des spécifications du module.

Le Citrix ingress controller prend en charge les arguments de ligne de commande de configuration et les variables d’environnement mentionnées dans le déploiement du Citrix ingress controller. Toutefois, vous ne pouvez pas mettre à jour ces configurations lors de l’exécution sans redémarrer l’espace du Citrix ingress controller. Avec la prise en charge de ConfigMap, vous pouvez mettre à jour la configuration automatiquement tout en conservant le conteneur de Citrix ingress controller en cours d’exécution. Vous n’avez pas besoin de redémarrer le module après la mise à jour.

Variables d’environnement prises en charge dans le Citrix ingress controller

Les valeurs des variables d’environnement suivantes dans le Citrix ingress controller peuvent être spécifiées dans un ConfigMap.

  • LOGLEVEL : spécifie les niveaux de journal pour contrôler les journaux générés par le Citrix ingress controller (débogage, informations, critiques, etc.). La valeur par défaut est debug.

  • NS_HTTP2_SERVER_SIDE : active HTTP2 pour les configurations de groupes de services Citrix ADC avec des valeurs possibles telles que ON ou OFF.

  • NS_PROTOCOL : spécifie le protocole pour établir la session ADC (HTTP/HTTPS). La valeur par défaut est http.

  • NS_PORT : spécifie le port pour établir une session. La valeur par défaut est 80.

  • NS_COOKIE_VERSION : spécifie la version du cookie de persistance (0 ou 1). La valeur par défaut est 0.

  • NS_DNS_NAMESERVER : permet d’ajouter des serveurs de noms DNS sur Citrix ADC VPX.

  • POD_IPS_FOR_SERVICEGROUP_MEMBERS : spécifie d’ajouter l’adresse IP de l’espace et du port en tant que membres du groupe de services au lieu de NodeIP et NodePort lors de la configuration de services de type LoadBalancer ou NodePort sur un Citrix ADC externe de niveau 1.

  • IGNORE_NODE_EXTERNAL_IP : spécifie d’ignorer une adresse IP externe et d’ajouter une adresse IP interne pour NodeIP lors de la configuration de NodeIP pour les services de type LoadBalancer ou NodePort sur un Citrix ADC externe de niveau 1.

  • FRONTEND_HTTP_PROFILE : Définit les options HTTP pour le serveur virtuel frontal (plan client), sauf si elles sont remplacées par l’annotation ingress.citrix.com/frontend-httpprofile intelligente dans la définition d’entrée.

  • FRONTEND_TCP_PROFILE : Définit les options TCP pour le serveur virtuel frontal (côté client), sauf si elles sont remplacées par l’annotation ingress.citrix.com/frontend-tcpprofile intelligente dans la définition d’entrée.

  • FRONTEND_SSL_PROFILE : Définit les options SSL pour le serveur virtuel frontal (côté client) sauf si elles sont remplacées par l’annotation ingress.citrix.com/frontend-sslprofile intelligente dans la définition d’entrée.

  • JSONLOG : définissez cet argument sur true si les messages de journal sont requis au format JSON.

Pour plus d’informations sur les variables d’environnement de profil (FRONTEND_HTTP_PROFILE, FRONTEND_TCP_PROFILE et FRONTEND_SSL_PROFILE), consultez Configurer des profils HTTP, TCP ou SSL sur Citrix ADC.

Remarque :

Il s’agit d’une version initiale de la prise en charge de ConfigMap et ne prend actuellement en charge que quelques paramètres. Auparavant, ces paramètres étaient configurables via des variables d’environnement, à l’exception du paramètre NS_HTTP2_SERVER_SIDE.

Configuration de la prise en charge de ConfigMap pour le Citrix ingress controller

Cet exemple montre comment créer un ConfigMap et appliquer le ConfigMap au Citrix ingress controller. Il montre également comment réappliquer le ConfigMap après avoir apporté des modifications. Vous pouvez également supprimer les modifications si vous le souhaitez.

Effectuez les opérations suivantes pour configurer la prise en charge de ConfigMap pour le Citrix ingress controller.

  1. Créez un fichier YAML cic-configmap.yaml avec les paires clé-valeur requises dans ConfigMap.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cic-configmap
      labels:
        app: citrix-ingress-controller
    data:
      LOGLEVEL: 'info'
      NS_PROTOCOL: 'http'
      NS_PORT: '80'
      NS_COOKIE_VERSION: '0'
      NS_HTTP2_SERVER_SIDE: 'ON'
    
  2. Déployez cic-configmap.yaml à l’aide de la commande suivante.

    kubectl create -f cic-configmap.yaml
    
  3. Modifiez le cic.yaml fichier pour déployer le Citrix ingress controller en tant qu’espace autonome et spécifiez les éléments suivants :

    Args:
        - --configmap
            default/cic-configmap
    

    Remarque :

    Il est obligatoire de spécifier l’espace de noms. Si l’espace de noms n’est pas spécifié, ConfigMap n’est pas pris en compte.

    Voici un exemple de fichier YAML pour déployer le Citrix ingress controller avec la configuration ConfigMap. Pour obtenir le fichier YAML complet, consultez citrix-k8s-ingress-controller.yaml.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: cic-k8s-ingress-controller
    spec:
      selector:
        matchLabels:
          app: cic-k8s-ingress-controller
        replicas: 1
        template:
          metadata:
            name: cic-k8s-ingress-controller
            labels:
              app: cic-k8s-ingress-controller
          annotations:
          spec: 
            serviceAccountName: cic-k8s-role
            containers:
            - name: cic-k8s-ingress-controller
              image: "quay.io/citrix/citrix-k8s-ingress-controller:1.26.7"
              env:
              # Set NetScaler NSIP/SNIP, SNIP in case of HA (mgmt has to be enabled) 
              - name: "NS_IP"
                value: "x.x.x.x"
              - name: "EULA"
                value: "yes"
              args:
                - --ingress-classes
                  citrix
                - --feature-node-watch
                  false
                - --configmap
                  default/cic-configmap
              imagePullPolicy: Always
    
  4. Déployez le Citrix ingress controller en tant qu’espace autonome en appliquant le YAML.

    kubectl apply -f cic.yaml
    
  5. Si vous souhaitez modifier la valeur d’une variable d’environnement, modifiez les valeurs dans la ConfigMap. Dans cet exemple, la valeur de NS_HTTP2_SERVER_SIDE est remplacée par « OFF ».

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cic-configmap
      labels:
        app: citrix-ingress-controller
    data:
      LOGLEVEL: 'info'
      NS_PROTOCOL: 'http'
      NS_PORT: '80'
      NS_COOKIE_VERSION: '0'
      NS_HTTP2_SERVER_SIDE: 'OFF'
    
  6. Réappliquez le ConfigMap à l’aide de la commande suivante.

    kubectl apply -f cic-configmap.yaml
    
  7. (Facultatif) Si vous devez supprimer le ConfigMap, utilisez la commande suivante.

    kubectl delete -f cic-configmap.yaml
    

    Lorsque vous supprimez ConfigMap, la configuration de la variable d’environnement revient en arrière selon l’ordre de priorité suivant : Configuration de ConfigMap > configuration de la variable d’environnement > par défaut

(Facultatif) Si vous souhaitez définir toutes les clés d’un ConfigMap en tant que variables d’environnement dans le Citrix ingress controller, utilisez ce qui suit dans le fichier YAML de déploiement du Citrix ingress controller.

    envFrom:
            - configMapRef: 
              name: cic-configmap
Prise en charge de ConfigMap pour le Citrix ingress controller