Citrix ADC ingress controller

Citrix ADCでHTTP、TCP、またはSSLプロファイルを構成する

Citrix ADCアプライアンスのHTTP、TCP、SSLなどの構成は、 HTTPプロファイル、 [TCPプロファイル](https://docs.citrix.com/ja-jp/citrix-adc/13/system/tcp-configurations.html)、 [SSLプロファイルなどの個々のエンティティをそれぞれ使用して指定できます](https://docs.citrix.com/ja-jp/citrix-adc/13/ssl/ssl-profiles.html) 。プロファイルは、個々のプロトコルに関する設定の集まりです。たとえば、HTTP プロファイルは HTTP 設定の集まりです。設定が簡単で柔軟性があります。各エンティティに設定を構成する代わりに、プロファイル内で設定を構成し、その設定が適用されるすべてのエンティティにプロファイルをバインドできます。

Citrix ingress controller を使用すると、プロファイルを使用してイングレスCitrix ADCでHTTP、TCP、またはSSL関連の構成を構成できます。

Kubernetes環境でのCitrix ADC構成を理解する

Kubernetes 環境では、Ingress Citrix ADC は外部トラフィックのフロントエンドとしてコンテンツスイッチング(CS) 仮想サーバーを使用します。つまり、クライアントから要求を受け取るのはエンティティです。要求を処理した後、CS 仮想サーバーは要求データを負荷分散 (LB) エンティティに渡します。LB 仮想サーバーと関連付けられたサービスグループは、リクエストデータを処理し、適切なアプリ (マイクロサービス) に転送します。

クライアントからトラフィックを受信するエンティティ(図でClient Planeとして強調表示)のfront end configurationと、Citrix ADCからKubernetesのマイクロサービスにトラフィックを転送するエンティティ( 図でServer Planeとして強調表示) のback end configurationは別個にする必要があります。

Citrix ADC構成

Citrix ingress controller は、要件に応じてフロントエンドとバックエンドの構成に個別のスマートアノテーションを提供します。

HTTP プロファイル

HTTP プロファイルは HTTP 設定の集まりです。デフォルトの HTTP プロファイル(nshttp_default_profile)は、デフォルトですべてのサービスと仮想サーバにグローバルに適用される HTTP 設定を設定するために設定されます。

Citrix ingress controller は、HTTP プロファイルに対して次の 2 つのスマートアノテーションを提供します。これらの注釈を使用して、Citrix ADC の HTTP 設定を定義できます。これらの注釈を含むイングレスを展開すると、Citrix ingress controller は、Citrix ADCで構成されたデフォルトのHTTPプロファイル(nshttp_default_profile)から派生したHTTPプロファイルを作成します。次に、注釈で指定したパラメーターを新しいHTTPプロファイルに適用し、そのプロファイルをCitrix ADCに適用します。

スマートアノテーション 説明 サンプル
ingress.citrix.com/frontend-httpprofile このアノテーションを使用して、フロントエンド HTTP プロファイル (クライアントプレーン) を作成します。 ingress.citrix.com/frontend-httpprofile: '{"dropinvalreqs":"enabled", "websocket" : "enabled"}'
ingress.citrix.com/backend-httpprofile このアノテーションを使用して、バックエンド HTTP プロファイル (Server Plane) を作成します。 ingress.citrix.com/backend-httpprofile: '{"app-1": {"dropinvalreqs":"enabled", "websocket" : "enabled"}}'
  注: Citrix ADCでHTTP関連のグローバルパラメータを手動で有効にしてください。 たとえば、バックエンド(サーバープレーン)でHTTP2を使用するには、Citrix ADCでHTTP2Serversideグローバルパラメータを有効にできることを確認してください。詳細については、 HTTP2 の設定を参照してください  

TCP プロファイル

TCP プロファイルは TCP 設定の集まりです。デフォルトの TCP プロファイル(nstcp_default_profile)は、デフォルトですべてのサービスと仮想サーバにグローバルに適用される TCP 設定を設定するために設定されます。

Citrix ingress controller は、TCP プロファイルに対して次の 2 つのスマートアノテーションを提供します。これらの注釈を使用して、Citrix ADC の TCP 設定を定義できます。これらの注釈を含むイングレスを展開すると、Citrix ingress controller は、Citrix ADCで構成されたデフォルトのTCPプロファイル(nstcp_default_profile)から派生したTCPプロファイルを作成します。次に、注釈で指定したパラメーターを新しいTCPプロファイルに適用し、そのプロファイルをCitrix ADCに適用します。

スマートアノテーション 説明 サンプル
ingress.citrix.com/frontend-tcpprofile このアノテーションを使用して、フロントエンド TCP プロファイル (クライアントプレーン) を作成します。 ingress.citrix.com/frontend-tcpprofile: '{"ws":"enabled", "sack" : "enabled"}'
ingress.citrix.com/backend-tcpprofile このアノテーションを使用して、バックエンド TCP プロファイル (サーバープレーン) を作成します。 ingress.citrix.com/backend-tcpprofile: '{"citrix-svc":{"ws":"enabled", "sack" : "enabled"}}'

SSL プロファイル

SSL プロファイルは 、SSL エンティティの設定の集まりです。設定が簡単で柔軟性があります。各エンティティに設定を構成する代わりに、プロファイル内で設定を構成し、その設定が適用されるすべてのエンティティにプロファイルをバインドできます。

前提条件

Citrix ADCでは、デフォルトでは、Ingress Citrix ADCではSSLプロファイルが有効になっていません。Citrix ADCでSSLプロファイルを手動で有効にしてください。SSLプロファイルを有効にすると、Citrix ADC 既存のSSL関連設定がすべて上書きされます。SSLプロファイルの詳細については、「 SSLプロファイル」を参照してください。

SSL プロファイルは次の 2 つのカテゴリに分類されます。

  • フロントエンドプロファイル:フロントエンドエンティティに適用可能なパラメータを含みます。つまり、クライアントからリクエストを受け取るエンティティに適用されます。
  • バックエンドプロファイル:バックエンドエンティティに適用可能なパラメータを含みます。つまり、クライアント要求をサーバーに送信するエンティティに適用されます。

Citrix ADCでSSLプロファイルを有効にすると、デフォルトのフロントエンドプロファイル(ns_default_ssl_profile_frontend)がSSL仮想サーバーに適用され、デフォルトのバックエンドプロファイル(ns_default_ssl_profile_backend)がCitrix ADC上のサービスまたはサービスグループに適用されます。

Citrix ingress controller は、SSL プロファイルに対して次の 2 つのスマートアノテーションを提供します。これらのアノテーションを使用して、要件に基づいてデフォルトのフロントエンドプロファイル (ns_default_ssl_profile_frontend) とバックエンドプロファイル (ns_default_ssl_profile_backend) をカスタマイズできます。

スマートアノテーション 説明 サンプル
ingress.citrix.com/frontend-sslprofile このアノテーションを使用して、フロントエンド SSL プロファイル (クライアントプレーン) を作成します。フロントエンド SSL プロファイルが必要となるのは、クライアントプレーンで TLS を有効にした場合だけです。 ingress.citrix.com/frontend-sslprofile: '{"hsts":"enabled", "tls12" : "enabled"}'
ingress.citrix.com/backend-sslprofile このアノテーションを使用して、バックエンド SSL プロファイル (Server Plane) を作成します。SSL バックエンドプロファイルは、バックエンドに ingress.citrix.com/secure-backend アノテーションを使用する場合にのみ必要です。 ingress.citrix.com/backend-sslprofile: '{"citrix-svc":{"hsts":"enabled", "tls1" : "enabled"}}'

重要: SSL プロファイルでは、SSL 証明書を設定できません。

アノテーションを使用したフロントエンドプロファイル設定

HTTP、TCP、および SSL フロントエンドプロファイルは、クライアント側のコンテンツスイッチング仮想サーバーまたは SSL 仮想サーバーにアタッチされます。フロントエンドで同じfrontend-ipを使用し、 同じコンテンツスイッチング仮想サーバーを使用するイングレスが複数存在することがあるため、フロントエンド IP アドレスを共有する複数の Ingresse で指定されているフロントエンドプロファイルアノテーションによって競合が発生する可能性があります。

HTTP、TCP、および SSL のフロントエンドプロファイルアノテーションに関するガイドラインを次に示します。

  • 同じフロントエンド IP アドレスを持つすべての Ingressでは、すべてのIngressでフロントエンドプロファイルに同じ値を指定することを推奨します。
  • フロントエンド IP アドレスを共有する複数のイングレスがある場合、次の例に示すように、フロントエンド IP アノテーションを指定できる空のルール (フロントエンドイングレスと呼ばれる) を使用して、フロントエンド IP アドレスごとに個別のイングレスを作成することもできます。Ingress 定義ごとにフロントエンドプロファイルアノテーションを指定する必要はありません。

    • HTTP タイプの仮想サーバーのフロントエンド Ingress を作成するには、次の例を参照してください。

       #Sample ingress manifest for the front-end configuration for an HTTP virtual server
       #The values for the parameters are for demonstration purpose only.
      
              
       apiVersion: networking.k8s.io/v1
       kind: Ingress
       metadata:
         name: frontend-ingress
         annotations:
         # /* The CS virtual server is derived from the combination of
       insecure-port/secure-port, frontend-ip, and
       secure-service-type/insecure-service-type annotations. */
           ingress.citrix.com/insecure-port: "80"
           ingress.citrix.com/frontend-ip: "x.x.x.x"
           ingress.citrix.com/frontend-httpprofile:'{"dropinvalreqs":"enabled", "markconnreqInval" : "enabled"}'
           ingress.citrix.com/frontend-tcpprofile: '{"ws":"enabled", "sack" :
       "enabled"}'
       spec:
         rules:
          # Empty rule
         - host:
      
    • To create a front-end ingress for SSL type service, see the following example:

       #Sample ingress manifest for the front-end configuration for an SSL virtual server
       #The values for the parameters are for demonstration purpose only.
              
              
       apiVersion: networking.k8s.io/v1
       kind: Ingress
       metadata:
         name: frontend-ingress
         annotations:
         #The CS virtual server is derived from the combination of
         #insecure-port/secure-port, frontend-ip, and
         #secure-service-type/insecure-service-type annotations.
           ingress.citrix.com/insecure-port: "80"
           ingress.citrix.com/secure-port: "443" 
           ingress.citrix.com/frontend-ip: "x.x.x.x"
           ingress.citrix.com/frontend-sslprofile:
       '{"tls13":"enabled", "hsts" : "enabled"}'
           ingress.citrix.com/frontend-tcpprofile: '{"ws":"enabled", "sack" :
       "enabled"}'
       spec:
         rules:
         - host:
           #Presense of tls is considered as a secure service
         tls:
         - hosts:
      
  • 複数の IngressS で同じフロントエンドプロファイルアノテーションに異なる値がある場合、次の順序でプロファイルが仮想サーバーにバインドされます。

    • Ingress 定義に、事前構成されたプロファイルを持つフロントエンドアノテーションがある場合、その定義は仮想サーバーにバインドされます。
    • 同じフロントエンド IP アドレスの異なる入力からのすべての (キー、値) をマージし、その結果の (キー、値) をフロントエンドプロファイルのスマートアノテーションに使用します。
    • 入力が異なると値が異なるために同じキーで競合が発生した場合、値はランダムに選択され、他の値は無視されます。矛盾する値を持つことは避けなければなりません。
  • フロントエンド IP アドレスを共有するいずれの Ingress にもフロントエンドプロファイルアノテーションが指定されていない場合、ConfigMap のグローバル値、つまり、FRONTEND_HTTP_PROFILEFRONTEND_TCP_PROFILEまたはFRONTEND_SSL_PROFILEがそれぞれ HTTP、TCP、および SSL フロントエンドプロファイルに使用されます。

ConfigMap 変数を使用したグローバルフロントエンドプロファイル設定

ConfigMap 変数は、フロントエンド IP アドレスを共有する 1 つ以上の Ingresse でフロントエンドプロファイルのスマートアノテーションによって上書きされない場合、フロントエンドプロファイルに使用されます。すべての Ingreses に対して任意のフロントエンドプロファイルを使用して機能を有効または無効にする必要がある場合は、HTTP、TCP 、および SSL プロファイルに、FRONTEND_HTTP_PROFILEFRONTEND_TCP_PROFILEまたはFRONTEND_SSL_PROFILEをそれぞれ使用できます。たとえば、すべての SSL Ingress に対して TLS 1.3 を有効にする場合、各イングレス定義でスマートアノテーションを使用する代わりに、FRONTEND_SSL_PROFILEを使用してこの値を設定できます。Citrix ingress controller で ConfigMap を使用する方法については、ConfigMap のドキュメントを参照してください

FRONTEND_HTTP_PROFILE を使用した設定

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

Citrix ADCで既存のプロファイルを使用するか、組み込みのHTTPプロファイルを使用する。

apiVersion: v1
kind: ConfigMap
metadata:
  name: cic-configmap
  labels:
    app: citrix-ingress-controller
data:
  FRONTEND_HTTP_PROFILE: |
    preconfigured: my_http_profile
<!--NeedCopy-->

この例では、 my_http_profile はCitrix ADC 既存のHTTPプロファイルです。

または、プロファイルパラメータを次のように指定して設定することもできます。使用可能なすべてのキー値については、 HTTP プロファイル NITRO のドキュメントを参照してください

apiVersion: v1
kind: ConfigMap
metadata:
  name: cic-configmap
  labels:
    app: citrix-ingress-controller
data:
  FRONTEND_HTTP_PROFILE: |
    config:
      dropinvalreqs: 'ENABLED'
      websocket: 'ENABLED'
<!--NeedCopy-->

FRONTEND_TCP_PROFILE

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

Citrix ADCで既存のプロファイルを使用するか、組み込みのTCPプロファイルを使用するには:

apiVersion: v1
kind: ConfigMap
metadata:
  name: cic-configmap
  labels:
    app: citrix-ingress-controller
data:
  FRONTEND_TCP_PROFILE: |
    preconfigured: my_tcp_profile
<!--NeedCopy-->

この例では、 my_tcp_profile はCitrix ADC 既存のTCPプロファイルです。

または、プロファイルパラメータを次のように設定することもできます。使用可能なすべてのキー値については、 Citrix ADC TCPプロファイルNITRO のドキュメントを参照してください

apiVersion: v1
kind: ConfigMap
metadata:
  name: cic-configmap
  labels:
    app: citrix-ingress-controller
