💡

GKE Ingressでマネージド SSL 証明書を使う際にハマった点

2022/11/08に公開

ハマったこと

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ステータスに移行され、プロビジョニングの再試行が行われなくなる。

https://cloud.google.com/load-balancing/docs/ssl-certificates/troubleshooting?hl=ja

そのため

  1. terraformでマネージドSSL証明書を作成
  2. しばらく放置
  3. ingressを作成する

ということをすると、しばらく放置している間に、マネージドSSL証明書のプロビジョニングが失敗しづづける。そして、PROVISIONING_FAILED_PERMANENTLYステータスに移行されており、ingressを作成した後も再試行がされないので、目的のURLにアクセスできないということがおきる。

解決方法としては、既存のマネージドSSL証明書を削除 or 新しいマネージドSSL証明書を作成し、プロビジョニングを行う必要がある。

補足

ロードバランサ(フロントエンド)のIPアドレスとレコードセットのIPv4アドレスが一致していない場合にも、同じようなエラーがでるらしい。(自分はぶつかっていない)

Discussion