💡
GKE Ingressでマネージド SSL 証明書を使う際にハマった点
ハマったこと
kubectl describe ingress ingress名
でエラーはでていない。
kubectl get ingress
で静的IPとドメイン名の紐付けができていることも確認。
GCP側でLoad Balancerも作成されヘルスチェックは通っている。
しかし、目的のURLではThere was a problem with your request. Error code 11
と表示されている
原因
マネージドSSL証明書を作成し、時間が経った後にingress作成したため、マネージドSSLのプロビジョニングの再試行が行われていないのが原因だった。
マネージドSSL証明書の仕様として、
- DNSとロードバランサが適切に構築されている必要がある
- されていない場合、
PROVISIONING_FAILED
ステータスの状態で、一定の再試行が行われる - その後、
PROVISIONING_FAILED_PERMANENTLY
ステータスに移行され、プロビジョニングの再試行が行われなくなる。
そのため
- terraformでマネージドSSL証明書を作成
- しばらく放置
- ingressを作成する
ということをすると、しばらく放置している間に、マネージドSSL証明書のプロビジョニングが失敗しづづける。そして、PROVISIONING_FAILED_PERMANENTLY
ステータスに移行されており、ingressを作成した後も再試行がされないので、目的のURLにアクセスできないということがおきる。
解決方法としては、既存のマネージドSSL証明書を削除 or 新しいマネージドSSL証明書を作成し、プロビジョニングを行う必要がある。
補足
ロードバランサ(フロントエンド)のIPアドレスとレコードセットのIPv4アドレスが一致していない場合にも、同じようなエラーがでるらしい。(自分はぶつかっていない)
Discussion