KubernetesでWordPressを公開するときにハマったこと

GKEのチュートリアルに従って作ったWordPressサイトを独自ドメインで公開しようとしてめちゃくちゃハマりました。

やろうとしたこと
  1. GKEのチュートリアルに従ってWordPressサイトを構築
  2. Ingressで固定IPとTLSを設定して公開
ハマったポイント

サイトを構築するところまでは問題なくできていたのですが、Ingressを設定するとサイトが開けなくなってしまいました。
まだ勉強中のKubernetes周りの設定を疑ってIngressはもちろんServiceやPodのyamlファイルをいろいろと書き換えてみたりしたのですが、うまくいかず…
リソースが不足しているのかと疑ってNodeの数を増やしてみたりマシンタイプを変更してみたりしましたが、それでもうまくいかず…

でもよく考えてみるとIngressを使わずにServiceのTCPロードバランサで公開したときはきちんと表示されていました。
ということはIngressの設定が間違っているのか?でもこの段階ではIngressもそんなにややこしい設定をしているわけではありませんでした。

で、結局行き着いたのがQiitaのこの記事。

WordPressの一般設定から間違ってwordpress アドレス (url) とサイトアドレス (URL)を入力した場合の2つの解決方法。

要はWordPressの設定の問題でした…

得られた知見

今回はGKEのチュートリアルに沿って進めていたこともあり、TCPロードバランサでServiceを公開した時点でWordPressを開いてインストールをしてしまっていたのですが、そうするとWordPressの一般設定でwordpressアドレスとサイトアドレスの項目が自動的にKubernetesが取得したIPに設定されることになります。
その状態でロードバランサをTCPからIngressに切り替えてGCPで予約した固定IPを指定して公開してしまうとWordPressで設定されたアドレスと実際のアドレスが異なるため、WordPressのダッシュボードすら開けないという状態になってしまったということでした。
そこで、先程のリンク先の記事を参考にPodの中のファイルを直接編集するとサイトが正常に表示されるようになりました。

これは結構あるあるかなと思うのですが、ハマったときにまず勉強中だったり使い慣れていない部分を疑ってしまって、結局解決してみると普段から使い慣れているところだったりものすごく単純なところに問題があったというパターンでした。
でも、おかげでKubernetesのドキュメントを読み込むことができました…汗
それから、Ingressの設定が反映されるまでに結構時間がかかるというのも今後に活かしていきたい知見かなと思います。

この後、IngressでTLSを設定して無事HTTPSのサイトを公開することができました。
その際にTLS証明書の自動管理も実装したのでそのあたりはまた後日書いてみたいと思います。