Difference between revisions of "Terraform EKS submodule: eks managed node groups"

From wikieduonline
Jump to navigation Jump to search
Line 62: Line 62:
  
  
 +
<pre>
 +
module "eks_managed_node_group" {
 +
  source = "terraform-aws-modules/eks/aws//modules/eks-managed-node-group"
  
 +
  name            = "separate-eks-mng"
 +
  cluster_name    = "my-cluster"
 +
  cluster_version = "1.24"
 +
 +
  subnet_ids = ["subnet-abcde012", "subnet-bcde012a", "subnet-fghi345a"]
 +
 +
  // The following variables are necessary if you decide to use the module outside of the parent EKS module context.
 +
  // Without it, the security groups of the nodes are empty and thus won't join the cluster.
 +
  cluster_primary_security_group_id = module.eks.cluster_primary_security_group_id
 +
  vpc_security_group_ids            = [module.eks.node_security_group_id]
 +
 +
  // Note: `disk_size`, and `remote_access` can only be set when using the EKS managed node group default launch template
 +
  // This module defaults to providing a custom launch template to allow for custom security groups, tag propagation, etc.
 +
  // use_custom_launch_template = false
 +
  // disk_size = 50
 +
  //
 +
  //  # Remote access cannot be specified with a launch template
 +
  //  remote_access = {
 +
  //    ec2_ssh_key              = module.key_pair.key_pair_name
 +
  //    source_security_group_ids = [aws_security_group.remote_access.id]
 +
  //  }
 +
 +
  min_size    = 1
 +
  max_size    = 10
 +
  desired_size = 1
 +
 +
  instance_types = ["t3.large"]
 +
  capacity_type  = "SPOT"
 +
 +
  labels = {
 +
    Environment = "test"
 +
    GithubRepo  = "terraform-aws-eks"
 +
    GithubOrg  = "terraform-aws-modules"
 +
  }
 +
 
 +
  [[taints]] = {
 +
    dedicated = {
 +
      key    = "dedicated"
 +
      value  = "gpuGroup"
 +
      effect = "[[NO_SCHEDULE]]"
 +
    }
 +
  }
 +
 
 +
  tags = {
 +
    Environment = "dev"
 +
    Terraform  = "true"
 +
  }
 +
}
  
 
== Related ==
 
== Related ==

Revision as of 09:02, 20 March 2023

Terraform EKS module: eks_managed_node_groups


module.eks_managed_node_group


module.eks_managed_node_group

instance_type

instance_types

use_custom_launch_template
fargate_profiles
eks_managed_node_group_defaults

Examples

eks_managed_node_groups = {
  one = {
    name = "node-group-1"

    instance_types = ["t3.small"]

    min_size     = 1
    max_size     = 3
    desired_size = 2       # https://github.com/terraform-aws-modules/terraform-aws-eks/blob/master/docs/faq.md#why-are-there-no-changes-when-a-node-groups-desired_size-is-modified

    pre_bootstrap_user_data = <<-EOT
    echo 'foo bar'
    EOT

    vpc_security_group_ids = [
      aws_security_group.node_group_one.id
    ]
  }

  two = {
    name = "node-group-2"

    instance_types = ["t3.medium"]

    min_size     = 1
    max_size     = 2
    desired_size = 1
 
    pre_bootstrap_user_data = <<-EOT
    echo 'foo bar'
    EOT

    vpc_security_group_ids = [
      aws_security_group.node_group_two.id
    ]
  }
}


module "eks_managed_node_group" {
  source = "terraform-aws-modules/eks/aws//modules/eks-managed-node-group"

  name            = "separate-eks-mng"
  cluster_name    = "my-cluster"
  cluster_version = "1.24"

  subnet_ids = ["subnet-abcde012", "subnet-bcde012a", "subnet-fghi345a"]

  // The following variables are necessary if you decide to use the module outside of the parent EKS module context.
  // Without it, the security groups of the nodes are empty and thus won't join the cluster.
  cluster_primary_security_group_id = module.eks.cluster_primary_security_group_id
  vpc_security_group_ids            = [module.eks.node_security_group_id]

  // Note: `disk_size`, and `remote_access` can only be set when using the EKS managed node group default launch template
  // This module defaults to providing a custom launch template to allow for custom security groups, tag propagation, etc.
  // use_custom_launch_template = false
  // disk_size = 50
  //
  //  # Remote access cannot be specified with a launch template
  //  remote_access = {
  //    ec2_ssh_key               = module.key_pair.key_pair_name
  //    source_security_group_ids = [aws_security_group.remote_access.id]
  //  }

  min_size     = 1
  max_size     = 10
  desired_size = 1

  instance_types = ["t3.large"]
  capacity_type  = "SPOT"

  labels = {
    Environment = "test"
    GithubRepo  = "terraform-aws-eks"
    GithubOrg   = "terraform-aws-modules"
  }
  
  taints = {
    dedicated = {
      key    = "dedicated"
      value  = "gpuGroup"
      effect = "NO_SCHEDULE"
    }
  }
  
  tags = {
    Environment = "dev"
    Terraform   = "true"
  }
 }

Related

* eks-cluster.tf * FAQ: https://github.com/terraform-aws-modules/terraform-aws-eks/blob/master/docs/faq.md#why-are-there-no-changes-when-a-node-groups-desired_size-is-modified * taints

See also

* Terraform EKS module: manage_aws_auth_configmap, create_aws_auth_configmap, aws_auth_roles, aws_auth_users, aws_auth_accounts, module.eks, Amazon EKS Blueprints for Terraform, OIDC

Advertising: