通过Terraform部署EKS上的Nginx Ingress Controller失败求助
解决EKS 1.24+集群中Nginx Ingress Controller CrashLoopBackOff问题
问题根源
- 你的EKS集群版本为1.24+,而Kubernetes从1.22版本开始已彻底移除
networking.k8s.io/v1beta1和extensions/v1beta1的Ingress API定义。 - 当前使用的
ingress-nginxHelm chart版本3.30.0对应控制器版本v0.46.0,该版本仅支持已废弃的v1beta1.Ingress资源,无法适配1.24+集群的API规范,因此触发failed to list *v1beta1.Ingress错误,导致Pod进入CrashLoopBackOff状态。
Terraform修复方案
直接升级ingress-nginx Helm chart至支持Kubernetes 1.24+的版本(推荐4.x系列及以上,这些版本的控制器已适配networking.k8s.io/v1 Ingress API)。
修改后的helm_release资源配置
resource "helm_release" "nginx_ingress" { namespace = kubernetes_namespace.test.metadata.0.name wait = true timeout = 600 name = "ingress-nginx" repository = "https://kubernetes.github.io/ingress-nginx" chart = "ingress-nginx" # 使用兼容K8s 1.24+的chart版本,示例为4.10.0(可根据需求选择更高兼容版本) version = "4.10.0" # 可选:若需要自定义控制器配置,可添加values块引入配置文件 # values = [ # file("${path.module}/ingress-values.yaml") # ] }
操作步骤
- 清理已失败的Helm发布(若Terraform状态已记录该失败资源):
helm uninstall ingress-nginx -n test
- 替换Terraform代码中
helm_release的version字段为兼容版本 - 重新执行部署:
terraform init terraform apply
额外说明
- 通常chart 4.x对应控制器v1.0+,适配K8s 1.19+;chart 5.x对应控制器v1.6+,适配K8s 1.21+,可根据集群版本选择合适范围。
- 若有自定义配置,需确保配置项与新版本chart的参数兼容。
内容的提问来源于stack exchange,提问作者nocnoc
相关产品推荐
相关产品推荐

