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