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

From wikieduonline
Jump to navigation Jump to search
 
(33 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[Terraform EKS module]]: <code>eks_managed_node_groups</code>
+
[[Terraform EKS module]]: <code>eks_managed_node_groups</code> submodule and
 +
* <code>[[eks_managed_node_group_defaults]]</code> <code>[[eks_managed_node_group]]</code> input from [[Terraform EKS module]]
  
 
* Submodule: https://registry.terraform.io/modules/terraform-aws-modules/eks/aws/latest/submodules/eks-managed-node-group
 
* Submodule: https://registry.terraform.io/modules/terraform-aws-modules/eks/aws/latest/submodules/eks-managed-node-group
 
* Input: https://registry.terraform.io/modules/terraform-aws-modules/eks/aws/latest#input_eks_managed_node_groups
 
* Input: https://registry.terraform.io/modules/terraform-aws-modules/eks/aws/latest#input_eks_managed_node_groups
 +
* https://registry.terraform.io/modules/terraform-aws-modules/eks/aws/latest/submodules/eks-managed-node-group?tab=inputs
 
* Example: https://registry.terraform.io/modules/terraform-aws-modules/eks/aws/latest/examples/eks_managed_node_group
 
* Example: https://registry.terraform.io/modules/terraform-aws-modules/eks/aws/latest/examples/eks_managed_node_group
  
  
<code>module.eks_managed_node_group</code>
+
== Inputs ==
 
+
https://registry.terraform.io/modules/terraform-aws-modules/eks/aws/latest/submodules/eks-managed-node-group?tab=inputs
 
+
* <code>[[instance_types]]: [[min_size]], [[max_size]], [[desired_size]]</code></code>
<code>[[module.]]eks_managed_node_group</code>
+
* <code>[[use_custom_launch_template]]</code>
 
+
* <code>[[fargate_profiles]]</code>
<code>[[instance_type]]</code>
 
 
 
<code>[[instance_types]]</code>
 
 
 
[[use_custom_launch_template]]
 
 
 
[[fargate_profiles]]
 
 
 
[[eks_managed_node_group_defaults]]
 
  
 
== Examples ==
 
== Examples ==
Line 28: Line 21:
 
     [[instance_types]] = ["t3.small"]
 
     [[instance_types]] = ["t3.small"]
 
   
 
   
     min_size    = 1
+
     [[min_size]]     = 1
     max_size    = 3
+
     [[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
 
     [[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
 
   
 
   
Line 35: Line 28:
 
     echo 'foo bar'
 
     echo 'foo bar'
 
     EOT
 
     EOT
+
 
 
     vpc_security_group_ids = [
 
     vpc_security_group_ids = [
 
       aws_security_group.node_group_one.id
 
       aws_security_group.node_group_one.id
Line 62: Line 55:
  
  
<pre>
+
 
module "eks_managed_node_group" {
+
module "eks_managed_node_group" {
 
   source = "terraform-aws-modules/eks/aws//modules/eks-managed-node-group"
 
   source = "terraform-aws-modules/eks/aws//modules/eks-managed-node-group"
 
+
 
   name            = "separate-eks-mng"
 
   name            = "separate-eks-mng"
 
   cluster_name    = "my-cluster"
 
   cluster_name    = "my-cluster"
 
   cluster_version = "1.24"
 
   cluster_version = "1.24"
 
+
 
   subnet_ids = ["subnet-abcde012", "subnet-bcde012a", "subnet-fghi345a"]
 
   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.
 
   // 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.
 
   // 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
 
   cluster_primary_security_group_id = module.eks.cluster_primary_security_group_id
 
   vpc_security_group_ids            = [module.eks.node_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
 
   // 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.
 
   // This module defaults to providing a custom launch template to allow for custom security groups, tag propagation, etc.
Line 87: Line 80:
 
   //    source_security_group_ids = [aws_security_group.remote_access.id]
 
   //    source_security_group_ids = [aws_security_group.remote_access.id]
 
   //  }
 
   //  }
 
+
 
   min_size    = 1
 
   min_size    = 1
 
   max_size    = 10
 
   max_size    = 10
 
   desired_size = 1
 
   desired_size = 1
 
+
 
   instance_types = ["t3.large"]
 
   instance_types = ["t3.large"]
   capacity_type  = "SPOT"
+
   [[capacity_type]] = "SPOT"
 
+
 
   labels = {
 
   labels = {
 
     Environment = "test"
 
     Environment = "test"
Line 113: Line 106:
 
     Terraform  = "true"
 
     Terraform  = "true"
 
   }
 
   }
  }
+
  }
</pre>
+
 
 +
== Errors ==
 +
  │ Error: error updating EKS Node Group (your-ng:node_default-20230320234324234001) config: [[InvalidParameterException]]: [[Minimum capacity 2 can't be greater than desired size]] 1
 +
 
 +
 
 +
 
 +
[[module.eks.module.eks_managed_node_group]]["one"].aws_eks_node_group.this[0]: [[Destruction complete after]] 6m16s
  
 
== Related ==
 
== Related ==
Line 120: Line 119:
 
* 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
 
* 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
 
* <code>[[taints]]</code>
 
* <code>[[taints]]</code>
<code>[[eks_managed_node_groups]]</code>
+
* Terraform resource: <code>[[aws_eks_node_group]]</code>
<code>[[Terraform submodule]]</code>
+
* <code>[[Terraform submodule]]</code>
 +
* <code>[[metadata options]]</code>
 +
* <code>[[self_managed_node_groups]]</code>
 +
* [[AWS EKS nodes]]
 +
* [[module.eks.module.eks_managed_node_group]]
 +
* [[Still destroying ...]]
  
 
== See also ==
 
== See also ==
 +
* {{eks_managed_node_groups}}
 +
* {{eks_managed_node_group}}
 +
* {{module.eks}}
 
* {{Terraform EKS module}}
 
* {{Terraform EKS module}}
  
  
 
[[Category:EKS]]
 
[[Category:EKS]]

Latest revision as of 23:27, 11 February 2024

Inputs[edit]

Examples[edit]

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

Errors[edit]

│ Error: error updating EKS Node Group (your-ng:node_default-20230320234324234001) config: InvalidParameterException: Minimum capacity 2 can't be greater than desired size 1


module.eks.module.eks_managed_node_group["one"].aws_eks_node_group.this[0]: Destruction complete after 6m16s

Related[edit]

See also[edit]

Advertising: