世界のやまさ

SEKAI NO YAMASA

Kubernetes NGINX Ingress Controller v1.0.0 で 404 エラーになる問題の対処

問題

AKS 上で NGINX Ingress Controller を使っていて、 v1.0.0 にアップグレードしたらサイトが404エラーになってしまった。

f:id:nnasaki:20210928114758p:plain
404

解析

ログを見ると以下エラーが出ていた。ingress class のバリデートでエラーが出たから Ingress を無効化したらしい。

I0927 15:01:58.774073 6 store.go:361] "Ignoring ingress because of error while validating ingress class" ingress="mvp-staging/sitecore-ingress" error="ingress does not contain a valid IngressClass"

f:id:nnasaki:20210928115240p:plain
エラーログ

結構重要なログだと思うので Info じゃなくて、 Error 以上で出してほしい。。。

原因

NGINX Ingress Controller v1.0.0 から ingressClass オブジェクト が必須となったため。

対処

annotationskubernetes.io/ingress.class: "nginx" を追加。

f:id:nnasaki:20210928120417p:plain
対処例

本来であれば ingressClass オブジェクトを追加するほうが良いらしいが、ひとまずこれで動く。

本問題とは別だが、対処例の apiVersionnetworking.k8s.io/v1 とするのが適切。

まとめ

Kubernetes のバージョン以外に、NGINX Ingress Controller のバージョンアップでもこういった躓きポイントがあるのでしっかりした検証が必要と再認識した。

プロダクション環境ではこういった部分もリリース後の確認、失敗時の切り戻し手順などを確立しておきたい。

参考サイト

github.com

forum.linuxfoundation.org

kubernetes.github.io