data:
  FRONTEND_TCP_PROFILE: |
    config:
      sack: 'ENABLED'
      nagle: 'ENABLED'

<!--NeedCopy-->

FRONTEND_SSL_PROFILE を使用した設定

FRONTEND_SSL_PROFILE変数は、Ingress 定義の ingress.citrix.com/frontend-sslprofile Smart アノテーションによってオーバーライドされない限り、フロントエンド仮想サーバー (クライアント側) の SSL オプションの設定に使用されます。

注: SSLプロファイルを正しく機能させるには、 set ssl parameter -defaultProfile ENABLED コマンドを使用してCitrix ADCでデフォルトプロファイルを有効にする必要があります。デフォルトプロファイルを有効にした後で、Citrix ingress controller が再起動されていることを確認します。 Citrix ADC CPX がイングレスデバイスとして使用されている場合、デフォルトのプロファイルは自動的に有効になります。SSL デフォルトプロファイルの詳細については、 SSL プロファイルのドキュメントを参照してください

Citrix ADCで既存のプロファイルを使用するか、組み込みのSSLプロファイルを使用するには、

apiVersion: v1
kind: ConfigMap
metadata:
  name: cic-configmap
  labels:
    app: citrix-ingress-controller
data:
  FRONTEND_SSL_PROFILE: |
    preconfigured: my_ssl_profile
<!--NeedCopy-->

この例では、 my_ssl_profile はCitrix ADC 既存のSSLプロファイルです。

注:

FRONTEND_SSL_PROFILE.preconfigured変数を使用したデフォルトのフロントエンドプロファイル (ns_default_ssl_profile_frontend) はサポートされていません。

または、次の例に示すようにプロファイルパラメータを設定することもできます。使用可能なすべてのキー値については、 SSL プロファイル NITRO のドキュメントを参照してください

apiVersion: v1
kind: ConfigMap
metadata:
  name: cic-configmap
  labels:
    app: citrix-ingress-controller
data:
  FRONTEND_SSL_PROFILE: |
    config:
      tls13: 'ENABLED'
      hsts: 'ENABLED'
<!--NeedCopy-->

次の例は、SSL 暗号グループを SSL プロファイルにバインドする方法を示しています。順序はリストで指定されたとおりになり、優先順位が高いほどリストの先頭に表示されます。このフィールドでは、Citrix ADCで利用可能な任意のSSL暗号、またはユーザーが作成した暗号グループを使用できます。Citrix ADCで使用できる暗号のリストについては、「CitrixADCの暗号」を参照してください。

apiVersion: v1
kind: ConfigMap
metadata:
  name: cic-configmap
  labels:
    app: citrix-ingress-controller
data:
  FRONTEND_SSL_PROFILE: |
    config:
      tls13: 'ENABLED'
      ciphers:
      - TLS1.3-AES256-GCM-SHA384
      - TLS1.3-CHACHA20-POLY1305-SHA256
