Ingress Controller de Citrix ADC

Soporte de ConfigMap para el Citrix Ingress Controller

El recurso de la API de ConfigMap contiene pares clave-valor de datos de configuración que se pueden consumir en pods o para almacenar datos de configuración para los componentes del sistema, como los controladores.

ConfigMaps le permite separar las configuraciones de los pods y hacer que sus cargas de trabajo sean portátiles. Con ConfigMaps, puede cambiar y administrar fácilmente sus configuraciones de carga de trabajo y reducir la necesidad de codificar los datos de configuración para las especificaciones del pod.

El Citrix Ingress Controller admite los argumentos de la línea de comandos de configuración y las variables de entorno mencionadas en la implementación del Citrix Ingress Controller. Sin embargo, no puede actualizar estas configuraciones en tiempo de ejecución sin reiniciar el pod del Citrix Ingress Controller. Con la compatibilidad con ConfigMap, puede actualizar la configuración automáticamente mientras mantiene el pod del Citrix Ingress Controller en ejecución. No es necesario reiniciar el pod después de la actualización.

Variables de entorno compatibles en el Citrix Ingress Controller

Los valores de las siguientes variables de entorno en el Citrix Ingress Controller se pueden especificar en un ConfigMap.

  • LOGLEVEL: especifica los niveles de registro para controlar los registros generados por el Citrix Ingress Controller (depuración, información, crítica, etc.). El valor predeterminado es debug.

  • NS_HTTP2_SERVER_SIDE: habilita HTTP2 para configuraciones de grupos de servicios de Citrix ADC con valores posibles como ON o OFF.

  • NS_PROTOCOL: especifica el protocolo para establecer la sesión ADC (HTTP/HTTPS). El valor predeterminado es http.

  • NS_PORT: especifica el puerto para establecer una sesión. El valor predeterminado es 80.

  • NS_COOKIE_VERSION: especifica la versión de la cookie de persistencia (0 o 1). El valor predeterminado es 0.

  • NS_DNS_NAMESERVER: Permite agregar servidores de nombres DNS en Citrix ADC VPX.

  • POD_IPS_FOR_SERVICEGROUP_MEMBERS: Especifica que se debe agregar la dirección IP del pod y el puerto como miembros del grupo de servicios en lugar de NodeIP y NodePort mientras se configuran servicios de tipo LoadBalancer o NodePort en un Citrix ADC externo de nivel 1.

  • IGNORE_NODE_EXTERNAL_IP: Especifica ignorar una dirección IP externa y agregar una dirección IP interna para NodeIP mientras se configura NodeIP para servicios de tipo LoadBalancer o NodePort en un Citrix ADC externo de nivel 1.

  • FRONTEND_HTTP_PROFILE: Establece las opciones HTTP para el servidor virtual front-end (plano cliente), a menos que la anotación ingress.citrix.com/frontend-httpprofile inteligente la anule en la definición de entrada.

  • FRONTEND_TCP_PROFILE: Establece las opciones de TCP para el servidor virtual front-end (lado del cliente), a menos que la anotación ingress.citrix.com/frontend-tcpprofile inteligente la anule en la definición de entrada.

  • FRONTEND_SSL_PROFILE: Establece las opciones de SSL para el servidor virtual front-end (lado del cliente) a menos que la anotación ingress.citrix.com/frontend-sslprofile inteligente la anule en la definición de entrada.

  • JSONLOG: Establezca este argumento en true si los mensajes de registro se requieren en formato JSON.

  • NS_ADNS_IPS: Permite configurar Citrix ADC como servidor ADNS.

Para obtener más información sobre las variables de entorno de perfil (FRONTEND_HTTP_PROFILE, FRONTEND_TCP_PROFILE y FRONTEND_SSL_PROFILE) , consulte Configurar perfiles HTTP, TCP o SSL en Citrix ADC.

Nota:

Esta es una versión inicial del soporte de ConfigMap y actualmente solo admite unos pocos parámetros. Anteriormente, estos parámetros se podían configurar a través de variables de entorno, excepto el parámetro NS_HTTP2_SERVER_SIDE.

Configuración de la compatibilidad de ConfigMap para el Citrix Ingress Controller

En este ejemplo se muestra cómo crear un ConfigMap y aplicar el ConfigMap al Citrix Ingress Controller. También muestra cómo volver a aplicar el ConfigMap después de hacer cambios. También puede eliminar los cambios de forma opcional.

Realice lo siguiente para configurar la compatibilidad de ConfigMap para el Citrix Ingress Controller.

  1. Crea un archivo YAML cic-configmap.yaml con los pares clave-valor requeridos en 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. Implemente cic-configmap.yaml mediante el siguiente comando.

    kubectl create -f cic-configmap.yaml
    
  3. Modifique el archivo cic.yaml para implementar el Citrix Ingress Controller como un pod independiente y especifique lo siguiente:

    Args:
        - --configmap
            default/cic-configmap
    

    Nota:

    Es obligatorio especificar el espacio de nombres. Si no se especifica el espacio de nombres, no se tiene en cuenta ConfigMap.

    A continuación se muestra un archivo YAML de ejemplo para implementar el Citrix Ingress Controller con la configuración de ConfigMap. Para obtener el archivo YAML completo, consulte 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.27.15"
              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. Implemente el Citrix Ingress Controller como un pod independiente mediante la aplicación de YAML.

    kubectl apply -f cic.yaml
    
  5. Si quiere cambiar el valor de una variable de entorno, modifique los valores en ConfigMap. En este ejemplo, el valor de NS_HTTP2_SERVER_SIDE cambia a “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. Vuelva a aplicar ConfigMap con el siguiente comando.

    kubectl apply -f cic-configmap.yaml
    
  7. (Opcional) Si necesita eliminar el ConfigMap, use el siguiente comando.

    kubectl delete -f cic-configmap.yaml
    

    Cuando elimina el ConfigMap, la configuración de la variable de entorno se reduce según el siguiente orden de precedencia: configuración de ConfigMap > configuración de variables de entorno > predeterminado

(Opcional) En caso de que quiera definir todas las claves de un ConfigMap como variables de entorno en el Citrix Ingress Controller, utilice lo siguiente en el archivo YAML de implementación del Citrix Ingress Controller.

    envFrom:
            - configMapRef: 
              name: cic-configmap
Soporte de ConfigMap para el Citrix Ingress Controller