GCPのHTTP(S)ロードバランサー設定中に、SSL証明がうまく発行されない+ロードバランサーが立たないという二重のトラブルに遭遇しました。
その原因と対策を備忘録としてまとめておきます。
結論
- リージョンは「グローバル」を選ぶ
- 「HTTPからHTTPSへリダイレクト」のチェック外す
ハマったポイント①:リージョンが単一リージョン
デフォルトでリージョンを「単一(Regional)」にしてしまうと、従来の方法でSSL証明書が発行できないのでちょっと手間になります。
GCPのGoogle Managed SSL Certificateはグローバルロードバランサーに対応していて、単一を選ぶと「Google マネージドの証明書を作成するグレーアウト」して選択できなくなってしまいます。
単一リージョンでもできないことはないです。証明書を発行してドメインにCNAMEレコードを渡してDNS認証をすれば承認されます。今回、ドメインを取得していたのが他社さんだったので余計なやり取りを発生させたくない背景がありました。。。
ハマったポイント②:「HTTP→HTTPS」リダイレクトのチェック
SSL証明以前にロードバランサーの構築自体がエラーで止まるケース。
諸々の設定が終わり完了ボタンを押すと、しばらくしたのちGCPが以下のようなエラーを吐きました
Invalid value for field 'resource.IPAddress': 'projects/hogehoge/global/addresses/hoeghoge-ip'. Specified IP address is in-use and would result in a conflict.
指定したIPアドレスは他で使われているので、使い回すと問題が起きる的なことを言ってます。
他のプロジェクトでこのIPアドレスを使ってるわけでもなく、ポートは:80と:443で分けているので問題はないはずですが...これに関しては原因がよくわかりませんでした
これが原因でエラーが起きてるとは思わずめちゃくちゃ時間食われました
ファイル内の処理でリダイレクトすれば問題ないのでチェックは外して構成することにしました
まとめ
| 問題 | 原因 | 対策 |
|---|---|---|
| SSL証明の発行がめんどいことになってる | 単一リージョン指定 | グローバルロードバランサーを使う |
| ロードバランサーが構築できない | HTTP→HTTPSリダイレクト設定によるエラー | チェックを外す |
さいごに
GCPのロードバランサーまわりはUIが整っているように見えて、細かい設定の落とし穴が多い印象を受けました。
自分と同じように「構築できない」「SSLが生えない」人の助けになれば幸いです。