<!--NeedCopy-->

バックエンド構成

サービスの詳細、spec:rules:hostspec:backendエントリなどを含む Ingress 定義は、すべてバックエンド設定と見なされます。

TLS 設定なしのバックエンド入力マニフェストの例


#The values for the parameters are for demonstration purpose only.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
  # /* The CS virtual server is derived from the combination of insecure-port/secure-port, frontend-ip, and secure-service-type/insecure-service-type annotations. */
    ingress.citrix.com/backend-httpprofile: '{"apache":{"markhttp09inval": "disabled"}}'
    ingress.citrix.com/backend-tcpprofile: '{"apache":{"sack":"enabled"}}'
    ingress.citrix.com/frontend-ip: 'VIP_IP'
    ingress.citrix.com/insecure-port: "80"
  name: apache-ingress
spec:
  rules:
  - host: www.apachetest.com
    http:
      paths:
      - backend:
          service:
            name: apache
            port:
              number: 80
        path: /
        pathType: Prefix
<!--NeedCopy-->

TLS 設定を使用したバックエンド入力マニフェストの例


#The values for the parameters are for demonstration purpose only.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
  # /* The CS virtual server is derived from the combination of insecure-port/secure-port, frontend-ip, and secure-service-type/insecure-service-type annotations. */
    ingress.citrix.com/backend-httpprofile: '{"hotdrink":{"markhttp09inval": "disabled"}}'
    ingress.citrix.com/backend-sslprofile: '{"hotdrink":{"snienable": "enabled"}}'
    ingress.citrix.com/backend-tcpprofile: '{"hotdrink":{"sack":"enabled"}}'
    ingress.citrix.com/frontend-ip: 'VIP_IP'
    ingress.citrix.com/secure-backend: '{"hotdrink":"true"}'
    ingress.citrix.com/secure-port: "443"
  name: hotdrink-ingress
spec:
  rules:
  - host: hotdrinks.beverages.com
    http:
      paths:
      - backend:
          service:
            name: hotdrink
            port:
              number: 443
        path: /
        pathType: Prefix
  tls:
  - secretName: hotdrink.secret
<!--NeedCopy-->

Ingress Citrix ADCで組み込みまたは既存のユーザー定義プロファイルを使用する

個々のスマートアノテーションを使用して、Ingress Citrix ADC上の組み込みプロファイルまたは既存のユーザー定義プロファイルを要件に基づいてフロントエンドおよびバックエンド構成用に構成できます。組み込みプロファイルの詳細については、「組み込み TCP プロファイル」および「 組み込み HTTP プロファイル」を参照してください。

フロントエンド構成では、Ingress Citrix ADC の組み込みプロファイルまたは既存のユーザー定義プロファイルの名前を指定できます。イングレスアノテーションの例を次に示します。

ingress.citrix.com/frontend-httpprofile: "http_preconf_profile1"

ここで、「http_preconf_profile1」はイングレスCitrix ADCに存在するプロファイルです。

バックエンド構成では、Ingress Citrix ADC の組み込みプロファイルまたは既存のプロファイルの名前とバックエンドサービス名を指定する必要があります。イングレスアノテーションの例を次に示します。

ingress.citrix.com/backend-httpprofile: '{"citrix-svc": "http_preconf_profile1"}'

ここで、「http_preconf_profile1」はIngress Citrix ADCに存在するプロファイルで、 citrix-svc はバックエンドサービス名です。

HTTP プロファイルのサンプル

ingress.citrix.com/frontend-httpprofile: "http_preconf_profile"
ingress.citrix.com/backend-httpprofile: '{"citrix-svc": "http_preconf_profile"}'

TCP プロファイルのサンプル

ingress.citrix.com/frontend-tcpprofile: "tcp_preconf_profile"
ingress.citrix.com/backend-tcpprofile: '{"citrix-svc":"tcp_preconf_profile"}'

SSL プロファイルのサンプル

ingress.citrix.com/frontend-sslprofile: "ssl_preconf_profile"
ingress.citrix.com/backend-sslprofile: '{"citrix-svc":"ssl_preconf_profile"}'

HTTP、SSL、および TCP プロファイルの適用例

この例では、HTTP、SSL、または TCP プロファイルを適用する方法を示します。

