Skip to content

Commit 77d73db

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 77d73db

File tree

5 files changed

+28
-54
lines changed

5 files changed

+28
-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: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,35 @@
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 = 8
12+
special = false
13+
}
614

715
resource "kubernetes_service_account" "this" {
816
automount_service_account_token = true
917
metadata {
10-
name = "aws-eks-istio-external-dns-${lower(var.hosted_zone_id)}"
18+
name = local.default_name
1119
namespace = var.k8s_namespace
1220
labels = {
13-
"app.kubernetes.io/name" = "aws-eks-istio-external-dns-${lower(var.hosted_zone_id)}"
21+
"app.kubernetes.io/name" = local.default_name
1422
"app.kubernetes.io/managed-by" = "terraform"
1523
}
1624
}
1725
}
1826

1927
resource "kubernetes_cluster_role" "this" {
2028
metadata {
21-
name = "aws-eks-istio-external-dns-${lower(var.hosted_zone_id)}"
29+
name = local.default_name
2230

2331
labels = {
24-
"app.kubernetes.io/name" = "aws-eks-istio-external-dns-${lower(var.hosted_zone_id)}"
32+
"app.kubernetes.io/name" = local.default_name
2533
"app.kubernetes.io/managed-by" = "terraform"
2634
}
2735
}
@@ -150,11 +158,11 @@ resource "kubernetes_deployment" "this" {
150158
depends_on = [kubernetes_cluster_role_binding.this]
151159

152160
metadata {
153-
name = "aws-eks-istio-external-dns-${lower(var.hosted_zone_id)}"
161+
name = local.default_name
154162
namespace = var.k8s_namespace
155163

156164
labels = {
157-
"app.kubernetes.io/name" = "aws-eks-istio-external-dns-${lower(var.hosted_zone_id)}"
165+
"app.kubernetes.io/name" = local.default_name
158166
"app.kubernetes.io/version" = "v${local.external_dns_version}"
159167
"app.kubernetes.io/managed-by" = "terraform"
160168
}
@@ -170,7 +178,7 @@ resource "kubernetes_deployment" "this" {
170178

171179
selector {
172180
match_labels = {
173-
"app.kubernetes.io/name" = "aws-eks-istio-external-dns-${lower(var.hosted_zone_id)}"
181+
"app.kubernetes.io/name" = local.default_name
174182
}
175183
}
176184

@@ -182,7 +190,7 @@ resource "kubernetes_deployment" "this" {
182190
metadata {
183191
labels = merge(
184192
{
185-
"app.kubernetes.io/name" = "aws-eks-istio-external-dns-${lower(var.hosted_zone_id)}"
193+
"app.kubernetes.io/name" = local.default_name
186194
"app.kubernetes.io/version" = local.external_dns_version
187195
},
188196
var.k8s_pod_labels
@@ -199,7 +207,7 @@ resource "kubernetes_deployment" "this" {
199207
match_expressions {
200208
key = "app.kubernetes.io/name"
201209
operator = "In"
202-
values = ["aws-eks-istio-external-dns-${lower(var.hosted_zone_id)}"]
210+
values = [local.default_name]
203211
}
204212
}
205213
topology_key = "kubernetes.io/hostname"

0 commit comments

Comments
 (0)