使用 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?的主要内容,如果未能解决你的问题,请参考以下文章

Pulumi 输出 - 创建一个外部配置文件

如何使用 Pulumi 在存储帐户上启用 Azure Defender?

Pulumi 如何在 Windows 环境中设置

Pulumi Stack 命令不能找到默认的 Stack

是否可以使用 Pulumi 创建 Azure 服务主体?

如何将 Pulumi Azure 资源迁移到 Azure-Nextgen?