Kubernetes 1.22中AWS ALB Ingress Terraform读取资源报错求助
问题原因及解决方案
核心问题
报错the server could not find the requested resource (get ingresses.extensions my-ingress)的本质是:Terraform的kubernetes_ingress数据源正在调用Kubernetes 1.22已移除的extensions API组。
Kubernetes 1.22正式删除了extensions/v1beta1、extensions/v1版本的Ingress API,仅保留networking.k8s.io/v1作为标准Ingress API。你的Ingress配置已正确使用networking.k8s.io/v1,但Terraform数据源仍在尝试从旧API组读取资源。
解决步骤
1. 升级Terraform Kubernetes Provider
确保你的Terraform Kubernetes Provider版本不低于v2.0.0——该版本开始原生支持networking.k8s.io/v1版本的Ingress资源。在你的Terraform配置中更新provider约束:
terraform { required_providers { kubernetes = { source = "hashicorp/kubernetes" version = ">= 2.0.0" } } }
执行terraform init -upgrade完成版本升级。
2. 显式指定Ingress数据源的API版本
在data "kubernetes_ingress" "sticky_ingresses"块中添加api_version字段,明确指定使用networking.k8s.io/v1:
data "kubernetes_ingress" "sticky_ingresses" { provider = kubernetes.local api_version = "networking.k8s.io/v1" # 新增该行,指定正确API版本 for_each = local.present && !local.service.maintenance ? local.service.sticky_services : {} metadata { name = each.value namespace = local.app_namespace } }
验证
修改后执行terraform plan,确认报错消失,数据源可正常读取networking.k8s.io/v1版本的Ingress资源。
内容的提问来源于stack exchange,提问作者Kurse
相关产品推荐
相关产品推荐

