使用 Terraform 为 EKS 创建身份映射
Create an identity mapping for EKS with Terraform
我目前正在使用 EKSCTL 配置我的 EKS cluster/s,我想使用 Terraform 来配置 cluster/s。我正在使用 Terraform EKS 模块创建集群。我已经使用 EKSCTL 通过以下命令创建身份映射
eksctl create iamidentitymapping -- region us-east-1 --cluster stage-cluster --arn arn:aws:iam::111222333444:role/developer --username dev-service
我想通过以下方式将此命令转换为 Terraform,但这不是最佳方式
resource "null_resource" "eks-identity-mapping" {
depends_on = [
module.eks,
aws_iam_policy_attachment.eks-policy-attachment
]
provisioner "local-exec" {
command = <<EOF
eksctl create iamidentitymapping \
--cluster ${var.eks_cluster_name} \
--arn ${data.aws_iam_role.mwaa_role.arn} \
--username ${var.mwaa_username} \
--profile ${var.aws_profile} \
--region ${var.mwaa_aws_region}
EOF
}
}
如何使用 Kubernetes 提供程序来实现此目的
我还没有找到与此特定命令明确匹配的结果,但您可以通过在 kubernetes 中设置 aws-auth
配置映射、添加所有 users/roles 及其访问权限来实现类似的效果一气呵成。
例如,我们使用类似下面的内容来为我们的集群提供管理员列表:
resource "kubernetes_config_map" "aws_auth" {
metadata {
name = "aws-auth"
namespace = "kube-system"
}
data = {
mapRoles = <<CONFIGMAPAWSAUTH
- rolearn: ${var.k8s-node-iam-arn}
username: system:node:{{EC2PrivateDNSName}}
groups:
- system:bootstrappers
- system:nodes
- rolearn: arn:aws:iam::111222333444:role/developer
username: dev-service
groups:
- system:masters
CONFIGMAPAWSAUTH
}
}
请注意,此文件包含所有角色映射,因此您应确保将 var.k8s-node-iam-arn
设置为集群的超级用户,否则您可能会被锁定。您还必须设置这些角色将获得的访问权限。
您还可以添加特定的 IAM 用户而不是角色:
- userarn: arn:aws:iam::1234:user/user.first
username: user.first
groups:
- system:masters
我目前正在使用 EKSCTL 配置我的 EKS cluster/s,我想使用 Terraform 来配置 cluster/s。我正在使用 Terraform EKS 模块创建集群。我已经使用 EKSCTL 通过以下命令创建身份映射
eksctl create iamidentitymapping -- region us-east-1 --cluster stage-cluster --arn arn:aws:iam::111222333444:role/developer --username dev-service
我想通过以下方式将此命令转换为 Terraform,但这不是最佳方式
resource "null_resource" "eks-identity-mapping" {
depends_on = [
module.eks,
aws_iam_policy_attachment.eks-policy-attachment
]
provisioner "local-exec" {
command = <<EOF
eksctl create iamidentitymapping \
--cluster ${var.eks_cluster_name} \
--arn ${data.aws_iam_role.mwaa_role.arn} \
--username ${var.mwaa_username} \
--profile ${var.aws_profile} \
--region ${var.mwaa_aws_region}
EOF
}
}
如何使用 Kubernetes 提供程序来实现此目的
我还没有找到与此特定命令明确匹配的结果,但您可以通过在 kubernetes 中设置 aws-auth
配置映射、添加所有 users/roles 及其访问权限来实现类似的效果一气呵成。
例如,我们使用类似下面的内容来为我们的集群提供管理员列表:
resource "kubernetes_config_map" "aws_auth" {
metadata {
name = "aws-auth"
namespace = "kube-system"
}
data = {
mapRoles = <<CONFIGMAPAWSAUTH
- rolearn: ${var.k8s-node-iam-arn}
username: system:node:{{EC2PrivateDNSName}}
groups:
- system:bootstrappers
- system:nodes
- rolearn: arn:aws:iam::111222333444:role/developer
username: dev-service
groups:
- system:masters
CONFIGMAPAWSAUTH
}
}
请注意,此文件包含所有角色映射,因此您应确保将 var.k8s-node-iam-arn
设置为集群的超级用户,否则您可能会被锁定。您还必须设置这些角色将获得的访问权限。
您还可以添加特定的 IAM 用户而不是角色:
- userarn: arn:aws:iam::1234:user/user.first
username: user.first
groups:
- system:masters