【问题标题】:AWS CDK: tagging existing subnetsAWS CDK:标记现有子网
【发布时间】:2020-02-04 21:18:28
【问题描述】:

我正在尝试使用 Java 中的 AWS cdk 构建 AWS EKS 集群。

我们有一个现有的 VPC 和子网,需要获取一些 Kubernetes 标签,例如 kubernetes.io/role/internal-elb=1 等。

我可以通过以下方式获取 vpc 来获取 ISubnet:

IVpc vpc = Vpc.fromVpcAttributes(this, "my-vpc", vpcAttributes);
List<ISubnet> subnets = vpc.getPrivateSubnets();

subnets.forEach(iSubnet -> Tag.add(iSubnet, "kubernetes.io/role/internal-elb", "1"));

awscdk.core.Tag.add() 期待一个构造,我没有创建它,因为子网已经存在。

也试过这里的例子:https://docs.aws.amazon.com/de_de/cdk/latest/guide/tagging.html

private void addTagToAllVPCSubnets(Tag tag) {
    TagProps includeOnlySubnets = TagProps.builder()
        .includeResourceTypes(singletonList("AWS::EC2::Subnet"))
        .build();

    Tag.add(this, tag.getKey(), tag.getValue(), includeOnlySubnets);
}

...但我仍然看不到cdk synth 的 CF yaml 中的任何新标签。

任何帮助将不胜感激!

【问题讨论】:

    标签: kubernetes aws-cdk amazon-eks


    【解决方案1】:

    您可以使用支持 lambda 的自定义资源自动完成。

    【讨论】:

      【解决方案2】:

      目前这似乎是 CDK 的一个限制。这是 CDK 中的 EKS 构造应处理的问题,但目前无法解决,如 CDK 部署期间的警告所示:

      [Warning at /stack/some-project-EKS-cluster] Could not auto-tag private subnets with "kubernetes.io/role/internal-elb=1", please remember to do this manually
      

      出于同样的原因,这不能自动完成,你不能使用Tag.add()来完成。

      由于 CDK 中的 EKS 模块仍处于试验/开发预览阶段,您现在有三个选择:

      1. 等待完整版本,其中可能包括自动子网标记。
      2. 通过 CDK 创建您自己的 VPC,它允许您标记自己的子网。
      3. 通过 AWS 控制台中的 VPC 服务接口手动编辑现有子网

      一个好主意可能是在 AWS CDK Github 上创建一个问题,并请求将现有子网(以及一般其他现有结构)标记为一项功能。我在他们的 Github 上找不到与此相关的其他问题。

      【讨论】:

      • 我不确定 CloudFormation 是否可以做到这一点?我猜它是 CF 问题,而不是 CDK。我最终用 aws cli 作为脚本标记了子网。 1 和 2 仍然不是我们的选择。
      猜你喜欢
      • 1970-01-01
      • 2020-04-26
      • 1970-01-01
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-28
      • 1970-01-01
      相关资源
      最近更新 更多