【问题标题】:How to create an EKS cluster with public and private subnets using terraform?如何使用 terraform 创建具有公共子网和私有子网的 EKS 集群?
【发布时间】:2020-12-09 15:05:21
【问题描述】:

我正在使用 terraform 来设置 EKS 集群,我需要确保我的工作节点将放置在私有子网上,并且我的公共子网将用于我的负载均衡器,但我实际上并不知道如何在我的集群中注入公有和私有子网,因为我只使用私有子网。

resource "aws_eks_cluster" "master_node" {
    name     = "my-cluster"
    role_arn = aws_iam_role.master_iam_role.arn
    version  = "1.14"
    vpc_config {
        security_group_ids      = [aws_security_group.master_security_group.id]
        subnet_ids              = var.private_subnet_eks_ids
    }

    depends_on = [
        aws_iam_role_policy_attachment.main-cluster-AmazonEKSClusterPolicy,
        aws_iam_role_policy_attachment.main-cluster-AmazonEKSServicePolicy,
    ]
}

resource "aws_autoscaling_group" "eks_autoscaling_group" {
    desired_capacity     = var.desired_capacity
    launch_configuration = aws_launch_configuration.eks_launch_config.id
    max_size             = var.max_size
    min_size             = var.min_size
    name                 = "my-autoscaling-group"
    vpc_zone_identifier  = var.private_subnet_eks_ids
    depends_on = [
        aws_efs_mount_target.efs_mount_target
    ]
}

【问题讨论】:

  • 负载均衡器是指 ALB/NLB 入口吗?还是您的意思是其他形式的入口?
  • 我的意思是当我在这个集群中创建服务时,我希望能够将其类型更改为公共负载均衡器

标签: amazon-web-services terraform terraform-provider-aws amazon-eks


【解决方案1】:

我使用vpc module 在 VPC 上创建公共子网和私有子网。然后我使用eks module 创建 EKS 集群并引用 vpc-data。

例子

module "vpc" {
  source = "terraform-aws-modules/vpc/aws"

  name = "my-vpc"
  cidr = "10.0.0.0/16"

  azs             = ["eu-north-1a", "eu-north-1b", "eu-north-1c"]
  private_subnets = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"]
  public_subnets  = ["10.0.101.0/24", "10.0.102.0/24", "10.0.103.0/24"]

  enable_nat_gateway = true
  enable_vpn_gateway = true
}

然后是 EKS 集群,我使用 module.vpc.private_subnetsmodule.vpc.vpc_id 引用 VPC 子网:

module "eks-cluster" {
  source               = "terraform-aws-modules/eks/aws"
  cluster_name         = "my-eks-cluster"
  cluster_version      = "1.17"
  subnets              = module.vpc.private_subnets
  vpc_id               = module.vpc.vpc_id

  worker_groups = [
    {
      instance_type = "t3.small"
      asg_max_size  = 2
    } 
  ]
}

【讨论】:

    【解决方案2】:

    只为您的 eks 集群提供私有子网,但在此之前,请确保您已标记公有子网:

    Key: kubernetes.io/role/elb
    value: 1
    

    如此处所述:https://aws.amazon.com/premiumsupport/knowledge-center/eks-vpc-subnet-discovery/

    EKS 将发现放置负载均衡器的公共子网,通过标签进行查询。

    【讨论】:

      猜你喜欢
      • 2020-03-03
      • 1970-01-01
      • 2020-10-17
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      • 2019-05-30
      • 1970-01-01
      • 2018-07-18
      相关资源
      最近更新 更多