Skip to content

Commit cdb16cf

Browse files
authored
[eks/cluster] Add support for kubelet extra args, etc. (#1046)
1 parent d556d73 commit cdb16cf

File tree

7 files changed

+61
-4
lines changed

7 files changed

+61
-4
lines changed

modules/eks/cluster/CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
## Release 1.452.0
2+
3+
Components PR [#1046](https://github.com/cloudposse/terraform-aws-components/pull/1046)
4+
5+
Added support for passing extra arguments to `kubelet` and other startup modifications supported by EKS on Amazon Linux
6+
2 via the
7+
[`bootsrap.sh`](https://github.com/awslabs/amazon-eks-ami/blob/d87c6c49638216907cbd6630b6cadfd4825aed20/templates/al2/runtime/bootstrap.sh)
8+
script.
9+
10+
This support should be considered an `alpha` version, as it may change when support for Amazon Linux 2023 is added, and
11+
does not work with Bottlerocket.
12+
113
## Breaking Changes: Components PR [#1033](https://github.com/cloudposse/terraform-aws-components/pull/1033)
214

315
### Major Breaking Changes

modules/eks/cluster/README.md

Lines changed: 10 additions & 3 deletions
Large diffs are not rendered by default.

modules/eks/cluster/eks-node-groups.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ module "region_node_group" {
4545
instance_types = each.value.instance_types == null ? var.node_group_defaults.instance_types : each.value.instance_types
4646
kubernetes_labels = each.value.kubernetes_labels == null ? var.node_group_defaults.kubernetes_labels : each.value.kubernetes_labels
4747
kubernetes_taints = each.value.kubernetes_taints == null ? var.node_group_defaults.kubernetes_taints : each.value.kubernetes_taints
48+
node_userdata = each.value.node_userdata == null ? var.node_group_defaults.node_userdata : each.value.node_userdata
4849
kubernetes_version = each.value.kubernetes_version == null ? local.node_group_default_kubernetes_version : each.value.kubernetes_version
4950
resources_to_tag = each.value.resources_to_tag == null ? var.node_group_defaults.resources_to_tag : each.value.resources_to_tag
5051
subnet_type_tag_key = local.subnet_type_tag_key

modules/eks/cluster/modules/node_group_by_az/main.tf

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,17 @@ locals {
2828
subnet_ids = local.subnet_ids_test[0] == local.sentinel ? null : local.subnet_ids_test
2929
az_map = var.cluster_context.az_abbreviation_type == "short" ? module.az_abbreviation.region_az_alt_code_maps.to_short : module.az_abbreviation.region_az_alt_code_maps.to_fixed
3030
az_attribute = local.az_map[var.availability_zone]
31+
32+
before_cluster_joining_userdata = var.cluster_context.node_userdata.before_cluster_joining_userdata != null ? [trimspace(var.cluster_context.node_userdata.before_cluster_joining_userdata)] : []
33+
bootstrap_extra_args = var.cluster_context.node_userdata.bootstrap_extra_args != null ? [trimspace(var.cluster_context.node_userdata.bootstrap_extra_args)] : []
34+
kubelet_extra_args = var.cluster_context.node_userdata.kubelet_extra_args != null ? [trimspace(var.cluster_context.node_userdata.kubelet_extra_args)] : []
35+
after_cluster_joining_userdata = var.cluster_context.node_userdata.after_cluster_joining_userdata != null ? [trimspace(var.cluster_context.node_userdata.after_cluster_joining_userdata)] : []
36+
3137
}
3238

3339
module "eks_node_group" {
3440
source = "cloudposse/eks-node-group/aws"
35-
version = "2.11.0"
41+
version = "2.12.0"
3642

3743
enabled = local.enabled
3844

@@ -57,6 +63,13 @@ module "eks_node_group" {
5763
resources_to_tag = local.enabled ? var.cluster_context.resources_to_tag : null
5864
subnet_ids = local.enabled ? local.subnet_ids : null
5965

66+
# node_userdata
67+
before_cluster_joining_userdata = local.enabled ? local.before_cluster_joining_userdata : []
68+
bootstrap_additional_options = local.enabled ? local.bootstrap_extra_args : []
69+
kubelet_additional_options = local.enabled ? local.kubelet_extra_args : []
70+
after_cluster_joining_userdata = local.enabled ? local.after_cluster_joining_userdata : []
71+
72+
6073
block_device_map = local.enabled ? var.cluster_context.block_device_map : null
6174

6275
# Prevent the node groups from being created before the Kubernetes aws-auth configMap

modules/eks/cluster/modules/node_group_by_az/variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,12 @@ variable "cluster_context" {
3030
value = string
3131
effect = string
3232
}))
33+
node_userdata = object({
34+
before_cluster_joining_userdata = optional(string)
35+
bootstrap_extra_args = optional(string)
36+
kubelet_extra_args = optional(string)
37+
after_cluster_joining_userdata = optional(string)
38+
})
3339
kubernetes_version = string
3440
module_depends_on = any
3541
resources_to_tag = list(string)

modules/eks/cluster/modules/node_group_by_region/variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,12 @@ variable "cluster_context" {
3131
value = string
3232
effect = string
3333
}))
34+
node_userdata = object({
35+
before_cluster_joining_userdata = optional(string)
36+
bootstrap_extra_args = optional(string)
37+
kubelet_extra_args = optional(string)
38+
after_cluster_joining_userdata = optional(string)
39+
})
3440
kubernetes_version = string
3541
module_depends_on = optional(any)
3642
resources_to_tag = list(string)

modules/eks/cluster/variables.tf

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,12 @@ variable "node_groups" {
223223
value = string
224224
effect = string
225225
})), null)
226+
node_userdata = optional(object({
227+
before_cluster_joining_userdata = optional(string)
228+
bootstrap_extra_args = optional(string)
229+
kubelet_extra_args = optional(string)
230+
after_cluster_joining_userdata = optional(string)
231+
}), {})
226232
# Desired Kubernetes master version. If you do not specify a value, the latest available version is used
227233
kubernetes_version = optional(string, null)
228234
# The maximum size of the AutoScaling Group
@@ -295,6 +301,12 @@ variable "node_group_defaults" {
295301
value = string
296302
effect = string
297303
})), [])
304+
node_userdata = optional(object({
305+
before_cluster_joining_userdata = optional(string)
306+
bootstrap_extra_args = optional(string)
307+
kubelet_extra_args = optional(string)
308+
after_cluster_joining_userdata = optional(string)
309+
}), {})
298310
kubernetes_version = optional(string, null) # set to null to use cluster_kubernetes_version
299311
max_group_size = optional(number, null)
300312
min_group_size = optional(number, null)

0 commit comments

Comments
 (0)