使用 Pulumi 创建 EKS 后如何修改 `aws-auth` Config Map?
Posted
技术标签:
【中文标题】使用 Pulumi 创建 EKS 后如何修改 `aws-auth` Config Map?【英文标题】:How to modify the `aws-auth` Config Map after creating EKS with Pulumi? 【发布时间】:2021-11-24 23:24:25 【问题描述】:上下文
我为 EKS 配置了额外的 IAM 资源(角色、策略、策略附件),这些资源定义了对集群的管理员访问权限。如果我正确理解了 Pulumi 文档,则需要将创建的角色 ARN 附加到 aws-auth
配置映射。此配置映射在创建 EKS 时启动。我希望能够使用角色更新它,或者在它被 Amazon 引导后将其删除,然后重新创建它。
我所做的进一步尝试是尝试使用 Pulumi 创建配置映射,并将集群作为依赖项。但是,我偶尔会看到 Pulumi 尝试在集群启动并失败之前创建它。再次重新运行pulumi up
然后无法再次创建该地图,因为亚马逊已经创建了一个。我目前的解决方案是等到亚马逊管理的aws-auth
Config Map 被创建后,将其删除,然后尝试使用 Pulumi 创建我自己的。
问题
这个问题有更简单的解决方案吗?
是否有任何 Pulumi-native 变量我可以读取以发现当前运行是否为 preview
?在preview
期间,我不想读取Config Map(因为集群还不存在)。
感谢广告
【问题讨论】:
【参考方案1】:aws-auth
配置映射是在您的集群创建之后,但在您的节点连接之前创建的。
这意味着你可以定义一个没有任何节点的集群,并且aws-auth
configmap 不存在:
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
import * as awsx from "@pulumi/awsx";
const vpc = awsx.ec2.Vpc.getDefault();
const role = new aws.iam.Role("eks",
assumeRolePolicy: aws.iam.assumeRolePolicyForPrincipal( Service: "eks.amazonaws.com" ),
)
new aws.iam.RolePolicyAttachment("eks-service-policy",
role: role.id,
policyArn: "arn:aws:iam::aws:policy/AmazonEKSServicePolicy"
)
new aws.iam.RolePolicyAttachment("eks-cluster-policy",
role: role.id,
policyArn: "arn:aws:iam::aws:policy/AmazonEKSClusterPolicy",
)
const cluster = new aws.eks.Cluster("eks",
roleArn: role.arn,
vpcConfig:
publicAccessCidrs: [ "0.0.0.0/0" ],
subnetIds: vpc.publicSubnetIds,
)
如果你在apply里面创建了aws-auth
configmap一次,集群就创建好了,你可以在自动生成之前创建你自己的aws-auth
configmap:
const auth = cluster.endpoint.apply(endpoint =>
new k8s.core.v1.ConfigMap("aws-auth",
metadata:
name: "aws-auth"
))
然后,在定义节点时,您将在 auth
常量上使用 dependsOn
创建节点。
问题在于,使用 Pulumi 在 apply
内创建资源可能意味着 preview
操作不准确。考虑到所有这些,我建议只使用 pulumi-eks
包,它允许您将 roleMappings 设置为集群创建的一部分:https://www.pulumi.com/registry/packages/eks/api-docs/cluster/#rolemappings_nodejs
【讨论】:
以上是关于使用 Pulumi 创建 EKS 后如何修改 `aws-auth` Config Map?的主要内容,如果未能解决你的问题,请参考以下文章