[GKE] kube-legoを使ってドメインからアクセスできるようにする

お世話になっております。
しゃまとんです。

GKEでサービスをある程度作って公開しようとなったとき、HTTPSで通信させたくなります。
というものアプリだとHTTPSを推奨していたり、Webサービスなら検索に影響したりするからです。

GKEでどう実現したらいいのか、まだあまり詳しくはないのですがKubernetes上でHTTPSを簡単に実現できるkube-legoというものがあるのでそちらを利用してやってみました。

まずはリポジトリをクローンして、設定ファイルを変更します。

これで環境にapplyします。

独自ドメインでのアクセスには静的IPが必要なので、GCPのコンソール等から操作して取得しておきましょう。(VPCネットワーク → 外部IPアドレス)もしくは下記コマンドで作成しましょう。

次にドメインですが、お名前.comとかどこでもいいですが今回は無料で取得できるfreenomを利用してみました。こんな感じで簡単に確認できるので希望するものがとれれば選びましょう。取得できたら、CloudDNSでドメインを登録し、Aレコード取得したIPアドレスを設定しておきます。(黒塗りして申し訳ないですが…)

freenom側でもnameserverを設定しておきます。
Services → MyDomains → ManageDomain → Management Tools → Nameserversで設定できます。例なのでE1のところは登録時で変わると思います。

これでドメインとIPの紐付けができたので、後はWebサーバ的な返答を返すものを用意していきます。Goで簡単に動作するものを用意しました。image化についてはこちらを参照してください。

[GCP] GoのコンテナをContainerRegistryに登録して使う
お世話になっております。 しゃまとんです。 KubernetesでGoを使いたいのですが、そのままコードを配置みたいな感じではなく、Doc...

これをPodとして配置したいので、設定ファイルを作ります。雑ですがこんな感じです。
Port:9999でListenし、Serviceで80ポートで通信できるようにしておきます。

最後にkube-legoを使うingressを用意します。設定ファイルはこちら。

こちらを適応させましょう。

実行後、設定されるまでに時間がかかるのでログをみておくと状態がわかるので安心です。
下記コマンドを実行しておいたときのログ例も載せておきます。

これで指定のドメインにアクセスしてみると…

httpsでアクセスすることができました!(ドメインは伏せました)
とりあえずこれでいけそうですね!

以上です。

■ 参考
GKE でサービスを HTTPS と HTTP/2 に対応する(kube-lego 編)
GCP上で独自ドメインを使う
無料のドメインを取得する
GCE(Google Compute Engine)で独自ドメインを設定する