シンプルな TLS を使用して HTTPS で Ingress ゲートウェイを保護し、特定のウェブページへの HTTPS 接続を有効にすることができます。また、HTTP 接続を HTTPS にリダイレクトすることもできます。
HTTPS は、安全でないネットワーク上にセキュアなチャネルを作成します。クライアントとサーバー間でトラフィックを暗号化し、中間者攻撃から保護します。HTTPS 接続を受け入れるようにウェブサーバーを準備するには、管理者がサーバーの公開鍵証明書を作成する必要があります。この証明書は、ウェブブラウザが警告なく承認するように、信頼できる認証局によって署名されている必要があります。
組み込みの Kubernetes エディタを使用して、kf
名前空間の external-gateway というゲートウェイを編集します。
kubectl edit gateway -n kf external-gateway
- サービスの証明書と鍵がすでに存在しているので、Ingress ゲートウェイに Kubernetes Secret を作成します。Secret 名が
istio
またはprometheus
で始まっていないことを確認します。この例では、myapp-https-credential
という Secret 名を使用しています。 servers:
で次の操作を行います。- ポート 443 のセクションを追加します。
tls:
で、作成した Secret の名前をcredentialName
に設定します。hosts:
で、HTTPS で保護するサービスのホスト名を追加します。ワイルドカード(*.example.com
など)を使用してドメイン全体に設定することも、1 つのホスト名(myapp.example.com
など)に限定することもできます。
servers:
には、ポート 80 HTTP のセクションがすでに存在します。すべてのトラフィックを HTTP として受信する場合は、ゲートウェイの定義でこのセクションを残します。- HTTP を HTTPS にリダイレクトするには、HTTP サーバー セクションの
tls
の下にhttpsRedirect: true
を追加します。詳しくは、Istio ゲートウェイのドキュメントをご覧ください。このオプションをhosts
が*
に設定されているセクションに追加すると、すべてのトラフィックが HTTPS にリダイレクトされます。1 つのアプリまたはドメインの HTTP のみを HTTPS にリダイレクトする場合は、別の HTTP セクションを追加してリダイレクトを指定します。
次に、ゲートウェイ spec
の例を示します。ここでは、myapp.example.com
に HTTPS を設定し、そのホストの HTTP を HTTPS にリダイレクトしています。
spec:
selector:
istio: ingressgateway
servers:
- hosts:
- myapp.example.com
port:
name: https
number: 443
protocol: HTTPS
tls:
credentialName: myapp-https-credential
mode: SIMPLE
- hosts:
- myapp.example.com
port:
name: http-my-app
number: 80
protocol: HTTP
tls:
httpsRedirect: true
- hosts:
- '*'
port:
name: http
number: 80
protocol: HTTP