Citrix ADC ingress controller

Citrix Ingress Controller に対する ConfigMap のサポート

ConfigMap API リソースは、Pod で使用したり、コントローラーなどのシステムコンポーネントの設定データを保存したりできる設定データのキーと値のペアを保持します。

ConfigMaps を使用すると、Pod から設定を分離し、ワークロードを移植することができます。ConfigMaps を使用すると、ワークロード構成を簡単に変更および管理でき、構成データを Pod 仕様にハードコードする必要性を軽減できます。

Citrix Ingress Controller は、 Citrix Ingress Controller 展開で説明されている構成コマンドライン引数と環境変数をサポートしています。ただし、Citrix Ingress Controller ポッドを再起動しない限り、実行時にこれらの構成を更新することはできません。ConfigMapサポートでは、Citrix Ingress Controller ポッドを実行したまま構成を自動的に更新できます。更新後に Pod を再起動する必要はありません。

Citrix Ingress Controller でサポートされる環境変数

Citrix Ingress Controller 次の環境変数の値は、ConfigMap で指定できます。

  • LOGLEVEL:Citrix Ingress Controller によって生成されるログ(デバッグ、情報、クリティカルなど)を制御するログレベルを指定します。デフォルト値はdebugです。

  • NS_HTTP2_SERVER_SIDE:Citrix ADC サービスグループ構成のHTTP2を、オンまたはオフの可能な値で有効にします。

  • NS_PROTOCOL: ADC セッションを確立するためのプロトコル (HTTP/HTTPS) を指定します。デフォルト値はhttpです。

  • NS_PORT: セッションを確立するポートを指定します。デフォルト値は80です。

  • NS_COOKIE_VERSION: パーシステンスクッキーのバージョン (0 または 1) を指定します。デフォルト値は0です。

  • NS_DNS_NAMESERVER:Citrix ADC VPXにDNSネームサーバーを追加できるようにします。

  • POD_IPS_FOR_SERVICEGROUP_MEMBERS: LoadBalancerまたはNodePortタイプのサービスを外部Tier-1 Citrix ADCを構成する間、NodeIPおよびNodePortの代わりに、 ポッドとポートのIPアドレスをサービスグループメンバーとして追加することを指定します。

  • IGNORE_NODE_EXTERNAL_IP: LoadBalancerまたはNodePort タイプのサービスまたは外部Tier-1 Citrix ADCでNodeIPを構成するときに、外部IPアドレスを無視してnodeIPの内部IPアドレスを追加するように指定します。

  • FRONTEND_HTTP_PROFILE: イングレス定義でingress.citrix.com/frontend-httpprofileスマートアノテーションによってオーバーライドされない限り、フロントエンド仮想サーバー (クライアントプレーン) の HTTP オプションを設定します。

  • FRONTEND_TCP_PROFILE: イングレス定義でingress.citrix.com/frontend-tcpprofileスマートアノテーションによってオーバーライドされない限り、フロントエンド仮想サーバー (クライアント側) の TCP オプションを設定します。

  • FRONTEND_SSL_PROFILE: イングレス定義でingress.citrix.com/frontend-sslprofileスマートアノテーションによってオーバーライドされない限り、フロントエンド仮想サーバー (クライアント側) の SSL オプションを設定します。

  • JSONLOG: JSON 形式のログメッセージが必要な場合は、この引数を true に設定します。

  • NS_ADNS_IPS: Citrix ADC を ADNS サーバーとして構成できるようにします。

プロファイル環境変数(フロントエンド_HTTP_PROFILE、FRONTEND_TCP_PROFILE、およびフロントエンド_SSL_PROFILE)について詳しくは、「 Citrix ADC での HTTP、TCP、または SSL プロファイルの構成」を参照してください。

注:

これは ConfigMap サポートの初期バージョンで、現在サポートされているパラメーターはごくわずかです。以前は、これらのパラメータはNS_HTTP2_SERVER_SIDEパラメータ以外の環境変数を使用して設定可能でした。

Citrix Ingress Controller に対する ConfigMap サポートの構成

この例では、ConfigMap を作成し、ConfigMap を Citrix Ingress Controller に適用する方法を示します。また、変更後に ConfigMap を再適用する方法も示します。また、必要に応じて変更を削除することもできます。

Citrix Ingress Controller の ConfigMap サポートを構成するには、次の手順を実行します。

  1. ConfigMapに必要なキーと値のペアを含む YAML ファイルcic-configmap.yamlを作成します。

    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. 以下のコマンドを使用して、cic-configmap.yamlをデプロイします。

    kubectl create -f cic-configmap.yaml
    
  3. Citrix Ingress Controllerをスタンドアロンポッドとしてデプロイするためのcic.yamlファイルを編集し、以下を指定します。

    Args:
        - --configmap
            default/cic-configmap
    

    注:

    名前空間の指定は必須です。名前空間が指定されていない場合、ConfigMap は考慮されません。

    ConfigMap 構成で Citrix Ingress Controller をデプロイするための YAML ファイルのサンプルを次に示します。完全な YAML ファイルについては、 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. YAML を適用して、Citrix Ingress Controller をスタンドアロンポッドとしてデプロイします。

    kubectl apply -f cic.yaml
    
  5. 環境変数の値を変更する場合は、ConfigMap で値を編集します。この例では、NS_HTTP2_SERVER_SIDE の値が ‘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. 次のコマンドを使用して ConfigMap を再適用します。

    kubectl apply -f cic-configmap.yaml
    
  7. (オプション) ConfigMap を削除する必要がある場合は、次のコマンドを使用します。

    kubectl delete -f cic-configmap.yaml
    

    ConfigMap を削除すると、 ConfigMap 設定 > 環境変数の設定 > デフォルトの優先順位に従って、環境変数の設定がフォールバックします。

(オプション)ConfigMap のすべてのキーを Citrix Ingress コントローラーの環境変数として定義する場合は、Citrix イングレスCitrix Ingress Controller デプロイ YAML ファイルで以下を使用します。

    envFrom:
            - configMapRef: 
              name: cic-configmap
Citrix Ingress Controller に対する ConfigMap のサポート