Gateway内の複数のリスナー
NetScaler® Kubernetes Gateway Controllerは、Kubernetes Gateway APIで定義されているように、単一のGatewayリソース内で複数のリスナーをサポートします。この機能により、Kubernetesクラスター内のサービスへの外部トラフィックの管理とルーティング方法について、より高い柔軟性と制御が可能になります。
複数のリスナーをサポートすることで、次のことが可能になります。
-
同じゲートウェイIPアドレスのセットで複数のポートを公開し、異なるアプリケーションやサービスが個別のポートを介してアクセスできるようにします。
-
同じゲートウェイIPアドレスを使用しながら、HTTPやHTTPSなどの異なるプロトコルを別々のポートでサポートします。
-
各リスナーに固有のTLS構成を適用し、特定の要件に合わせた安全な通信を可能にします。
-
各リスナーに個別のルーティングルールを定義し、異なるインバウンドトラフィックフローを管理および指示できるようにします。
この強化されたリスナー機能により、単一のGatewayの背後で複数のセキュアおよび非セキュアなアプリケーションをホストしたり、コンプライアンスおよびセキュリティ目的でトラフィックをセグメント化したりするなど、高度なトラフィック管理シナリオが可能になります。複数のリスナーを使用することで、アプリケーションの配信を最適化し、Kubernetes環境のスケーラビリティとセキュリティを向上させることができます。
設定例
Kubernetesの以下の設定例では、3つのコンテンツスイッチング仮想サーバーと、各コンテンツスイッチング仮想サーバー用のipsetが作成されます。
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: my-gateway-http
namespace: default
spec:
gatewayClassName: my-gateway-class
addresses:
- type: IPAddress
value: <ip1>
- type: IPAddress
value: <ip2>
- type: IPAddress
value: <ip3>
listeners:
- name: http-listener
protocol: HTTP
port: 80
allowedRoutes:
namespaces:
from: All
- name: http-listener1
protocol: HTTP
port: 81
allowedRoutes:
namespaces:
from: All
- name: https
protocol: HTTPS
port: 443
tls:
mode: Terminate
certificateRefs:
- kind: Secret
name: my-secret
group: ""
allowedRoutes:
namespaces:
from: All
名前空間フィルター
デフォルトでは、Gatewayは厳格な名前空間分離を強制します。これは、Gatewayリソースと同じ名前空間に存在する
HTTPRouteのようなルートのみがそのGatewayにアタッチできることを意味します。このデフォルトの動作は、安全で分離されたルーティング環境を提供し、同じ名前空間内の信頼されたルートのみがGatewayのトラフィック管理に影響を与えることを保証します。
より高度なルーティングシナリオをサポートするために、Gatewayリソースの各リスナー定義内で
allowedRoutesフィールドを構成することで、クロス名前空間ルーティングを有効にできます。allowedRoutesフィールドは、特定のリスナーにルートをアタッチすることを許可する名前空間をきめ細かく制御し、柔軟で安全なマルチテナントまたはマルチチーム展開を可能にします。
allowedRoutes.namespaces.fromフィールドは、名前空間選択のために3つの異なるモードをサポートしています。
-
Same (デフォルト): - Gatewayと同じ名前空間からのルートのみがアタッチを許可されます。このモードは最も制限が厳しく安全なオプションであり、厳格な分離が必要な環境に適しています。
-
すべて: - Kubernetesクラスター内の任意の名前空間からのルートをGatewayリスナーにアタッチできます。このモードは最大限の柔軟性を提供し、集中管理されたGatewayリソースが複数の名前空間からのルートを処理できるようにします。ただし、このモードを使用する際には、セキュリティ上の影響を考慮し、適切なRBAC制御を実装することが重要です。
-
セレクター: - 名前空間ラベルの一致条件に基づいてルートのアタッチが許可されます。このモードはKubernetesラベルセレクターを使用して、高度な名前空間ベースのルーティングポリシーを可能にします。例えば、特定のラベル(
team=frontendなど)を持つ名前空間のみがリスナーにルートをアタッチできるようにすることで、きめ細かなマルチテナント制御を提供できます。注:HTTPRouteが適用された後に名前空間ラベルが変更された場合、その変更はGateway Controllerに反映されません。