configmaps“aws-auth”已经存在
Posted
技术标签:
【中文标题】configmaps“aws-auth”已经存在【英文标题】:configmaps "aws-auth" already exists 【发布时间】:2021-12-20 16:51:55 【问题描述】:我正在使用 this 模块创建三个 EKS 集群。一切正常,只是当我尝试使用 map_roles
将 configmap 添加到集群时,我遇到了问题。
我的配置看起来像这样,我在所有三个集群中都有它
map_roles = [
rolearn = "arn:aws:iam::$var.account_no:role/argo-$var.environment-$var.aws_region"
username = "system:node:EC2PrivateDNSName"
groups = ["system:bootstrappers","system:nodes"]
,
rolearn = "arn:aws:sts::$var.account_no:assumed-role/$var.assumed_role_1"
username = "admin"
groups = ["system:masters","system:nodes","system:bootstrappers"]
,
rolearn = "arn:aws:sts::$var.account_no:assumed-role/$var.assumed_role_2"
username = "admin"
groups = ["system:masters","system:nodes","system:bootstrappers"]
]
应用模板时出现问题。它说
configmaps "aws-auth" already exists
当我进一步研究该错误时,我意识到在应用模板时,该模块会创建三个同名的 configmap 资源,例如这些
resource "kubernetes_config_map" "aws_auth"
# ...
resource "kubernetes_config_map" "aws_auth"
# ...
resource "kubernetes_config_map" "aws_auth"
# ...
这显然是个问题。我该如何解决这个问题?
【问题讨论】:
EKS 模块只创建一个配置映射,所以我猜您正在尝试使用模块上的计数在同一个 TF 文件中创建 3 个集群。问题是你需要 3 个 kubernetes 提供者指向每个集群,但不确定这个模块是否可行。 【参考方案1】:aws-auth 配置映射由 EKS 在您创建托管节点池时创建。它具有节点向控制平面注册所需的配置。如果你想用 Terraform 控制 configmap 的内容,你有两个选择。
要么确保在托管节点池资源之前创建配置映射。或者手动将现有的配置映射导入 Terraform 状态。
【讨论】:
我自己用其他方法避开了这个问题。但是,如果您认为您的答案是合法的,那么最好用更多的细节/步骤来分解它。以上是关于configmaps“aws-auth”已经存在的主要内容,如果未能解决你的问题,请参考以下文章
ConfigMap 数据(yml 格式) - Kubernetes