Kubernetes Ingress を使用した SSL パススルーの構成
SSLパススルー機能を使用すると、ロードバランサーを使用して要求を復号化するのではなく、受信するセキュリティソケットレイヤー(SSL)要求を復号化のためにサーバーに直接渡すことができます。SSLパススルーはWebアプリケーションのセキュリティに広く使用されており、TCPモードを使用して暗号化されたデータをサーバーに渡します。
プロキシSSLパススルー構成では、ロードバランサーにSSL証明書をインストールする必要はありません。SSL接続はロードバランサーではなくバックエンドサーバーが処理するため、SSL証明書はバックエンドサーバーにインストールされます。
次の図は、SSLパススルー機能について説明しています。
SSLパススルー(/en-us/netscaler-k8s-ingress-controller/media/ssl-passthrough.png)
この図に示すように、SSLトラフィックはNetScalerで終端されず、SSLトラフィックはNetScalerを介してバックエンドサーバーに渡されます。バックエンドサーバーのSSL証明書は、SSLハンドシェイクに使用されます。
NetScaler Ingress Controllerは、Ingress NetScalerでSSLパススルーを有効にするために使用できる次のIngressアノテーションを提供します。
ingress.citrix.com/ssl-passthrough: 'True|False'
アノテーションのデフォルト値は
Falseです。
SSLパススルーは、Ingress定義で提供されるすべてのサービスまたはホスト名に対して有効になります。SSLパススルーはホスト名(ワイルドカードホスト名もサポートされています)を使用し、Ingressで指定されたパスは無視します。
注:
NetScaler Ingress Controllerは、ホスト名ベースではないIngressのSSLパススルーをサポートしていません。また、SSLパススルーはデフォルトのバックエンドIngressには無効です。
Ingress NetScalerでSSLパススルーを構成するには、次のサンプルIngress定義に示すように
ingress.citrix.com/ssl-passthrough:を定義する必要があります。また、例に示すように、ホストのTLSを有効にする必要があります。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
ingress.citrix.com/frontend-ip: x.x.x.x
ingress.citrix.com/insecure-termination: redirect
ingress.citrix.com/secure-backend: "True"
ingress.citrix.com/ssl-passthrough: "True"
name: hotdrinks-ingress
spec:
ingressClassName: citrix
rules:
- host: hotdrinks.beverages.com
http:
paths:
- backend:
service:
name: frontend-hotdrinks
port:
number: 443
path: /
pathType: Prefix
tls:
- secretName: beverages