Kubernetes(GKE)でHTTPS通信する方法についてのまとめです。はじめにKubernetesが外部と通信できるようにするにはServiceによる方法Ingressによる方法の2通りのやり方があります。Serviceによる方法では、外部IPはGCPのロードバランサーに接続され、外部からのデータはロードバランサーの機能により、KubernetesのServiceに直接届けられます。ロードバランサーは単純にデータを分配するだけで、外部からのデータはそのままServiceに流されるため、HTTPSの処理はデータを受け取ったKubernetesの内部のPodで処理する必要があります。Ingressによる方法では、外部IPはServiceによる方法と同様、GCPのロードバランサーに接続されるのですが、そこからIngressというKubernetesのルーティングを行う所に接続され、Ingressは設定に応じて、KubernetesのServiceにデータを分配します。Ingressは内部的にはNginxで作成されており、外部からのHTTPSをHTTPに変換してServiceに流すといった、通信内容に応じたルーティングが可能になります。本記事では、Ingressを使ったHTTPS通信を行い、IngressでHTTPSをHTTPに変換し、KubernetesにはHTTPを送るように設定します。外部IPIngressの外部IPは「global」である必要があり、「regional」では動作しません。証明書と鍵のセットをシークレットとしてKubernetesに登録し、そのシークレットを参照する形でIngressを作成します。シークレットの作成を行います。以上でIngressが作成され、外部からHTTPSで通信できるようになります。Ingressが作成されると、Kubernetesはロードバランサーを作成し、ヘルスチェックの設定も行います。[GCP]-[ネットワークサービス]-[負荷分散]-[<ロードバランサー名>]-[ヘルスチェック]でヘルスチェックの詳細が見れます。このヘルスチェックをパスしないと、Ingressへデータが流されず、動作しませんので注意が必要です。ヘルスチェックで何をするかは、Ingressで接続先のサービスのPodの「readinessProbe」で定義します。IngressからNginxに接続する構成にしていて、Nginxが正常に動作している場合はデフォルトの「Welcome」ページが表示されるようになっていたとします。Nginxが生きているかのヘルスチェックは、Nginxにhttpでアクセスして応答があればいいので、その場合のNginxのdeploymentの「readinessProbe」は、下記のように書きます。HTTP注意ヘルスチェックはIngressが作成される時に行なわれ、その時点で既に接続先Serveiceが立ち上がっている必要があります。接続先Service、Ingressの順で作成する必要があります。ヘルスチェックが失敗した時、接続先Serviceを修正・アップしても、自動でヘルスチェックは再実行されないので、Ingressを一旦削除して再作成または、再更新することにより、ヘルスチェックを再度行うようにする必要があります。1引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。