Terraform更新EKS集群endpoint_public_access参数报错求助
解决Terraform更新EKS集群endpoint_public_access时的配置冲突问题
嘿,我来帮你搞定这个Terraform更新EKS集群的问题!咱们先拆解下当前的状况:
问题根源
从你贴的报错和执行计划来看,核心矛盾很明确:
- 你想要把
endpoint_public_access改成false,但Terraform生成的执行计划里,这个参数居然还是true,只打算移除public_access_cidrs里的0.0.0.0/0 - AWS那边直接报错说,集群当前的配置就是
endpointPrivateAccess: false, endpointPublicAccess: true,和Terraform要更新的配置完全一致,所以拒绝执行
这大概率是控制endpoint_public_access的变量没被正确设置成false,或者Terraform的状态文件和AWS实际集群配置不同步了。
一步步排查解决
1. 先确认变量值是不是真的传对了
首先得搞清楚var.endpoint_public_access这个变量实际的值到底是啥。打开Terraform控制台看看:
terraform console # 输入下面这行,回车看结果 var.endpoint_public_access
如果输出是true,那问题就找到了——要么是你在tfvars文件里没把这个变量设成false,要么是命令行传参的时候写错了,或者变量定义里的默认值还是true。
2. 同步Terraform状态和实际集群配置
有时候Terraform的状态文件会和AWS实际的集群配置脱节,先刷新一下状态:
terraform refresh
刷新完再跑一遍计划看看:
terraform plan
如果这时候计划里还是没把endpoint_public_access改成false,那肯定是变量的问题没解决。
3. 直接查AWS集群的真实配置
用AWS CLI直接查集群的VPC配置,确认实际状态:
aws eks describe-cluster --name ec1-default-ics-common-alz-eks-cluster --query 'cluster.resourcesVpcConfig'
看看返回结果里的endpointPublicAccess和endpointPrivateAccess是不是和报错里说的一致。
最终解决步骤
等你把var.endpoint_public_access确实设成false之后,重新执行更新就行:
terraform apply
另外提两个注意点:
- 当你把
endpoint_public_access设为false时,public_access_cidrs这个参数其实会被自动忽略,毕竟公共端点都关了,没必要再限制CIDR范围 - 修改EKS端点配置后,得等个几分钟让配置生效,别着急
额外提醒
- 确保你的IAM角色有
eks:UpdateClusterConfig权限,不然AWS会拒绝你修改配置 - 如果这段代码是在Terraform模块里,要检查上层模块有没有覆盖这个变量的值,导致你设置的
false没生效
内容的提问来源于stack exchange,提问作者shamon shamsudeen
相关产品推荐
相关产品推荐

