我想将通过aws_iam_policy创建的策略附加到节点组NodeInstanceRole,到目前为止,我遇到的唯一允许我这样做的事情(如果我正确理解的话(是以下代码:
resource "aws_iam_role_policy_attachment" "additional" {
for_each = {
for node_group, group_details in module.eks.eks_managed_node_groups : node_group => group_details
# We have to add if condition as the module output contains all node names,
# even if they are not created.
if group_details.iam_role_name != ""
}
policy_arn = aws_iam_policy.s3_write_policy.arn
role = each.value.iam_role_name
}
这是来自https://github.com/terraform-aws-modules/terraform-aws-eks/issues/2053,这是要走的路吗?,或者有更好的方法将我的策略添加到EKS集群的节点组角色中吗?
我知道如何将政策附加到角色上,这不是这里的问题,我的问题是获得角色的名称。
这就是我最终解决这个问题的方法,我创建了两个模块在eks_cluster和iam_policy中,在eks_cluster模块的一个.tf文件中,我如下输出eks_managed_node_group的iam_role_name,请注意,我只有其中一个:
output "nodegroup_iam_role" {
value = module.eks.eks_managed_node_groups["one"].iam_role_name
}
然后,我将其传递到iam_policy模块,并在aws_iam_role_policy_attachment资源内为此分配策略ARN。