リスナー
リスナーCRDは、コンテンツスイッチング負荷分散仮想サーバーのエンドポイント情報を表します。このトピックには、リスナーCRDオブジェクトのサンプルが含まれており、リスナーCRDのさまざまな属性についても説明しています。完全なCRD定義については、Listener.yamlを参照してください。
注:
イングレスリソースとコンテンツルーティングCRD(リスナーCRDおよびHTTPRoute CRD)は、同じエンドポイント(IPアドレスとポート)で共存できません。イングレスでのコンテンツルーティングCRDの使用はサポートされていません。
リスナーCRDオブジェクトの例
以下は、リスナーCRDオブジェクトの例です。
apiVersion: citrix.com/v1
kind: Listener
metadata:
name: my-listener
namespace: default
spec:
certificates:
- secret:
name: my-secret
# Secret named 'my-secret' in current namespace bound as default certificate
default: true
- secret:
# Secret 'other-secret' in demo namespace bound as SNI certificate
name: other-secret
namespace: demo
- preconfigured: second-secret
# preconfigured certkey name in ADC
vip: '192.168.0.1' # Virtual IP address to be used, not required when CPX is used as ingress device
port: 443
protocol: https
redirectPort: 80
secondaryVips:
- "10.0.0.1"
- "1.1.1.1"
policies:
httpprofile:
config:
websocket: "ENABLED"
tcpprofile:
config:
sack: "ENABLED"
sslprofile:
config:
ssl3: "ENABLED"
sslciphers:
- SECURE
- MEDIUM
analyticsprofile:
config:
- type: webinsight
parameters:
allhttpheaders: "ENABLED"
csvserverConfig:
rhistate: 'ACTIVE'
routes:
# Attach the policies from the below Routes
- name: domain1-route
namespace: default
- name: domain2-route
namespace: default
- labelSelector:
# Attach all HTTPRoutes with label route=my-route
route: my-route
# Default action when traffic matches none of the policies in the HTTPRoute
defaultAction:
backend:
kube:
namespace: default
port: 80
service: default-service
backendConfig:
lbConfig:
# Use round robin LB method for default service
lbmethod: ROUNDROBIN
servicegroupConfig:
# Client timeout of 20 seconds
clttimeout: "20"
その他の例については、リスナーの例を参照してください。
Listener.spec
Listener.spec属性は、リスナーカスタムリソースの仕様を定義します。次の表は、Listener.spec属性のさまざまなフィールドについて説明しています。
| フィールド | 説明 | タイプ ; | 必須 |
|---|---|---|---|
protocol |
負荷分散コンテンツスイッチング仮想サーバーのプロトコルを指定します。許可される値は、tcp、udp、http、およびhttpsです。 |
文字列 | はい |
port |
ロードバランシングコンテンツスイッチング仮想サーバーのポート番号を指定します。HTTPプロトコルのデフォルトポート番号は80、HTTPSプロトコルは443です。 | 整数 | いいえ |
routes |
ListenerリソースにアタッチされるHTTPRouteリソースのリストを指定します。評価順序はリストの順序に従います。つまり、複数のエントリが存在する場合、リストで最初に指定されたルートが最も高い優先順位を持ち、以降も同様です。 | [ ] ルート | いいえ |
ingressclass |
指定されたイングレスクラスに関連付けられたイングレスコントローラーのみがリソースを処理するように、イングレスクラスを指定します。そうでない場合、クラスター内のすべてのコントローラーがこのリソースを処理します。 | 文字列 | いいえ |
certificates |
プロトコルがHTTPSの場合、SSL仮想サーバーの証明書リストを指定します。プロトコルがHTTPSの場合、このフィールドは必須です。 | [ ] 証明書 | いいえ |
vip |
ロードバランシングコンテンツスイッチング仮想サーバーのエンドポイントIPアドレスを指定します。このアドレスはNetScaler VPXおよびMPXデバイスには必須ですが、Kubernetesクラスターに存在するNetScaler CPXには必須ではありません。NetScaler CPXの場合、vip はCNIによって割り当てられたNetScaler CPXのプライマリIPアドレスと同じです。 |
文字列 | いいえ |
defaultAction |
routes で指定されたHTTPRouteリソースのいずれもトラフィックに一致しない場合に実行するデフォルトのアクションを指定します。 |
アクション | いいえ |
policies |
フロントエンド仮想サーバーに関連付けられたHTTP、TCP、およびSSLポリシーをカスタマイズできるオプションを指定します。 | [ ] Listener.policies | いいえ |
redirectPort |
このポートのHTTPトラフィックがHTTPSポートにリダイレクトされることを指定します。 | 整数 | いいえ |
secondaryVips |
プライマリVIPとともにVIPとして使用されるIPアドレスのセットを指定します。IPセットが作成され、これらのVIPがIPセットに追加されます。 | [ ] 文字列 | いいえ |
multicluster |
コンテンツスイッチング仮想サーバーのIPアドレスが、マルチクラスターとNetScaler Ingress Controllerによって共有されるかどうかを指定します。 | ブール値 | いいえ |
passthrough |
SSLトラフィックのSSLパススルーを有効にします。トラフィックは復号化されずにバックエンドに転送されます。リスナーがイングレスアノテーションで参照されている場合にのみ利用可能で、ルートでは使用できません。 | ブール値 | いいえ |
Listener.certificates
Listener.certificates 属性は、SSL仮想サーバーのTLS証明書関連情報を定義します。
Listener.certificates 属性の例を次に示します。
certificates:
- secret:
name: my-secret
namespace: demo
default: true
- preconfigured: configured-secret
次の表は、
Listener.certificates 属性のさまざまなフィールドについて説明しています。
| フィールド | 説明 | 型 | 必須 |
|---|---|---|---|
secret |
Kubernetesシークレットリソースを介して指定されたTLS証明書を指定します。シークレットには、キー tls.crt と tls.key が含まれている必要があります。これらのキーには、証明書と秘密鍵が含まれています。シークレットまたは事前設定されたフィールドのいずれかが必要です。すべての証明書は、SNI証明書としてSSL仮想サーバーにバインドされます。 |
certificates.secret | いいえ |
preconfigured |
NetScalerで事前設定されたTLS certkey の名前を指定します。このフィールドは、Tier-1 VPXおよびMPXデバイスにのみ適用されます。certkey は、Listenerリソースの実際のデプロイメントの前に存在している必要があります。そうでない場合、リソースのデプロイメントはエラーで失敗します。NetScaler Ingress Controllerは certkey のライフサイクルを管理しません。したがって、certkey の追加または削除は手動で管理する必要があります。シークレットまたは事前設定されたフィールドのいずれかが必要です。 |
文字列 | いいえ |
default |
デフォルト証明書を指定します。証明書のうち1つだけをデフォルトとしてマークできます。仮想サーバーがSNIフィールドなしでトラフィックを受信した場合、デフォルト証明書が提示されます。この証明書は、IPアドレスを使用してHTTPSアプリケーションにアクセスするために使用できます。適用可能な値はtrueとfalseです。 |
ブール値 | いいえ |
Listener.certificates.Secret
この属性は、SSL仮想サーバーにバインドする必要があるTLS証明書用のKubernetesシークレットリソースを表します。
次の表は、
Listener.certificate.Secret属性のさまざまなフィールドについて説明しています。
| フィールド | 説明 | タイプ | 必須 |
|---|---|---|---|
name |
Kubernetesシークレットリソースの名前を指定します。シークレットには、tls.crtとtls.keyという名前のキーが含まれている必要があります。これらのキーには、証明書と秘密鍵が含まれています。シークレットオブジェクトに複数のtls.crtフィールドが存在する場合、最初の証明書はサーバー証明書と見なされ、残りの証明書は中間CA証明書と見なされます。また、証明書はサーバー証明書から開始して、互いに再帰的にリンクされます。 |
文字列 | はい |
namespace |
Kubernetesシークレットリソースの名前空間を指定します。この値が指定されていない場合、名前空間はListenerリソースと同じと見なされます。 | 文字列 | いいえ |
Listener.routes
この属性は、ListenerリソースにアタッチされているHTTPRouteオブジェクトのリストを表します。 次の表は、
Listener.routes属性のさまざまなフィールドについて説明しています。
| フィールド | 説明 | タイプ | 必須 |
|---|---|---|---|
name |
バックエンドサーバーへのルーティング決定のために評価されるHTTPRouteリソースの名前を指定します。nameまたはlabelSelectorのいずれかが必要です。 |
文字列 | いいえ |
namespace |
HTTPRouteリソースの名前空間を指定します。デフォルト値はListenerリソースの名前空間です。 | 文字列 | いいえ |
labelSelector |
HTTPRouteリソースのラベルセレクターを指定します。このフィールドは、HTTPRouteリソースをアタッチする別の方法を提供します。このセレクターに一致するラベルキーと値を持つHTTPRouteオブジェクトは、リスナーリソースに自動的にアタッチされます。ルートがlabelSelectorを介してアタッチされる場合、ルートは特定の順序なしでアタッチされます。このルールの例外は、常に最後にアタッチされるデフォルトパス ('/') を持つルートです。例に示すように、ラベルを持つHTTPRouteオブジェクトはリスナーオブジェクトにアタッチされます。ラベルとセレクターの詳細については、Kubernetes Documentationを参照してください。 | オブジェクト | いいえ |
Listener.action
この属性は、ロードバランシング仮想サーバーへのリクエストがListener.routesフィールドに示されているルートオブジェクトのいずれにも一致しない場合のデフォルトアクションを表します。
次の表は、
Listener.action属性のさまざまなフィールドについて説明しています。
| フィールド | 説明 | タイプ | 必須 |
|---|---|---|---|
backend |
このフィールドのデフォルトアクションは、トラフィックをバックエンドサービスに送信することです。バックエンドまたはリダイレクトのいずれかが必要です。 | action.backend | いいえ |
redirect |
デフォルトアクションはトラフィックをリダイレクトすることです。バックエンドまたはリダイレクトのいずれかが必要です。 | action.redirect | いいえ |
Listener.action.backend
この属性は、デフォルトアクションのバックエンドサービスを指定します。 次の表は、
Listener.action.backend 属性のさまざまなフィールドについて説明しています。
| フィールド | 説明 | タイプ | 必須 |
|---|---|---|---|
kube |
バックエンドサービス用のKubernetesサービス情報を指定します。 | action.backend.kube |
Listener.action.backend.kube
この属性は、デフォルトのバックエンドに対するKubernetesバックエンドサービスを表します。サービスが
NodePortまたはLoadbalancerタイプの場合、ノードIPアドレスとNodePortがバックエンドへのトラフィックの送信に使用されます。
Listener.action.backend.kube属性の例を次に示します。
kube:
service: default-service
namespace: default
port: 80
backendConfig:
lbConfig:
lbmethod: ROUNDROBIN
servicegroupConfig:
clttimeout: '20'
次の表は、
Listener.action.backend.kube属性のさまざまなフィールドについて説明しています。
| フィールド | 説明 | タイプ | 必須 |
|---|---|---|---|
service |
デフォルトのバックエンドに対するKubernetesサービスの名前を指定します。 | 文字列 | はい |
namespace |
デフォルトバックエンドのKubernetesサービスのネームスペースを指定します。 | 文字列 | はい |
port |
デフォルトバックエンドのKubernetesサービスのポート番号を指定します。 | 整数 | はい |
backendConfig |
デフォルトバックエンドのバックエンド構成を指定します。 | BackendConfig | いいえ |
BackendConfig
この属性は、NetScalerのバックエンド構成を表します。
BackendConfig属性の例を次に示します。
backendConfig:
sercureBackend: true
lbConfig:
lbmethod: ROUNDROBIN
servicegroupConfig:
clttimeout: '20'
次の表は、
BackendConfig属性のさまざまなフィールドについて説明しています。
| フィールド | 説明 | タイプ | 必須 |
|---|---|---|---|
secureBackend |
通信が安全かどうかを指定します。secureBackendフィールドの値がtrueの場合、バックエンドとの通信には安全な通信が使用されます。デフォルト値はfalseで、これはバックエンド通信にHTTPが使用されることを意味します。 |
||
lbConfig |
指定されたバックエンドのNetScalerロードバランシング仮想サーバー構成を指定します。例に示すように、バックエンドのLBVserver構成を設定するキーと値のペアを指定できます。有効なすべての構成については、LB仮想サーバー構成を参照してください。 | オブジェクト | いいえ |
servicegroupConfig |
指定されたバックエンドのNetScalerサービスグループ構成を指定します。例に示すように、バックエンドのサービスグループ構成を設定するキーと値のペアを指定できます。有効なすべての構成については、サービスグループ構成を参照してください。 | オブジェクト | いいえ |
Listener.action.redirect
defaultAction:
redirect:
httpsRedirect: true
responseCode: 302
次の表は、
Listener.action.redirect 属性のさまざまなフィールドについて説明しています。
| フィールド | 説明 | タイプ | 必須 |
|---|---|---|---|
httpsRedirect |
このフィールドが yes に設定されている場合、HTTPトラフィックをHTTPSにリダイレクトします。他のURL部分を変更せずに、スキームのみがHTTPSに変更されます。httpsRedirect、hostRedirect、または targetExpression のいずれかが必要です。 |
ブール値 | いいえ |
hostRedirect |
URLのホスト名部分をここで設定された値に書き換え、トラフィックをリダイレクトします。リダイレクト中にURLの他の部分は変更されません。 | 文字列 | いいえ |
targetExpression |
リダイレクト用のNetScaler式を指定します。たとえば、HTTPからHTTPSにトラフィックをリダイレクトするには、次の式を使用できます: ""https://"+HTTP.REQ.HOSTNAME + HTTP.REQ.URL.HTTP_URL_SAFE"。 | 文字列 | いいえ |
responseCode |
応答コードを指定します。デフォルトの応答コードは302ですが、この属性を使用してカスタマイズできます。 | 整数 | いいえ |
Listener.policies
この属性は、ポリシーが指定されていない場合にリスナーに使用されるデフォルトポリシーを表します。
Listener.policiesを使用することで、TCP、HTTP、およびSSLの動作をカスタマイズできます。
Listener.policies属性の例を次に示します。
policies:
httpprofile:
config:
websocket: "ENABLED"
tcpprofile:
config:
sack: "ENABLED"
sslprofile:
config:
ssl3: "ENABLED"
sslciphers:
- HIGH
- MEDIUM
analyticsprofile:
config:
- type: webinsight
parameters:
allhttpheaders: "ENABLED"
csvserverConfig:
rhistate: 'ACTIVE'
stateupdate: ‘ENABLED’
次の表は、
Listener.policies属性のさまざまなフィールドについて説明しています。
| フィールド | 説明 | タイプ | 必須 |
|---|---|---|---|
httpprofile |
フロントエンド仮想サーバーのHTTP設定を指定します。 | Listener.policies.httpprofile | いいえ |
tcpprofile |
フロントエンド仮想サーバーのTCP設定を指定します。 | Listener.policies.tcpprofile | いいえ |
sslprofile |
フロントエンド仮想サーバーのSSL設定を指定します。 | Listener.policies.sslprofile | いいえ |
sslciphers |
SSLプロファイルにバインドされる暗号のリストを指定します。優先順位はリストで指定された順序で、リストの最初にあるものに高い優先順位が与えられます。このフィールドでは、NetScalerで利用可能な任意のSSL暗号、またはユーザーが作成した暗号グループを使用できます。NetScalerで利用可能な暗号のリストについては、NetScalerの暗号を参照してください。 | [ ] 文字列 | いいえ |
analyticsprofile |
フロントエンド仮想サーバーの分析プロファイル設定を指定します | Listener.policies.analyticsprofile | いいえ |
csvserverConfig |
リスナーのフロントエンドCS仮想サーバー設定を指定します。フロントエンドのCS仮想サーバー設定を行う例に示されているように、キーと値のペアを指定できます。 | オブジェクト | いいえ |
Listener.policies.tcpprofile
この属性は、フロントエンドCS仮想サーバーのTCPプロファイル設定を表します。
Listener.policies.tcpprofile属性の例を次に示します。
policies:
tcpprofile:
config:
sack: "ENABLED"
nagle: “ENABLED”
---
policies:
tcpprofile:
preconfigured: test-tcp-profile
次の表は、
Listener.policies.tcpprofile属性のさまざまなフィールドについて説明しています。
| フィールド | 説明 | タイプ | 必須 |
|---|---|---|---|
preconfigured |
フロントエンドCS仮想サーバーに使用される、事前設定されたTCPプロファイルの名称を指定します。このプロファイルは、ポリシーを適用する前にNetScalerに存在している必要があります。そうでない場合、Listenerリソースの適用は失敗します。preconfiguredまたはconfigのいずれかが必要です。 |
文字列 | いいえ |
config |
フロントエンド仮想サーバーのTCPプロファイル設定を指定します。仮想サーバーのTCP特性を調整するために、例に示すようにキーと値のペアを指定できます。 | オブジェクト | いいえ |
Listener.policies.httpprofile
この属性は、フロントエンドCS仮想サーバーのHTTP構成を表します。
Listener.policies.httpprofile属性の例を次に示します。
policies:
httpprofile:
config:
websocket: "ENABLED"
---
policies:
httpprofile:
preconfigured: test-http-profile
次の表は、
Listener.policies.httpprofile属性のさまざまなフィールドについて説明しています。
| フィールド | 説明 | タイプ | 必須 |
|---|---|---|---|
preconfigured |
フロントエンドCS仮想サーバーに使用される、事前設定されたHTTPプロファイルの名称を指定します。このプロファイルは、ポリシーを適用する前にNetScalerに存在している必要があります。そうでない場合、Listenerリソースの適用は失敗します。preconfigured または config のいずれかが必要です。 |
文字列 | いいえ |
config |
フロントエンド仮想サーバーのHTTPプロファイル設定を指定します。例に示すようにキーと値のペアを指定して、仮想サーバーのHTTPプロトコル特性を調整できます。 | オブジェクト | いいえ |
Listener.policies.sslprofile
この属性は、フロントエンドCS仮想サーバーのSSLプロファイルを表します。
Listener.policies.sslprofile 属性の例を次に示します。
policies:
sslprofile:
config:
ssl3: "ENABLED"
---
policies:
sslprofile:
preconfigured: test-ssl-profile
次の表は、
Listener.policies.sslprofile 属性のさまざまなフィールドについて説明しています。
| フィールド | 説明 | タイプ | 必須 |
|---|---|---|---|
preconfigured |
フロントエンドSSL仮想サーバーに使用される、事前設定されたSSLプロファイルの名称を指定します。このプロファイルは、ポリシーを適用する前にNetScalerに存在している必要があります。そうでない場合、リスナーリソースの適用は失敗します。preconfiguredまたはconfigのいずれかが必要です。 |
文字列 | いいえ |
config |
フロントエンド仮想サーバーのSSLプロファイル設定を指定します。例に示すようにキーと値のペアを指定することで、仮想サーバーのSSL特性を調整できます。 | オブジェクト | いいえ |
注: 高度なSSL機能を使用するには、NetScalerでset ssl parameter -defaultProfile ENABLEDコマンドを使用してデフォルトプロファイルを有効にする必要があります。 |
Listener.policies.analyticsprofile
この属性は、カウンターとメトリクスをNetScaler Observability Exporterにエクスポートするために使用されるアナリティクスプロファイルを表します。この属性を設定することで、アナリティクスプロファイルを作成してバインドすることにより、エクスポートする内容を選択できます。
Listener.policies.analyticsprofile属性の例を次に示します。
policies:
analyticsprofile:
config:
- type: webinsight
parameters:
allhttpheaders: "ENABLED"
---
policies:
analyticsprofile:
preconfigured:
- test-analytics-profile
- test2-analytics-profile
次の表は、
Listener.policies.analyticsprofile 属性のさまざまなフィールドについて説明しています。
| フィールド | 説明 | タイプ | 必須 |
|---|---|---|---|
preconfigured |
フロントエンド仮想サーバーにバインドする必要がある、事前設定されたアナリティクスプロファイルのリストを指定します。これらのプロファイルは、ポリシーを適用する前にNetScalerに存在している必要があります。そうでない場合、Listenerリソースの適用は失敗します。preconfigured または config のいずれかが必要です。 |
[ ] 文字列 | いいえ |
config |
フロントエンド仮想サーバーにバインドされるアナリティクスプロファイルのリストを指定します。これにより、NetScaler Observability Exporterにエクスポートされるフィールドが決定されます。 | [ ] Listener.policies.analyticsprofile.config | いいえ |
Listener.policies.analyticsprofile.config
この属性は、エクスポートする必要があるさまざまな種類のインサイトおよびHTTPヘッダーパラメーターのアナリティクスプロファイル構成を表します。
次の表は、
Listener.policies.analyticsprofile.config 属性のさまざまなフィールドについて説明しています。
| フィールド | 説明 | タイプ | 必須 |
|---|---|---|---|
type |
有効にする分析プロファイルのタイプを決定するタイプを指定します。次のタイプの1つ以上を有効にできます: webinsight, tcpinsight, securityinsight, videoinsight, hdxinsight, gatewayinsight, timeseries, lsninsight, および botinsight |
文字列 | はい |
parameters |
分析プロファイル の一部として有効にする追加パラメーターを指定します。例に示すように、キーと値のペアを指定できます。たとえば、このフィールドを使用して、webinsight の一部としてエクスポートするHTTPパラメーターを選択できます。 |
オブジェクト | いいえ |