Skip to content

Commit 3234103

Browse files
committed
FACT-1485 All external-dns resources deploy with a random suffix so that it can be deployed more than once per zone (allows us to utilize annotation filters)
1 parent 8ee3219 commit 3234103

File tree

5 files changed

+29
-54
lines changed

5 files changed

+29
-54
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
*.tfstate*
33
*.auto.tfvars
44
.terraform
5+
.terraform.lock.hcl
56
.terraform/*
67
terraform.tfvars
78
terraform.tfvars.example

.pre-commit-config.yaml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
repos:
2-
- repo: git://github.com/antonbabenko/pre-commit-terraform
3-
rev: v1.43.0
4-
hooks:
5-
- id: terraform_fmt
6-
- id: terraform_docs
7-
- id: terraform_validate
8-
- id: terraform_tflint
2+
- repo: git://github.com/antonbabenko/pre-commit-terraform
3+
rev: v1.48.0
4+
hooks:
5+
- id: terraform_fmt
6+
- id: terraform_docs
7+
- id: terraform_validate
8+
- id: terraform_tflint

.terraform.lock.hcl

Lines changed: 0 additions & 36 deletions
This file was deleted.

iam.tf

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
data "aws_caller_identity" "current" {}
23

34
data "aws_iam_policy_document" "eks_assume_role" {
@@ -12,7 +13,7 @@ data "aws_iam_policy_document" "eks_assume_role" {
1213
}
1314

1415
resource "aws_iam_role" "external_dns" {
15-
name = "eks-aws-eks-istio-external-dns-viewer-${lower(var.hosted_zone_id)}"
16+
name = local.iam_name
1617
description = "Permissions required by the Kubernetes AWS EKS External Name controller to do it's job."
1718
path = "/"
1819

@@ -38,7 +39,7 @@ data "aws_iam_policy_document" "external_dns" {
3839
}
3940

4041
resource "aws_iam_policy" "external_dns" {
41-
name = "eks-aws-eks-istio-external-dns-viewer-${lower(var.hosted_zone_id)}"
42+
name = local.iam_name
4243
description = "Allows access to resources needed to run external dns."
4344
policy = data.aws_iam_policy_document.external_dns.json
4445
}

main.tf

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,36 @@
11
locals {
22
external_dns_docker_image = "k8s.gcr.io/external-dns/external-dns:v${var.external_dns_version}"
33
external_dns_version = var.external_dns_version
4+
5+
default_name = "aws-eks-istio-external-dns-${lower(var.hosted_zone_id)}-${random_string.suffix.result}"
6+
7+
iam_name = "eks-istio-external-dns-${lower(var.hosted_zone_id)}-${random_string.suffix.result}"
48
}
59

10+
resource "random_string" "suffix" {
11+
length = 6
12+
special = false
13+
upper = false
14+
}
615

716
resource "kubernetes_service_account" "this" {
817
automount_service_account_token = true
918
metadata {
10-
name = "aws-eks-istio-external-dns-${lower(var.hosted_zone_id)}"
19+
name = local.default_name
1120
namespace = var.k8s_namespace
1221
labels = {
13-
"app.kubernetes.io/name" = "aws-eks-istio-external-dns-${lower(var.hosted_zone_id)}"
22+
"app.kubernetes.io/name" = local.default_name
1423
"app.kubernetes.io/managed-by" = "terraform"
1524
}
1625
}
1726
}
1827

1928
resource "kubernetes_cluster_role" "this" {
2029
metadata {
21-
name = "aws-eks-istio-external-dns-${lower(var.hosted_zone_id)}"
30+
name = local.default_name
2231

2332
labels = {
24-
"app.kubernetes.io/name" = "aws-eks-istio-external-dns-${lower(var.hosted_zone_id)}"
33+
"app.kubernetes.io/name" = local.default_name
2534
"app.kubernetes.io/managed-by" = "terraform"
2635
}
2736
}
@@ -150,11 +159,11 @@ resource "kubernetes_deployment" "this" {
150159
depends_on = [kubernetes_cluster_role_binding.this]
151160

152161
metadata {
153-
name = "aws-eks-istio-external-dns-${lower(var.hosted_zone_id)}"
162+
name = local.default_name
154163
namespace = var.k8s_namespace
155164

156165
labels = {
157-
"app.kubernetes.io/name" = "aws-eks-istio-external-dns-${lower(var.hosted_zone_id)}"
166+
"app.kubernetes.io/name" = local.default_name
158167
"app.kubernetes.io/version" = "v${local.external_dns_version}"
159168
"app.kubernetes.io/managed-by" = "terraform"
160169
}
@@ -170,7 +179,7 @@ resource "kubernetes_deployment" "this" {
170179

171180
selector {
172181
match_labels = {
173-
"app.kubernetes.io/name" = "aws-eks-istio-external-dns-${lower(var.hosted_zone_id)}"
182+
"app.kubernetes.io/name" = local.default_name
174183
}
175184
}
176185

@@ -182,7 +191,7 @@ resource "kubernetes_deployment" "this" {
182191
metadata {
183192
labels = merge(
184193
{
185-
"app.kubernetes.io/name" = "aws-eks-istio-external-dns-${lower(var.hosted_zone_id)}"
194+
"app.kubernetes.io/name" = local.default_name
186195
"app.kubernetes.io/version" = local.external_dns_version
187196
},
188197
var.k8s_pod_labels
@@ -199,7 +208,7 @@ resource "kubernetes_deployment" "this" {
199208
match_expressions {
200209
key = "app.kubernetes.io/name"
201210
operator = "In"
202-
values = ["aws-eks-istio-external-dns-${lower(var.hosted_zone_id)}"]
211+
values = [local.default_name]
203212
}
204213
}
205214
topology_key = "kubernetes.io/hostname"

0 commit comments

Comments
 (0)