Skip to content

Commit 8cbb6f8

Browse files
authored
Merge pull request #83 from worldcoin/INFRA-5911-create-short-AWS-LB-Controller-role
INFRA-5911 Fix AWS LB Controller for clusters with long names
2 parents 424f19f + 5f8e0fd commit 8cbb6f8

File tree

3 files changed

+22
-8
lines changed

3 files changed

+22
-8
lines changed

iam-aws-load-balancer.tf

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,20 @@ resource "aws_iam_role_policy" "aws_load_balancer" {
343343
policy = data.aws_iam_policy_document.aws_load_balancer.json
344344
}
345345

346+
resource "aws_iam_role" "aws_lbc" {
347+
count = var.aws_load_balancer_iam_role_enabled ? 1 : 0
348+
name = "aws-lbc-${var.cluster_name}"
349+
path = "/system/"
350+
assume_role_policy = data.aws_iam_policy_document.aws_load_balancer_assume_role_policy.json
351+
}
352+
353+
resource "aws_iam_role_policy" "aws_lbc" {
354+
count = var.aws_load_balancer_iam_role_enabled ? 1 : 0
355+
name = "aws-lbc-${var.cluster_name}"
356+
role = aws_iam_role.aws_lbc[0].id
357+
policy = data.aws_iam_policy_document.aws_load_balancer.json
358+
}
359+
346360
moved {
347361
from = aws_iam_role.aws_load_balancer
348362
to = aws_iam_role.aws_load_balancer[0]

main.tf

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,13 @@ resource "aws_iam_openid_connect_provider" "oidc_provider" {
6565
}
6666

6767
data "aws_iam_roles" "aws_load_balancer_controller" {
68-
name_regex = "^aws-load-balancer-controller-${var.cluster_name}$"
68+
name_regex = "^(aws-load-balancer-controller|aws-lbc)-${var.cluster_name}$"
6969
path_prefix = "/system/"
7070
}
7171

7272
locals {
7373
aws_load_balancer_controller_role_exists = var.enable_aws_load_balancer_controller_explicit_deny ? length(data.aws_iam_roles.aws_load_balancer_controller.names) > 0 : false
74-
aws_load_balancer_controller_role_name = local.aws_load_balancer_controller_role_exists ? sort(tolist(data.aws_iam_roles.aws_load_balancer_controller.names))[0] : null
74+
aws_load_balancer_controller_role_names = local.aws_load_balancer_controller_role_exists ? toset(data.aws_iam_roles.aws_load_balancer_controller.names) : toset([])
7575
}
7676

7777
data "aws_iam_policy_document" "aws_load_balancer_controller_explicit_deny" {
@@ -84,14 +84,14 @@ data "aws_iam_policy_document" "aws_load_balancer_controller_explicit_deny" {
8484

8585
resource "aws_iam_policy" "aws_load_balancer_controller_explicit_deny" {
8686
count = local.aws_load_balancer_controller_role_exists ? 1 : 0
87-
name = "aws-load-balancer-controller-${var.cluster_name}-explicit-deny-elb"
87+
name = "aws-lbc-${var.cluster_name}-explicit-deny-elb"
8888
path = "/system/"
8989
policy = data.aws_iam_policy_document.aws_load_balancer_controller_explicit_deny.json
9090
}
9191

9292
resource "aws_iam_role_policy_attachment" "aws_load_balancer_controller_explicit_deny" {
93-
count = local.aws_load_balancer_controller_role_exists ? 1 : 0
94-
role = local.aws_load_balancer_controller_role_name
93+
for_each = local.aws_load_balancer_controller_role_names
94+
role = each.value
9595
policy_arn = aws_iam_policy.aws_load_balancer_controller_explicit_deny[0].arn
9696
}
97-
97+

variables.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ variable "cluster_name" {
77
description = "The name of the cluster. Has to be unique per region per account."
88
type = string
99
validation {
10-
condition = can(regex("\\w-", var.cluster_name))
11-
error_message = "Cluster name must be lowercase alphanumeric characters"
10+
condition = can(regex("^[a-z0-9]([a-z0-9-]*[a-z0-9])?$", var.cluster_name)) && length(var.cluster_name) <= 48
11+
error_message = "Cluster name must contain only lowercase alphanumeric characters or hyphens and be at most 48 characters long"
1212
}
1313
}
1414

0 commit comments

Comments
 (0)