Kubernetes 1.34 → 1.36으로 업그레이드했더니 기존 Ingress들이 모두 IngressClass를 못 찾는 상태가 됐습니다. kubectl get ingress는 멀쩡한데 실제 라우팅이 안 됩니다.
로그에 "no IngressClass available with name 'nginx'"가 떨어집니다. nginx-ingress controller도 정상 동작 중이고 IngressClass 리소스도 있습니다.
1.36에서 뭐가 바뀐 건가요?
댓글 1
1.36에서 Ingress-NGINX가 공식 EOL되었고 (3월 24일), 함께 기본 IngressClass 어노테이션 처리가 바뀌었습니다. 두 가지 동시 점검이 필요합니다.
1) IngressClass 리소스 자체가 살아있는지
업그레이드 과정에서 IngressClass가 사라지거나 controller 라벨이 바뀐 케이스가 의외로 많습니다.
2) Ingress 리소스에 ingressClassName이 명시됐는지
레거시 어노테이션
kubernetes.io/ingress.class: nginx는 1.36에서 더 이상 권장되지 않습니다. 명시적 필드로 바꾸세요.실무 처방:
kubectl get ingress -A -o jsonpath='{range .items[*]}{.metadata.namespace}/{.metadata.name}: {.spec.ingressClassName}{"\n"}{end}'ingressClassName이 비어있는 것들은 helm 또는 kustomize 템플릿 수정controller필드가 실제 동작 중인 컨트롤러와 일치하는지 확인더 큰 그림 — Gateway API 마이그레이션
1.36에서 Gateway API 1.4가 GA됐습니다. 그리고 Ingress-NGINX 자체는 더 이상 새 CVE 패치를 받지 않습니다. 인터넷에 노출된 Ingress-NGINX 인스턴스를 1주 이내에 다음 중 하나로 마이그레이션 권장:
긴급 임시 조치: 외부 노출 차단(WAF·VPN 뒤로 이동) + IngressClass·ingressClassName 정리. 그 다음 Gateway API 전환 일정 잡으세요.