HTTPRouteフィルターによるトラフィック管理機能の強化
NetScaler® Kubernetes Gatewayコントローラーは、Kubernetes Gateway APIで定義されているHTTPRouteフィルターをサポートしています。この機能により、HTTPRouteリソース内で直接、高度なトラフィック操作ロジックを実装できます。フィルターを活用することで、リクエストとレスポンスを変更し、ヘッダー操作、URL書き換え、リクエストリダイレクトなど、幅広いユースケースを実現できます。
extensionRefを使用したNetScaler CRDとの統合
NetScaler Ingress Controller (NSIC) のカスタムリソース定義 (CRD) は、HTTPRouteフィルター内のextensionRefフィールドを介して参照できます。この強力な機能により、高度なNetScaler機能をGateway API構成に直接シームレスに統合できます。
参照例
rules:
- filters:
- type: ExtensionRef
extensionRef:
group: "citrix.com"
kind: "<crd-kind>"
name: "<crdinstance-name>"
注:
-
CRDインスタンスはサービス名なしで作成する必要があります。
-
HTTPRouteフィルターの
extensionRefの場合、グループは常に「citrix.com」であり、種類はNetScaler CRDタイプに対応します。有効な種類には、bot、waf、rewritepolicy、ratelimit、およびappqoepolicyが含まれます。
特殊な処理のために、以下のNSIC CRDを参照できます。
-
ボット管理 (BOT): NetScalerがサポートする高度なボット検出および軽減技術を適用することで、悪意のあるボットトラフィックからアプリケーションを保護します。
-
Webアプリケーションファイアウォール (WAF): NetScalerがサポートする堅牢なWAF機能を統合してトラフィックを検査し、既知の攻撃やゼロデイ攻撃をブロックすることで、アプリケーションを保護します。
-
書き換えポリシー: NetScalerの豊富な書き換えポリシーエンジンを使用することで、標準のGateway APIフィルターを超える高度なリクエストおよびレスポンスの書き換えルールを適用します。
-
レート制限: 受信リクエストのレートを管理するポリシーを適用し、アプリケーションが過負荷になるのを防ぎます。
-
AppQoeポリシー: さまざまな基準に基づいてトラフィックを優先または制限するポリシーを適用し、重要なアプリケーションの最適なパフォーマンスとリソースの公平な割り当てを保証します。
extensionRefメカニズムは、Kubernetes Gateway API を使用してトラフィック管理を行いながら、NetScaler の広範な機能セットを活用できるようにする橋渡し役として機能します。
標準 HttpRoute API フィルターのネイティブサポート
NetScaler Kubernetes Gateway Controller は、HTTPRoute フィルターのサポートに基づいて、以下の標準 Gateway API フィルターをネイティブに実装しています。
URL書き換え
リクエストがバックエンドサービスに転送される前に、リクエストのパスまたはホスト名を変更します。このフィルターは、ユーザー向け URL を内部サービスパスにマッピングしたり、公開 URL を変更せずにサービスを移行したりするのに役立ちます。
例:
/old-path を /new-path に書き換えたり、リクエストのホスト名を変更したりします。
- filters:
- type: URLRewrite
urlRewrite:
path:
type: ReplacePrefixMatch
replacePrefixMatch: /new-path
matches:
- path:
type: PathPrefix
value: /old-path
# Rewrite /old-path/rest-of-the-url to /new-path/rest-of-the-url
RequestHeaderModifier および ResponseHeaderModifier
受信リクエストまたは送信レスポンスの HTTP ヘッダーを追加、設定、または削除します。このフィルターは、トレース情報の挿入、セキュリティヘッダーの設定、キャッシュ制御ディレクティブの変更など、さまざまな目的に使用できます。
例:
X-Forwarded-Proto ヘッダーを追加したり、レスポンスから内部専用ヘッダーを削除したりします。
rules:
- filters:
- type: RequestHeaderModifier
requestHeaderModifier:
add:
- name: X-Forwarded-Proto
value: http
remove:
- Proxy-Authenticate
- type: ResponseHeaderModifier
responseHeaderModifier:
set:
- name: X-Cache
value: HIT
remove:
- Server
# Add 'X-Forwarded-Proto' and Remove 'Proxy-Authenticate' in request send to the backend.
# Set/Replace 'X-Cache' header value and Remove 'Server' header in response sent back to the client
RequestRedirect
HTTP 3xx リダイレクトレスポンスを発行し、ユーザーを異なる URL にリダイレクトしたり、HTTPS を強制したり、移動したコンテンツを適切に管理したりします。
例: HTTP トラフィックを HTTPS にリダイレクトしたり、非正規ホスト名を正規ホスト名にリダイレクトしたりします。
rules:
filters:
- type: RequestRedirect
requestRedirect:
path:
type: ReplacePrefixMatch
replacePrefixMatch: /new-path
statusCode: 301
# Redirect Client request to /new-path with 301 status
RequestMirror
リクエストのコピーを異なるバックエンドサービスに送信します。これはトラフィックシャドウイングに非常に役立ちます。このフィルターを使用すると、クライアントの応答に影響を与えることなく、新しいサービスバージョンのテスト、分析の実行、問題のデバッグを行うことができます。ミラーリングされたバックエンドからの応答は無視されます。
注:
複数のミラーバックエンドを指定できます。ただし、ルールごとにトラフィックミラーリングの割合または分数設定は1つのみが尊重されます。
例: リアルタイムのパフォーマンスインサイトを得るために、本番トラフィックを監視および分析サービスにミラーリングする。
rules:
- matches:
- path:
type: PathPrefix
value: /webapp
filters:
- type: RequestMirror
requestMirror:
percent: 80
backendRef:
name: traffic-monitoring-service
port: 8080
- type: RequestMirror
requestMirror:
backendRef:
name: traffic-analytics-service
port: 9000
backendRefs:
- name: webapp-v1-primary
port: 80
# 80% of traffic sent to `webapp-v1-primary` will be mirrored to both `traffic-monitoring-service` and `traffic-analytics-service`.
#If percent/fraction is not specified 100% of the traffic will be cloned/mirrored