微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用terraform创建具有公共和私有子网的EKS集群?

如何解决如何使用terraform创建具有公共和私有子网的EKS集群?

我正在使用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
    ]
}

解决方法

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

示例

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
    } 
  ]
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。