Skip to content

Commit 6913a44

Browse files
BARRY Thierno Ibrahima (Canal Plus Prestataire)barryib
BARRY Thierno Ibrahima (Canal Plus Prestataire)
authored andcommitted
feat: Drop random pets from Managed Node Groups
1 parent 1b8cbc6 commit 6913a44

13 files changed

+67
-61
lines changed

README.md

+2-3
Original file line numberDiff line numberDiff line change
@@ -143,17 +143,16 @@ Apache 2 Licensed. See [LICENSE](https://github.com/terraform-aws-modules/terraf
143143
| Name | Version |
144144
|------|---------|
145145
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 0.13.1 |
146-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 3.37.0 |
146+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 3.40.0 |
147147
| <a name="requirement_http"></a> [http](#requirement\_http) | >= 2.4.1 |
148148
| <a name="requirement_kubernetes"></a> [kubernetes](#requirement\_kubernetes) | >= 1.11.1 |
149149
| <a name="requirement_local"></a> [local](#requirement\_local) | >= 1.4 |
150-
| <a name="requirement_random"></a> [random](#requirement\_random) | >= 2.1 |
151150

152151
## Providers
153152

154153
| Name | Version |
155154
|------|---------|
156-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 3.37.0 |
155+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 3.40.0 |
157156
| <a name="provider_http"></a> [http](#provider\_http) | >= 2.4.1 |
158157
| <a name="provider_kubernetes"></a> [kubernetes](#provider\_kubernetes) | >= 1.11.1 |
159158
| <a name="provider_local"></a> [local](#provider\_local) | >= 1.4 |

aws_auth.tf

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
data "aws_caller_identity" "current" {}
2-
31
locals {
42
auth_launch_template_worker_roles = [
53
for index in range(0, var.create_eks ? local.worker_group_launch_template_count : 0) : {

data.tf

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
data "aws_partition" "current" {}
2+
3+
data "aws_caller_identity" "current" {}
4+
15
data "aws_iam_policy_document" "workers_assume_role_policy" {
26
statement {
37
sid = "EKSWorkerAssumeRole"
@@ -82,8 +86,6 @@ data "aws_iam_instance_profile" "custom_worker_group_launch_template_iam_instanc
8286
)
8387
}
8488

85-
data "aws_partition" "current" {}
86-
8789
data "http" "wait_for_cluster" {
8890
count = var.create_eks && var.manage_aws_auth ? 1 : 0
8991
url = format("%s/healthz", aws_eks_cluster.this[0].endpoint)

docs/upgrades.md

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# How to handle the terraform-aws-eks module upgrade
2+
3+
## Upgrade to v17.0.0
4+
5+
In this release, we now decided to remove random_pet resources in Managed Node Groups (MNG). Those were used to recreate MNG if something changed. But they were causing a lot of issues. To upgrade the module without recreating your MNG, you will need to explicitly reuse their previous name and set them in your MNG `name` argument.
6+
7+
```hcl
8+
module "eks" {
9+
source = "terraform-aws-modules/eks/aws"
10+
version = "16.0.1"
11+
12+
cluster_name = "your-cluster-name"
13+
cluster_version = "1.20"
14+
# ...
15+
16+
node_groups = {
17+
example = {
18+
name = "your-pre-v17.0.0-managed-node-group-name"
19+
desired_capacity = 1
20+
max_capacity = 10
21+
min_capacity = 1
22+
23+
# ...
24+
}
25+
}
26+
# ...
27+
}
28+
```
29+
30+
After the first apply, we recommand you to create a new node group and let the module use the `node_group_name_prefix` (by removing the `name` argument) to generate names and collision during node groups re-creation if needed, because the lifce cycle is `create_before_destroy = true`.

modules/fargate/README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@ Helper submodule to create and manage resources related to `aws_eks_fargate_prof
2121
| Name | Version |
2222
|------|---------|
2323
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 0.13.1 |
24-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 3.22.0 |
24+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 3.40.0 |
2525

2626
## Providers
2727

2828
| Name | Version |
2929
|------|---------|
30-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 3.22.0 |
30+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 3.40.0 |
3131

3232
## Modules
3333

modules/fargate/versions.tf

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@ terraform {
22
required_version = ">= 0.13.1"
33

44
required_providers {
5-
aws = ">= 3.22.0"
5+
aws = ">= 3.40.0"
66
}
77
}

modules/node_groups/README.md

+4-6
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ The role ARN specified in `var.default_iam_role_arn` will be used by default. In
3333
| launch\_template_version | The version of the LT to use | string | none |
3434
| max\_capacity | Max number of workers | number | `var.workers_group_defaults[asg_max_size]` |
3535
| min\_capacity | Min number of workers | number | `var.workers_group_defaults[asg_min_size]` |
36-
| name | Name of the node group | string | Auto generated |
36+
| name | Name of the node group | string | Will use autogenerate name prefix |
37+
| name_prefix | Name prefix of the node group | string | Auto generated |
3738
| source\_security\_group\_ids | Source security groups for remote access to workers | list(string) | If key\_name is specified: THE REMOTE ACCESS WILL BE OPENED TO THE WORLD |
3839
| subnets | Subnets to contain workers | list(string) | `var.workers_group_defaults[subnets]` |
3940
| version | Kubernetes version | string | Provider default behavior |
@@ -50,16 +51,14 @@ The role ARN specified in `var.default_iam_role_arn` will be used by default. In
5051
| Name | Version |
5152
|------|---------|
5253
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 0.13.1 |
53-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 3.22.0 |
54-
| <a name="requirement_random"></a> [random](#requirement\_random) | >= 2.1 |
54+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 3.40.0 |
5555

5656
## Providers
5757

5858
| Name | Version |
5959
|------|---------|
60-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 3.22.0 |
60+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 3.40.0 |
6161
| <a name="provider_cloudinit"></a> [cloudinit](#provider\_cloudinit) | n/a |
62-
| <a name="provider_random"></a> [random](#provider\_random) | >= 2.1 |
6362

6463
## Modules
6564

@@ -71,7 +70,6 @@ No modules.
7170
|------|------|
7271
| [aws_eks_node_group.workers](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/eks_node_group) | resource |
7372
| [aws_launch_template.workers](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/launch_template) | resource |
74-
| [random_pet.node_groups](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/pet) | resource |
7573
| [cloudinit_config.workers_userdata](https://registry.terraform.io/providers/hashicorp/cloudinit/latest/docs/data-sources/config) | data source |
7674

7775
## Inputs

modules/node_groups/launchtemplate.tf modules/node_groups/launch_template.tf

+10-9
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
data "cloudinit_config" "workers_userdata" {
2-
for_each = { for k, v in local.node_groups_expanded : k => v if v["create_launch_template"] }
2+
for_each = { for k, v in local.node_groups_expanded : k => v if v["create_launch_template"] }
3+
34
gzip = false
45
base64_encode = true
56
boundary = "//"
@@ -12,7 +13,6 @@ data "cloudinit_config" "workers_userdata" {
1213
kubelet_extra_args = each.value["kubelet_extra_args"]
1314
}
1415
)
15-
1616
}
1717
}
1818

@@ -23,9 +23,10 @@ data "cloudinit_config" "workers_userdata" {
2323
# Trivia: AWS transparently creates a copy of your LaunchTemplate and actually uses that copy then for the node group. If you DONT use a custom AMI,
2424
# then the default user-data for bootstrapping a cluster is merged in the copy.
2525
resource "aws_launch_template" "workers" {
26-
for_each = { for k, v in local.node_groups_expanded : k => v if v["create_launch_template"] }
27-
name_prefix = lookup(each.value, "name", join("-", [var.cluster_name, each.key, random_pet.node_groups[each.key].id]))
28-
description = lookup(each.value, "name", join("-", [var.cluster_name, each.key, random_pet.node_groups[each.key].id]))
26+
for_each = { for k, v in local.node_groups_expanded : k => v if v["create_launch_template"] }
27+
28+
name_prefix = local.node_groups_names[each.key]
29+
description = format("EKS Managed Node Group custom LT for %s", local.node_groups_names[each.key])
2930
update_default_version = true
3031

3132
block_device_mappings {
@@ -79,7 +80,7 @@ resource "aws_launch_template" "workers" {
7980
lookup(var.node_groups_defaults, "additional_tags", {}),
8081
lookup(var.node_groups[each.key], "additional_tags", {}),
8182
{
82-
Name = lookup(each.value, "name", join("-", [var.cluster_name, each.key, random_pet.node_groups[each.key].id]))
83+
Name = local.node_groups_names[each.key]
8384
}
8485
)
8586
}
@@ -93,12 +94,12 @@ resource "aws_launch_template" "workers" {
9394
lookup(var.node_groups_defaults, "additional_tags", {}),
9495
lookup(var.node_groups[each.key], "additional_tags", {}),
9596
{
96-
Name = lookup(each.value, "name", join("-", [var.cluster_name, each.key, random_pet.node_groups[each.key].id]))
97+
Name = local.node_groups_names[each.key]
9798
}
9899
)
99100
}
100101

101-
# Supplying custom tags to EKS instances ENI's
102+
# Supplying custom tags to EKS instances ENI's
102103
tag_specifications {
103104
resource_type = "network-interface"
104105

@@ -107,7 +108,7 @@ resource "aws_launch_template" "workers" {
107108
lookup(var.node_groups_defaults, "additional_tags", {}),
108109
lookup(var.node_groups[each.key], "additional_tags", {}),
109110
{
110-
Name = lookup(each.value, "name", join("-", [var.cluster_name, each.key, random_pet.node_groups[each.key].id]))
111+
Name = local.node_groups_names[each.key]
111112
}
112113
)
113114
}

modules/node_groups/locals.tf

+10
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,14 @@ locals {
2525
var.node_groups_defaults,
2626
v,
2727
) if var.create_eks }
28+
29+
node_groups_names = { for k, v in local.node_groups_expanded : k => lookup(
30+
v,
31+
"name",
32+
lookup(
33+
v,
34+
"name_prefix",
35+
join("-", [var.cluster_name, k])
36+
)
37+
) }
2838
}

modules/node_groups/node_groups.tf

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
resource "aws_eks_node_group" "workers" {
22
for_each = local.node_groups_expanded
33

4-
node_group_name = lookup(each.value, "name", join("-", [var.cluster_name, each.key, random_pet.node_groups[each.key].id]))
4+
node_group_name_prefix = lookup(each.value, "name", null) == null ? local.node_groups_names[each.key] : null
5+
node_group_name = lookup(each.value, "name", null)
56

67
cluster_name = var.cluster_name
78
node_role_arn = each.value["iam_role_arn"]

modules/node_groups/random.tf

-31
This file was deleted.

modules/node_groups/versions.tf

+1-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ terraform {
22
required_version = ">= 0.13.1"
33

44
required_providers {
5-
aws = ">= 3.22.0"
6-
random = ">= 2.1"
5+
aws = ">= 3.40.0"
76
}
87
}

versions.tf

+1-2
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@ terraform {
22
required_version = ">= 0.13.1"
33

44
required_providers {
5-
aws = ">= 3.37.0"
5+
aws = ">= 3.40.0"
66
local = ">= 1.4"
7-
random = ">= 2.1"
87
kubernetes = ">= 1.11.1"
98
http = {
109
source = "terraform-aws-modules/http"

0 commit comments

Comments
 (0)