【问题标题】:How to modify the `aws-auth` Config Map after creating EKS with Pulumi?使用 Pulumi 创建 EKS 后如何修改 `aws-auth` Config Map?
【发布时间】:2021-11-24 23:24:25
【问题描述】:

上下文

我为 EKS 配置了额外的 IAM 资源(角色、策略、策略附件),这些资源定义了对集群的管理员访问权限。如果我正确理解了 Pulumi 文档,则需要将创建的角色 ARN 附加到 aws-auth 配置映射。此配置映射在创建 EKS 时启动。我希望能够使用角色更新它,或者在它被 Amazon 引导后将其删除,然后重新创建它。

我所做的进一步尝试是尝试使用 Pulumi 创建配置映射,并将集群作为依赖项。但是,我偶尔会看到 Pulumi 尝试在集群启动并失败之前创建它。再次重新运行pulumi up 然后无法再次创建该地图,因为亚马逊已经创建了一个。我目前的解决方案是等到亚马逊管理的aws-auth Config Map 被创建后,将其删除,然后尝试使用 Pulumi 创建我自己的。

问题

  1. 这个问题有更简单的解决方案吗?

  2. 是否有任何 Pulumi-native 变量我可以读取以发现当前运行是否为 preview?在preview期间,我不想读取Config Map(因为集群还不存在)。

感谢广告

【问题讨论】:

    标签: amazon-eks pulumi infrastructure-as-code


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2021-11-14
      • 2020-03-28
      • 2021-07-08
      • 2019-10-09
      • 1970-01-01
      • 2015-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多