GKE MultiClusterIngressを使用した独自ドメインとSSL設定

MultiClusterIngress について

MultiClusterIngress は Google Kubernetes Engine(GKE)が提供が提供するクラウドホスト型のコントローラーです。

特にクラスタを複数用いた冗長構成に使用したりします。

ただ、通常の Ingress コントローラーとは違い Annotations に制限があるため、今回は MultiClusterIngress での独自ドメインと SSL 設定を行う方法を記します。

前提条件

  1. 独自ドメインを持っていること。(今回はお名前.com で取得したドメインを使用します。)
  2. GKE MultiClusterIngress,MultiClusterService の環境が既にできていること。

Cloud DNS と SSL の準備

既に取得したドメインを Cloud DNS に登録するための、静的 IP を払い出す。

gcloud compute addresses create test-ip --global

作成した内容を確認するには下記コマンド。

gcloud compute addresses describe test-ip --global

Cloud DNS のゾーン、レコードを作成。

2-1: Cloud DNS でゾーンを設定する。

内容については下記内容で追加。

DNS名: お名前.comで取得したドメイン
種類: 公開
DNSSEC: オン
Cloud Logging: オフ

2-2: レコードの追加

A レコードで IPv4 アドレスを払い出しした静的 IP を設定して登録。(その他はデフォルト)

2-3: CAA レコードの追加

レコードで IPv4 に 0 issue "letsencrypt.org"を設定

2-4: 今回はお名前.com でドメインを取得したので、お名前.com 側でネームサーバーの設定を行うこと。

Cloud DNS の NS の値を設定。

証明書の発行

今回は Google マネージド SSL 証明書を利用して SSL 設定を行うため、下記コマンドで作成します。

gcloud compute ssl-certificates create test-ssl
gcloud compute ssl-certificates list

Kubernetes 側の設定

Cloud DNS の設定、証明書の発行を元に MultiClusterIngress の Annotations を下記に設定。

ingress.yaml

metadata:
  name: backend-ingress
  annotations:
    networking.gke.io/static-ip: 取得した静的IP # example: "162.1111.111"
    networking.gke.io/pre-shared-certs: 取得したsslの名前 # 今回ならtest-ssl

最後に内容を適用します。

kubectl apply -f ingress.yaml

※ SSL の反映は時間がかかるため、数時間置いてから、確認してください。