NetScaler® プロファイルサポート
NetScaler Kubernetes Gateway Controller は、堅牢で一元化された構成を実現するために、プロファイルCRD (SSLプロファイル、HTTPプロファイル、TCPプロファイルを含む) を導入します。これらのプロファイルにより、クラスターオペレーターは、TLS暗号、TCP最適化、HTTPタイムアウトなどの標準化された再利用可能なインフラストラクチャ設定を定義でき、アプリケーション開発者はそれらをルーティング定義に簡単に適用できます。
プロファイルCRDのデプロイ
NetScalerプロファイルYAMLファイル: profiles_crd.yaml。
注:
デプロイYAMLファイルを変更しないようにしてください。
次のコマンドを使用して、CRDをデプロイします:
kubectl apply -f profiles_crd.yaml
例:
root@1:~# kubectl apply -f profiles_crd.yaml
customresourcedefinition.apiextensions.k8s.io/httpprofiles.citrix.com created
customresourcedefinition.apiextensions.k8s.io/tcpprofiles.citrix.com created
customresourcedefinition.apiextensions.k8s.io/sslprofiles.citrix.com created
プロファイル仕様
すべてのプロファイルCRDは、目的のNetScaler構成を定義するために、次の2つのフィールドのいずれかを使用します。これらのフィールドは相互に排他的です:
-
spec.preconfigured -
spec.config
| フィールド | 目的 | NetScalerでのアクション |
|---|---|---|
| spec.preconfigured | NetScalerアプライアンス上の既存のプロファイルを使用します。 | コントローラーはプロファイルを作成しません。提供された文字列値をバインディングのプロファイル名として使用します。 |
| spec.config | プロファイルを定義します。 | コントローラーは、configブロックで指定されたキーと値のペアを使用して、NetScaler上に一意の名前を持つプロファイル(CRDのメタデータに基づく)を作成します。 |
NetScaler Kubernetes Gateway ControllerでのNetScalerプロファイルの追加
NetScalerプロファイル(HTTP、TCP、SSL)を、Kubernetes Gatewayリソースにフロントエンドプロファイルおよびバックエンドプロファイルとして追加できます。
フロントエンドプロファイル
フロントエンドプロファイルは、Gatewayのリスナーに直接設定を適用するために使用されます。たとえば、NetScaler上のフロントエンドコンテンツスイッチング仮想サーバーなどです。これらのプロファイルには、バインディング用の
targetRefセクションを含める必要があります。
単一のフロントエンドプロファイルCRDを複数のGatewayに効率的に適用できます。
例1 すべてのGatewayリスナーに設定されたフロントエンドSSLプロファイル
次の例では、カスタム構成パラメーターを持つ新しいフロントエンドSSLプロファイルを定義し、「my-gateway」リソースのすべてのリスナーまたはコンテンツスイッチング仮想サーバーに適用します。
apiVersion: citrix.com/v1
kind: sslprofile
metadata:
name: frontend-ssl-custom
namespace: production
spec:
targetRef:
- name: my-gateway
namespace: production
kind: Gateway
group: gateway.networking.k8s.io
config:
sslprofiletype: "frontend"
sessreuse: "ENABLED"
zerorttearlydata: "DISABLED"
hsts: "ENABLED"
preload: "YES"
バックエンドプロファイル
バックエンドプロファイルは、Gateway(NetScaler)とバックエンドKubernetesアプリケーション間の接続に影響する設定を構成するために使用されます。たとえば、サービスグループやサーバーなどです。
バックエンドプロファイルには
targetRefを含めることはできません。代わりに、HTTPRouteの標準ExtensionRefフィルタータイプを使用して特定のHTTPRouteルールに直接アタッチされ、ルートごとにきめ細かな制御を可能にします。
例1:HTTPRoute用のバックエンド事前設定済みSSLプロファイル
次の例では、「manual_secure_backend」という名前の既存のNetScalerプロファイルを使用し、
HTTPRoutesによる使用を意図したプロファイルを定義します(targetRefは存在しません)。
apiVersion: citrix.com/v1
kind: sslprofile
metadata:
name: simple-ssl-profile-backend
spec:
# Define the existing profile name
preconfigured: "manual_secure_backend"
例2:バックエンドプロファイルをHTTPRouteに適用する
次のHTTPRouteは、
ExtensionRefフィルターを介して前の例で作成されたバックエンドsslprofileを参照します。
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: my-httproute
spec:
parentRefs:
- name: my-gateway-http
namespace: default
hostnames:
- "example123.com"
rules:
- filters:
- type: ExtensionRef
extensionRef:
group: "citrix.com"
kind: "sslprofile"
name: "simple-ssl-profile-backend" # References the Profile CRD name
matches:
- path:
type: PathPrefix
value: /
backendRefs:
- name: app1-svc
namespace: default
port: 80
NetScalerプロファイルの種類
次のNetScalerプロファイルタイプがサポートされています。
-
HTTPプロファイル
-
TCPプロファイル
-
SSLプロファイル
SSLプロファイル
SSLプロファイルは、SSLエンティティの設定の集合です。設定の容易さと柔軟性を提供します。各アプリケーションで設定を構成する代わりに、プロファイルで設定を構成し、その設定が適用されるすべてのアプリケーションにプロファイルをバインドできます。
SSLプロファイルCRDスキーマ参照は次のとおりです。
| フィールド | タイプ | 説明 | フロントエンドプロファイルに必須 | バックエンドプロファイルに必須 |
|---|---|---|---|---|
| 事前構成済み | 文字列 | config と相互排他的です。使用する NetScaler アプライアンス上に存在する、事前設定済みまたは組み込みの SSL プロファイルの名前。 | いいえ | いいえ |
| 構成 | オブジェクト | preconfigured と相互排他的です。完全なカスタムプロファイル用の NetScaler NITRO API に関連するすべてのパラメーターが含まれます。お客様は、ここで有効な NITRO SSL プロファイルパラメーターを指定できます。SSL プロファイルでサポートされているキーと値のペアについては、SSL プロファイル を参照してください。 | いいえ | いいえ |
| targetRef | オブジェクトの配列 | このプロファイルが適用されるターゲットリソース(通常はGateway)のリスト。このフィールドはFrontend Profilesには必須であり、Backend Profilesには省略する必要があります。 | はい | いいえ |
| gatewayClassName | 文字列 | このSSLプロファイルを適用する必要があるGatewayClassの名前。マルチテナント環境でプロファイルを特定のコントローラーインスタンスにスコープするために使用されます。 |
いいえ | いいえ |
| SSLサイファ | 文字列の配列 | SSLプロファイルにバインドされる暗号のリスト。優先順位はリスト内の順序によって決定され、暗号スイート、事前定義された暗号グループ、またはユーザー作成の暗号グループを含めることができます。 | いいえ | いいえ |
重要
-
事前設定されたSSLプロファイルを使用する場合、NetScalerを介して手動で暗号をバインドする必要があり、
spec.policies.sslciphersは無視されます。 -
組み込みの暗号グループはTier-1およびTier-2 NetScalerでサポートされていますが、ユーザー定義の暗号グループはTier-1 NetScalerでのみサポートされています。
例1:事前設定されたフロントエンドSSLプロファイル
apiVersion: citrix.com/v1
kind: sslprofile
metadata:
name: frontend-ssl-preconfigured
spec:
targetRef:
- name: my-gateway-https2
sectionName: https
preconfigured: "ns_default_ssl_profile_frontend"
例2:カスタムフロントエンドSSLプロファイル
apiVersion: citrix.com/v1
kind: sslprofile
metadata:
name: frontend-ssl-custom
spec:
targetRef:
- name: my-gateway-https # Applying to all csvservers in the Gateway
sslciphers:
- "HIGH"
config:
sslprofiletype: "frontend"
sessreuse: "ENABLED"
sesstimeout: 300
clientauth: "DISABLED"
ssl3: "DISABLED"
tls1: "DISABLED"
tls11: "DISABLED"
includesubdomains: "YES"
maxage: 31536000
preload: "YES"
例3:事前設定されたバックエンドSSLプロファイルと、そのプロファイルを参照するHTTPRoute
apiVersion: citrix.com/v1
kind: sslprofile
metadata:
name: backend-ssl-preconfigured
spec:
preconfigured: "ns_default_ssl_profile_backend"apiVersion: gateway.networking.k8s.io/v1
kind: HTTP Route
metadata:
name: my-httproute
spec:
parentRefs:
- name: my-gateway-https
hostnames:
- "example123.com"
rules:
- filters:
- type: ExtensionRef
extensionRef:
group: "citrix.com"
kind: "sslprofile"
name: "backend-ssl-preconfigured"
matches:
- path:
type: PathPrefix
value: /
backendRefs:
- name: app1-svc
namespace: default
port: 443
例4:カスタムバックエンドSSLプロファイルと、そのプロファイルを参照するHTTPRoute
apiVersion: citrix.com/v1
kind: sslprofile
metadata:
name: backend-ssl-custom
spec:
sslciphers:
- "HIGH"
config:
sslprofiletype: "backend"
sessreuse: 'ENABLED'
sesstimeout: 300
serverauth: 'ENABLED'
insertionencoding: 'Unicode'
ssl3: 'ENABLED'
tls1: 'DISABLED'
tls12: 'ENABLED'apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: my-httproute2
spec:
parentRefs:
- name: my-gateway-https2
hostnames:
- "example123.com"
rules:
- filters:
- type: ExtensionRef
extensionRef:
group: "citrix.com"
kind: "sslprofile"
name: "backend-ssl-custom"
matches:
- path:
type: PathPrefix
value: /
backendRefs:
- name: app1-svc
port: 443
TCPプロファイル
TCPプロファイルは、トランスポート層の動作を最適化するために使用されるTCP設定の集合体です。このプロファイルを使用すると、TCP Fast OpenやHyStartなどの高度な設定を適用して、接続のパフォーマンスと効率を向上させることができます。
TCPプロファイルCRDスキーマ参照
| フィールド | タイプ | 説明 | フロントエンドプロファイルに必須 | バックエンドプロファイルに必須 |
|---|---|---|---|---|
| 事前設定済み | 文字列 | config とは相互排他的です。使用する NetScaler アプライアンスに存在する、事前設定済みまたは組み込みの TCP プロファイルの名前。 | いいえ | いいえ |
| 設定 | オブジェクト | preconfigured とは相互排他的です。完全にカスタムなプロファイルのために、NetScaler NITRO API に関連するすべてのパラメーターが含まれます。お客様は、任意の有効な NITRO TCP プロファイルパラメーターを指定できます。TCP プロファイルのすべての可能なキーと値のペアについては、TCP profile を参照してください。 | いいえ | いいえ |
| targetRef | オブジェクトの配列 | このプロファイルが適用されるターゲットリソース(通常は Gateway)のリスト。このフィールドはフロントエンドプロファイルに必須であり、バックエンドプロファイルでは省略する必要があります。 | はい | いいえ |
| gatewayClassName | 文字列 | このTCPプロファイルを適用する必要があるGatewayClassの名前。マルチテナント環境で、プロファイルを特定のコントローラーインスタンスにスコープするために使用されます。 |
いいえ | いいえ |
例1:事前設定されたフロントエンドTCPプロファイル
apiVersion: citrix.com/v1
kind: tcpprofile
metadata:
name: frontend-tcp-preconfigured
spec:
targetRef:
- name: my-gateway-https2
sectionName: https # Applying to specific csvserver/Listener in the Gateway
preconfigured: "nstcp_default_profile"
例2:カスタムフロントエンドTCPプロファイル
apiVersion: citrix.com/v1
kind: tcpprofile
metadata:
name: frontend-tcp-custom
spec:
targetRef:
- name: my-gateway-https # Applying to all csvservers in the Gateway
config:
mss: 1000
sack: ENABLED
buffersize: 10000
ka: ENABLED
name: "dummy" # Will be ignored, tcpprofile will be generated based on metadata.name and metadata.namespace
例3:事前設定されたバックエンドTCPプロファイルと、そのプロファイルを参照するHTTPRoute
apiVersion: citrix.com/v1
kind: tcpprofile
metadata:
name: backend-tcp-preconfigured
spec:
preconfigured: "nstcp_default_profile"apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: my-httproute
spec:
parentRefs:
- name: my-gateway-https
hostnames:
- "example123.com"
rules:
- filters:
- type: ExtensionRef
extensionRef:
group: "citrix.com"
kind: "tcpprofile"
name: "backend-tcp-preconfigured"
matches:
- path:
type: PathPrefix
value: /
backendRefs:
- name: app1-svc
port: 443
例4:カスタムバックエンドTCPプロファイルと、そのプロファイルを参照するHTTPRoute
apiVersion: citrix.com/v1
kind: tcpprofile
metadata:
name: backend-tcp-custom
spec:
config:
mss: 1000
sack: ENABLED
buffersize: 10000
ka: ENABLEDapiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: my-httproute2
spec:
parentRefs:
- name: my-gateway-https2
hostnames:
- "example123.com"
rules:
- filters:
- type: ExtensionRef
extensionRef:
group: "citrix.com"
kind: "sslprofile"
name: "backend-ssl-custom"
- type: ExtensionRef
extensionRef:
group: "citrix.com"
kind: "tcpprofile"
name: "backend-tcp-custom"
# Applying SSL and TCPProfile to the same rule
matches:
- path:
type: PathPrefix
value: /
backendRefs:
- name: app1-svc
namespace: default
port: 443
HTTPプロファイル
HTTPプロファイルは、WebSocketの有効化、HTTPタイムアウトのカスタマイズ、厳格な検証ルールの設定など、さまざまなアプリケーション層の動作を設定するために使用されるHTTP設定の集合体です。
HTTPプロファイルCRDスキーマ参照
| フィールド | タイプ | 説明 | フロントエンドプロファイルに必須 | バックエンドプロファイルに必須 |
|---|---|---|---|---|
| 事前設定済み | 文字列 | config とは相互排他的です。使用する NetScaler アプライアンスに存在する、事前設定済みまたは組み込みの HTTP プロファイルの名前。 | いいえ | いいえ |
| 設定 | オブジェクト | preconfigured とは相互排他的です。完全にカスタムなプロファイルのための NetScaler NITRO API に関連するすべてのパラメーターが含まれます。顧客は任意の有効な NITRO TCP プロファイルパラメーターを指定できます。HTTP プロファイルのすべての可能なキーと値のペアについては、HTTP プロファイルを参照してください。 | いいえ | いいえ |
| targetRef | オブジェクトの配列 | このプロファイルが適用されるターゲットリソース (通常は Gateway) のリスト。このフィールドはフロントエンドプロファイルには必須であり、バックエンドプロファイルには省略する必要があります。 | はい | いいえ |
| gatewayClassName | 文字列 | このHTTPプロファイルを適用する必要があるGatewayClassの名前。マルチテナント環境でプロファイルを特定のコントローラーインスタンスにスコープするために使用されます。 | いいえ | いいえ |
例1: 事前設定されたフロントエンドHTTPプロファイル
apiVersion: citrix.com/v1
kind: httpprofile
metadata:
name: frontend-http-preconfigured
spec:
targetRef:
- name: my-gateway-https
kind: Gateway
preconfigured: "frontend1"
例2: カスタムフロントエンドHTTPプロファイル
apiVersion: citrix.com/v1
kind: httpprofile
metadata:
name: frontend-http-custom
spec:
targetRef:
- name: my-gateway-https
kind: Gateway
group: gateway.networking.k8s.io # Applying to all CSvserver in the Gateway
config:
websocket: "ENABLED"
http2: ENABLED
reqtimeout: 10
dropinvalreqs: ENABLED
例3: 事前設定されたバックエンドHTTPプロファイルと、そのプロファイルを参照するHTTPRoute
apiVersion: citrix.com/v1
kind: httpprofile
metadata:
name: backend-http-preconfigured
spec:
preconfigured: "nshttp_default_profile"apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: my-httproute
namespace: default
spec:
parentRefs:
- name: my-gateway-https
hostnames:
- "example123.com"
rules:
- filters:
- type: ExtensionRef
extensionRef:
group: "citrix.com"
kind: "tcpprofile"
name: "backend-tcp-preconfigured"
matches:
- path:
type: PathPrefix
value: /
backendRefs:
- name: app1-svc
namespace: default
port: 443
例4: カスタムバックエンドHTTPプロファイルと、そのプロファイルを参照するHTTPRoute
apiVersion: citrix.com/v1
kind: httpprofile
metadata:
name: backend-http-custom
spec:
config:
websocket: "ENABLED"
http2: ENABLED
reqtimeout: 10
dropinvalreqs: ENABLED# HTTProute referring custom backend sslprofile
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: my-httproute2
namespace: default
spec:
parentRefs:
- name: my-gateway-https2
namespace: default
hostnames:
- "example123.com"
rules:
- filters:
# Here we are referring to all types of profiles for this rule.
- type: ExtensionRef
extensionRef:
group: "citrix.com"
kind: "sslprofile"
name: "backend-ssl-custom"
- type: ExtensionRef
extensionRef:
group: "citrix.com"
kind: "httpprofile"
name: "backend-http-custom"
- type: ExtensionRef
extensionRef:
group: "citrix.com"
kind: "tcpprofile"
name: "backend-tcp-custom"
matches:
- path:
type: PathPrefix
value: /
backendRefs:
- name: app1-svc
namespace: default
port: 443
spec.gatewayClassNameによるコントローラーのスコープ設定
spec.gatewayClassNameフィールドは、どのNetScaler Gateway ControllerインスタンスがプロファイルCRDを処理するかを制御します。この制御は、マルチテナントまたはマルチコントローラー環境において非常に重要です。
| シナリオ | spec.gatewayClassName |
コントローラーの動作 |
|---|---|---|
| スコープ設定済み | 存在する(例:netscaler-prod) |
そのspecific GatewayClassを管理するコントローラーインスタンスのみがプロファイルを処理し、分離とターゲット設定を保証します。 |
| グローバル | なし | クラスター内のすべてのNetScaler Gateway Controllerインスタンスは、それぞれのNetScalerアプライアンス上でプロファイルを受け入れ、設定することができます。 |
プロファイルが、現在クラスターにデプロイされていない
gatewayClassNameを指定している場合、プロファイルCRDはスキップされ、対応するGatewayClassが利用可能になるまで待機します。