SSL、TCP、および HTTP プロファイルを作成し、定義された Ingress リソースにバインドするには、次の手順を実行します。

  1. 必要なプロファイルを使用して、フロントエンドの Ingress リソースを定義します。この Ingress リソースでは、バックエンドと TLS は定義されていません。

    サンプルの YAML (ingress1.yaml) は以下のように提供されています。

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: ingress-vpx1
        annotations:
          kubernetes.io/ingress.class: "vpx"
          ingress.citrix.com/insecure-termination: "allow"
          ingress.citrix.com/frontend-ip: "10.221.36.190"
          ingress.citrix.com/frontend-tcpprofile: '{"ws":"disabled", "sack" : "disabled"}'
          ingress.citrix.com/frontend-httpprofile: '{"dropinvalreqs":"enabled", "markconnreqInval" : "enabled"}'
          ingress.citrix.com/frontend-sslprofile: '{"hsts":"enabled", "tls13" : "enabled"}'
      spec:
        tls:
        - hosts:
        rules:
        - host:
      <!--NeedCopy-->
    
  2. フロントエンド Ingress リソースをデプロイします。

    kubectl 作成-f ingress1.yaml

  3. 同じフロントエンド IP アドレスと TLS を持つセカンダリ入力リソースと、負荷分散リソース定義を作成するバックエンドを定義したバックエンドを定義します。

    サンプルの YAML (ingress2.yaml) は次のように提供されています。

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: ingress-vpx2
        annotations:
        kubernetes.io/ingress.class: "vpx"
        ingress.citrix.com/insecure-termination: "allow"
        ingress.citrix.com/frontend-ip: "10.221.36.190"
      spec:
        tls:
        - secretName: <hotdrink-secret>
        rules:
        - host:  hotdrink.beverages.com
          http:
            paths:
            - path:
              backend:
                serviceName: frontend-hotdrinks
                servicePort: 80
      <!--NeedCopy-->
    
  4. バックエンド Ingress リソースをデプロイします。

     kubectl create -f ingress2.yaml
    
  5. YAML が適用されると、対応するエンティティ、プロファイル、および Ingress リソースが作成され、Ingress リソースにバインドされます。

    # show cs vserver <k8s150-10.221.36.190_443_ssl>
        
      k8s150-10.221.36.190_443_ssl (10.221.36.190:443) - SSL Type: CONTENT 
      State: UP
      Last state change was at Thu Apr 22 20:14:44 2021
      Time since last state change: 0 days, 00:10:56.850
      Client Idle Timeout: 180 sec
      Down state flush: ENABLED
      Disable Primary Vserver On Down : DISABLED
      Comment: uid=QEYQI2LDW5WR4A6P3NSZ37XICKOJKV4HPEM2H4PSK4HWA3JQWCLQ====
      TCP profile name: k8s150-10.221.36.190_443_ssl
      HTTP profile name: k8s150-10.221.36.190_443_ssl
      Appflow logging: ENABLED
      State Update: DISABLED
      Default:   Content Precedence: RULE
      Vserver IP and Port insertion: OFF 
      L2Conn: OFF Case Sensitivity: ON
      Authentication: OFF
      401 Based Authentication: OFF
      Push: DISABLED Push VServer: 
      Push Label Rule: none
      Persistence: NONE
      Listen Policy: NONE
      IcmpResponse: PASSIVE
      RHIstate:  PASSIVE
      Traffic Domain: 0
    
      1)  Content-Switching Policy: k8s150-ingress-vpx1_tier-2-adc_443_k8s150-frontend-hotdrinks_tier-2-adc_80_svc    Priority: 200000004   Hits: 0
      Done
    

例:SNI 証明書を SSL 仮想サーバーに追加する

この例は、1 つの SNI 証明書を追加する方法を示しています。

注:

