【GKE】IngressでHTTPS通信する方法


GKEのIngressでHTTPS通信をする手順の目次

GKEのIngressでHTTPS通信をすることが出来たので、設定方法をまとめてみました。

以下の手順で、GKEのIngressでHTTPS通信をします。

  1. SSL証明書の作成
  2. Ingressの作成
  3. DNSでAレコードとCAAの設定

この手順については以下のドキュメントを参考にしました。

参考:https://cloud.google.com/load-balancing/docs/ssl-certificates?hl=ja#managed-certs

※色々説明は省きまくっているので詳細は公式ドキュメントを読むのが良いかと思われます。

SSL証明書の作成

GKEの管理画面で「ネットワークサービス」>「負荷分散」をクリックしましょう。

次に「詳細設定メニュー」をクリックしてください。

証明書」のタブに移動したら、「SSL証明書を作成」をクリックしましょう。

名前解決する予定のドメインを入力してください。

これで、SSL証明書は完成しました。

ただ、Google管理のSSL証明書については以下のことに注意しておきましょう。

Google 管理の SSL 証明書の機能は Cloud SLA の対象ではありません。
引用:https://console.cloud.google.com/

Ingressの作成

作成したコンテナをデプロイしてノードポートで公開するみたいなタスクは省略します。

コンテナをデプロイする方法は以下を参考にしてください。

参考:https://cloud.google.com/kubernetes-engine/docs/tutorials/hello-app?hl=ja

また、ノードポートによる公開は以下を参考にしてください。

参考:https://cloud.google.com/kubernetes-engine/docs/how-to/exposing-apps?hl=ja

そもそも、Dockerfileを作るところから始まる人は、以下にまとめましたので参考にしてもらえると嬉しいです。

参考:https://qiita.com/arthur_foreign/items/fca369c1d9bde1701e38

Ingressを作成する前準備が整いましたら、「ServiceとIngress」に移動してください。

先ほど、公開したノードポートを選択して、「Ingressを作成」をクリックしましょう。

証明書の項目では先ほど作成したSSL証明書を選択しましょう。

CREATE」をクリックしたらIngressが作成されます。

IPアドレスを半永久的に利用する場合は、静的IPの予約については以下の記事を参考にしてください。

参考:https://cloud.google.com/kubernetes-engine/docs/tutorials/configuring-domain-name-static-ip?hl=ja#step_2b_using_an_ingress

ちなみに、静的IPアドレスを利用するメリットとしては以下になります。

Ingress リソースに静的 IP アドレスを設定した場合、Ingress を削除しても、それに関連付けられている静的 IP アドレスは削除されないことに注意してください。構成した静的 IP アドレスを再び使用する予定がない場合は、クリーンアップが必要になります。
引用:https://cloud.google.com/kubernetes-engine/docs/tutorials/configuring-domain-name-static-ip?hl=ja#step_2b_using_an_ingress

DNSでAレコードとCAAの設定

まずは、IngressのIPアドレスにAレコードを設定していきます。

$ kubectl get ing
NAME                                       HOSTS   ADDRESS          PORTS   AGE
xxxx-xxxx-xxxx-xxxxxxxxxxxx-xxx-xxx        *       xxx.xx.xxx.xxx   xx      xxm

証明書で入力したドメインを「名前」というところに入力しましょう。

次に、route53の「」というところに、IngressのIPアドレスを入力してあげてください。

これで名前解決は完了です。

次は、CAAを設定してあげましょう。

CAAを設定するにあたって以下のサイトが参考になりました。

参考:https://sslmate.com/caa/

上記サイトで、認証局(CA)を選んであげると、route53に入力すべき値が出てきます。

今回は、「Let's Encrypt」と「Google Trust Services」を選択しました。

先ほど作成したSSL証明書と同じドメイン名でCAAを設定する際に、赤ワクに囲っている「Value」の値をコピペしてあげましょう。

これで、証明書のステータスが「ACTIVE」になり、IngressでHTTPS通信が出来るようになっているはずです。