![](/img/trans.png)
[英]How to use iam role when creating aws eks cluster with terraform?
[英]How to use the same IAM role for two node groups in an EKS cluster in Terraform?
上下文:我正在尝试设置流利位以记录集群中包含的多个节点组中的 pod 中的活动。 因此,它要求每个节点组都有一个分配给它的 IAM 角色以及所有必需的策略,因此,fluent bit 的守护程序集可以记录日志并将其保存到云监视中的日志组中。 这是我正在关注的解决方案的回购协议。
我试过什么:
module "eks" {
...
eks_managed_node_groups = {
one = {
create_iam_role = true
iam_role_name = "fluent-bit-logger"
iam_role_use_name_prefix = true
iam_role_description = "Fluent-bit-logging for node group 1"
iam_role_tags = {
Name = "fb-ng-2"
}
two = {
(same config, with obvious naming changes)
}
}
...
}
上述步骤有效,但我正在尝试通过 terraform 的 helm 资源设置流畅的位,并且根据我遵循的解决方案,我只需要输入一个 IAM 节点角色,或者这就是我所做的。
使用eks_managed_node_group_defaults
属性为两个节点组创建并分配相同的IAM 角色,这就是我的做法。
module "eks" {
source = "terraform-aws-modules/eks/aws"
version = "18.26.6"
cluster_name = local.cluster_name
cluster_version = "1.21"
vpc_id = module.vpc.vpc_id
subnet_ids = module.vpc.private_subnets
eks_managed_node_group_defaults = {
ami_type = "AL2_x86_64"
attach_cluster_primary_security_group = true
# Disabling and using externally provided security groups
create_security_group = false
# fluent-bit (IAM-policy-role)
create_iam_role = true
iam_role_name = "fluent-bit-logger"
iam_role_use_name_prefix = false
iam_role_description = "Fluent-bit-logging - default for node groups"
iam_role_tags = {
Name = "fb-ng-default"
}
我期望获得什么成功执行 eks 集群模块的消息(包括两个节点组中预期的公共节点组角色。
我得到的错误
Error: failed creating IAM Role (fluent-bit-logger): EntityAlreadyExists: Role with name fluent-bit-logger already exists.
│ status code: 409, request id: fx11xxax-axex-4xxx-b749-09xx8x8xx17x
│
│ with module.eks-cluster.module.eks.module.eks_managed_node_group["two"].aws_iam_role.this[0],
│ on .terraform/modules/eks-cluster.eks/modules/eks-managed-node-group/main.tf line 431, in resource "aws_iam_role" "this":
│ 431: resource "aws_iam_role" "this" {
错误消息指出您正在尝试创建相同的角色两次,这将导致 AWS API 出错。 给定参数值,这与您的配置一致:
create_iam_role = true
对于两个不同的 EKS 节点组。 您需要将值更改为false
,使用例如aws_iam_role.fluent_bit_logger
管理角色,然后(最佳实践)进行相应更新:
iam_role_name = aws_iam_role.fluent_bit_logger.name
否则,您可以使用您在问题第一部分中共享的配置来管理 EKS 模块声明中的角色。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.