SSLプロファイルを正しく機能させるには、 set ssl parameter -defaultProfile ENABLED コマンドを使用してCitrix ADCでデフォルトプロファイルを有効にする必要があります。デフォルトプロファイルを有効にした後で、Citrix ingress controller が再起動されていることを確認します。SSL デフォルトプロファイルの詳細については、 ドキュメントを参照してください

  1. 必要なプロファイルを使用して、フロントエンドの Ingress リソースを定義します。この Ingress リソースでは、バックエンドと TLS は定義されていません。

    サンプルの YAML (ingress1.yaml) は次のように提供されています。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: ingress-vpx1
      annotations:
       kubernetes.io/ingress.class: "vpx"
       ingress.citrix.com/insecure-termination: "allow"
       ingress.citrix.com/frontend-ip: "10.221.36.190"
       ingress.citrix.com/frontend-tcpprofile: '{"ws":"disabled", "sack" : "disabled"}'
       ingress.citrix.com/frontend-httpprofile: '{"dropinvalreqs":"enabled", "markconnreqInval" : "enabled"}'
       ingress.citrix.com/frontend-sslprofile: '{"snienable": "enabled", "hsts":"enabled", "tls13" : "enabled"}'
    spec:
      tls:
      - hosts:
      rules:
      - host:
    
    <!--NeedCopy-->
    
  2. フロントエンド Ingress リソースをデプロイします。

    kubectl create -f ingress1.yaml
    
  3. バックエンドと SNI 証明書を定義する同じフロントエンド IP アドレスを使用して、セカンダリ Ingress リソースを定義します。hosts を指定すると、シークレット名として指定された certkey が SNI 証明書として追加されます。

    サンプルの YAML (ingress2.yaml) は次のように提供されています。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: ingress-vpx2  
      annotations:
       kubernetes.io/ingress.class: "vpx"
       ingress.citrix.com/insecure-termination: "allow"
       ingress.citrix.com/frontend-ip: "10.221.36.190"
    spec:
      tls:
      - hosts:
          - hotdrink.beverages.com
        secretName: hotdrink-secret
      rules:
      - host: hotdrink.beverages.com
        http:
          paths:
          - path: /
            backend:
              serviceName: web
              servicePort: 80
    <!--NeedCopy-->
    
  4. セカンダリ Ingress リソースをデプロイします。

     kubectl create -f ingress2.yaml
    

    複数の SNI 証明書をフロントエンド VIP にバインドする必要がある場合、以下に YAML ファイルの例を示します。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: ingress-vpx-frontend
      annotations:
      kubernetes.io/ingress.class: "vpx"
      ingress.citrix.com/insecure-termination: "allow"
      ingress.citrix.com/frontend-ip: "10.221.36.190"
    spec:
      tls:
      - hosts:
          - hotdrink.beverages.com
        secretName: hotdrink-secret
      - hosts:
          - frontend.agiledevelopers.com
        secretName: <frontend-secret>
      rules:
      - host: hotdrink.beverages.com
        http:
          paths:
          - path: /
            backend:
              serviceName: web
              servicePort: 80
      - host: frontend.agiledevelopers.com
        http:
          paths:
          - path: /
            backend:
              serviceName: frontend-developers
              servicePort: 80
    

例:SSL 暗号グループのバインド

この例では、SSL 暗号グループをバインドする方法を示します。

注:

SSLプロファイルを正しく機能させるには、 set ssl parameter -defaultProfile ENABLED コマンドを使用してCitrix ADCでデフォルトプロファイルを有効にする必要があります。デフォルトプロファイルを有効にした後で、Citrix ingress controller が再起動されていることを確認します。

Citrix イングレスコントローラーを展開する前に、コマンドset ssl parameter -defaultProfile ENABLEDを使用してCitrix ADCでデフォルトのSSLプロファイルを設定します。Citrix ingress controller をすでに展開している場合は、再展開します。SSL デフォルトプロファイルの詳細については、 ドキュメントを参照してください

Citrix ADCアプライアンスでサポートされている暗号について詳しくは、「 Citrix ADCアプライアンスで利用可能な暗号」を参照してください。

暗号のセキュリティ保護については、「 暗号の保護」を参照してください。

サンプル YAML (cat frontend_ingress.yaml) は次のように提供されています。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-vpx
  annotations:
   kubernetes.io/ingress.class: "citrix"
   ingress.citrix.com/insecure-termination: "allow"
   ingress.citrix.com/frontend-ip: "10.221.36.190"
   ingress.citrix.com/frontend-tcpprofile: '{"ws":"disabled", "sack" : "disabled"}'
   ingress.citrix.com/frontend-httpprofile: '{"dropinvalreqs":"enabled", "markconnreqInval" : "enabled"}'
   ingress.citrix.com/frontend-sslprofile: '{"snienable": "enabled", "hsts":"enabled", "tls13" : "enabled", "ciphers" : [{"ciphername": "test", "cipherpriority" :"1"}]}'
spec:
  tls:
  - hosts:
  rules:
   - host:
<!--NeedCopy-->