Citrix ADC Ingress Controller

ConfigMap-Unterstützung für den Citrix Ingress Controller

Die ConfigMap-API-Ressource enthält Schlüssel-Wert-Paare von Konfigurationsdaten, die in Pods oder zum Speichern von Konfigurationsdaten für Systemkomponenten wie Controller verwendet werden können.

ConfigMaps ermöglicht es Ihnen, Ihre Konfigurationen von Ihren Pods zu trennen und Ihre Workloads portabel zu machen. Mit ConfigMaps können Sie Ihre Workload-Konfigurationen einfach ändern und verwalten und den Bedarf an Hardcode-Konfigurationsdaten auf Pod-Spezifikationen reduzieren.

Der Citrix Ingress Controller unterstützt die Befehlszeilenargumente für die Konfiguration und Umgebungsvariablen, die bei der Bereitstellung des Citrix Ingress Controller erwähnt werden. Sie können diese Konfigurationen jedoch nicht zur Laufzeit aktualisieren, ohne den Citrix Ingress Controller-Pod neu zu starten. Mit der ConfigMap-Unterstützung können Sie die Konfiguration automatisch aktualisieren, während der Citrix Ingress Controller Pod am Laufen gehalten wird. Sie müssen den Pod nach dem Update nicht neu starten.

Unterstützte Umgebungsvariablen im Citrix Ingress Controller

Die Werte für die folgenden Umgebungsvariablen im Citrix Ingress Controller können in einer ConfigMap angegeben werden.

  • LOGLEVEL: Gibt die Protokollebenen an, um die vom Citrix Ingress Controller generierten Protokolle zu steuern (Debug, Info, kritisch usw.). Der Standardwert ist debug.

  • NS_HTTP2_SERVER_SIDE: Aktiviert HTTP2 für Citrix ADC-Dienstgruppenkonfigurationen mit möglichen Werten wie ON oder OFF.

  • NS_PROTOCOL: Gibt das Protokoll zum Aufbau der ADC-Sitzung an (HTTP/HTTPS). Der Standardwert ist http.

  • NS_PORT: Gibt den Port an, um eine Sitzung einzurichten. Der Standardwert ist 80.

  • NS_COOKIE_VERSION: Gibt die Version des Persistenzcookies an (0 oder 1). Der Standardwert ist 0.

  • NS_DNS_NAMESERVER: Ermöglicht das Hinzufügen von DNS-Nameservern auf Citrix ADC VPX.

  • POD_IPS_FOR_SERVICEGROUP_MEMBERS: Gibt an, dass die IP-Adresse des Pods und des Port als Dienstgruppenmitglieder hinzugefügt werden soll, anstatt NodeIP und NodePort während Dienste vom Typ LoadBalancer oder NodePort auf einem externen Citrix ADC der Stufe 1 konfiguriert werden.

  • IGNORE_NODE_EXTERNAL_IP: Gibt an, dass eine externe IP-Adresse ignoriert und eine interne IP-Adresse für NodeIP hinzugefügt wird, während NodeIP für Dienste des Typs LoadBalancer oder NodePort auf einem externen Citrix ADC der Stufe 1 konfiguriert wird.

  • FRONTEND_HTTP_PROFILE: Legt die HTTP-Optionen für den virtuellen Front-End-Server (Clientebene) fest, sofern sie nicht durch die Smart-Annotation ingress.citrix.com/frontend-httpprofile in der Eingangsdefinition überschrieben werden.

  • FRONTEND_TCP_PROFILE: Legt die TCP-Optionen für den virtuellen Front-End-Server (clientseitig) fest, sofern sie nicht durch die Smart-Annotation ingress.citrix.com/frontend-tcpprofile in der Eingangsdefinition überschrieben werden.

  • FRONTEND_SSL_PROFILE: Legt die SSL-Optionen für den virtuellen Front-End-Server (clientseitig) fest, sofern sie nicht durch die Smart-Annotation ingress.citrix.com/frontend-sslprofile in der Eingangsdefinition überschrieben werden.

  • JSONLOG: Setzen Sie dieses Argument auf true, wenn Protokollmeldungen im JSON-Format erforderlich sind.

  • NS_ADNS_IPS: Ermöglicht die Konfiguration von Citrix ADC als ADNS-Server.

Weitere Informationen zu Profilumgebungsvariablen (FRONTEND_HTTP_PROFILE, FRONTEND_TCP_PROFILE und FRONTEND_SSL_PROFILE) finden Sie unter Konfigurieren von HTTP-, TCP- oder SSL-Profilen auf Citrix ADC.

Hinweis:

Dies ist eine erste Version der ConfigMap-Unterstützung und unterstützt derzeit nur wenige Parameter. Zuvor waren diese Parameter mit Ausnahme des Parameters NS_HTTP2_SERVER_SIDE über Umgebungsvariablen konfigurierbar.

Konfigurieren der ConfigMap-Unterstützung für den Citrix Ingress Controller

Dieses Beispiel zeigt, wie eine ConfigMap erstellt und die ConfigMap auf den Citrix Ingress Controller angewendet wird. Es zeigt auch, wie Sie die ConfigMap erneut anwenden, nachdem Sie Änderungen vorgenommen haben. Sie können die Änderungen auch optional löschen.

Gehen Sie wie folgt vor, um die ConfigMap-Unterstützung für den Citrix Ingress Controller zu konfigurieren.

  1. Erstellen Sie eine YAML-Datei cic-configmap.yaml mit den erforderlichen Schlüssel-Wert-Paaren in der 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. Stellen Sie cic-configmap.yaml mit dem folgenden Befehl bereit.

    kubectl create -f cic-configmap.yaml
    
  3. Bearbeiten Sie die Datei cic.yaml für die Bereitstellung des Citrix Ingress Controller als eigenständigen Pod und geben Sie Folgendes an:

    Args:
        - --configmap
            default/cic-configmap
    

    Hinweis:

    Es ist zwingend erforderlich, den Namespace anzugeben. Wenn der Namespace nicht angegeben ist, wird ConfigMap nicht berücksichtigt.

    Im Folgenden finden Sie eine YAML-Beispieldatei für die Bereitstellung des Citrix Ingress Controller mit der ConfigMap-Konfiguration. Die vollständige YAML-Datei finden Sie unter 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. Stellen Sie den Citrix Ingress Controller als eigenständigen Pod bereit, indem Sie die YAML anwenden.

    kubectl apply -f cic.yaml
    
  5. Wenn Sie den Wert einer Umgebungsvariablen ändern möchten, bearbeiten Sie die Werte in der ConfigMap. In diesem Beispiel wird der Wert von NS_HTTP2_SERVER_SIDE in “OFF” geändert.

    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. Wenden Sie die ConfigMap mit dem folgenden Befehl erneut an.

    kubectl apply -f cic-configmap.yaml
    
  7. (Optional) Wenn Sie die ConfigMap löschen müssen, verwenden Sie den folgenden Befehl.

    kubectl delete -f cic-configmap.yaml
    

    Wenn Sie die ConfigMap löschen, fällt die Konfiguration der Umgebungsvariablen gemäß der folgenden Rangfolge zurück: ConfigMap-Konfiguration > Umgebungsvariablenkonfiguration > Standard

(Optional) Falls Sie alle Schlüssel in einer ConfigMap als Umgebungsvariablen im Citrix Ingress Controller definieren möchten, verwenden Sie Folgendes in der YAML-Datei für die Citrix Ingress Controller-Bereitstellung.

    envFrom:
            - configMapRef: 
              name: cic-configmap
ConfigMap-Unterstützung für den Citrix Ingress Controller