1
- provider "kubernetes" {
2
- version = " ~> 1.5"
3
- }
4
-
5
- provider "aws" {
6
- version = " ~> 2.6"
7
- }
8
-
9
1
locals {
10
2
aws_alb_ingress_controller_version = " 1.1.2"
11
3
aws_alb_ingress_controller_docker_image = " docker.io/amazon/aws-alb-ingress-controller:v${ local . aws_alb_ingress_controller_version } "
@@ -15,9 +7,9 @@ locals {
15
7
resource "aws_iam_role" "this" {
16
8
name = " k8s-${ var . k8s_cluster_name } -alb-ingress-controller"
17
9
description = " Permissions required by the Kubernetes AWS ALB Ingress controller to do it's job."
18
- path = " ${ var . aws_iam_path_prefix } "
10
+ path = var. aws_iam_path_prefix
19
11
20
- tags = " ${ var . aws_tags } "
12
+ tags = var. aws_tags
21
13
22
14
force_detach_policies = true
23
15
@@ -35,12 +27,13 @@ resource "aws_iam_role" "this" {
35
27
]
36
28
}
37
29
EOF
30
+
38
31
}
39
32
40
33
resource "aws_iam_policy" "this" {
41
34
name = " k8s-${ var . k8s_cluster_name } -alb-management"
42
35
description = " Permissions that are required to manage the AWS Application Load Balancer."
43
- path = " ${ var . aws_iam_path_prefix } "
36
+ path = var. aws_iam_path_prefix
44
37
45
38
policy = << EOF
46
39
{
@@ -155,21 +148,23 @@ resource "aws_iam_policy" "this" {
155
148
]
156
149
}
157
150
EOF
151
+
158
152
}
159
153
160
154
resource "aws_iam_role_policy_attachment" "this" {
161
- policy_arn = " ${ aws_iam_policy . this . arn } "
162
- role = " ${ aws_iam_role . this . name } "
155
+ policy_arn = aws_iam_policy. this . arn
156
+ role = aws_iam_role. this . name
163
157
}
164
158
165
159
resource "kubernetes_service_account" "this" {
160
+ automount_service_account_token = true
166
161
metadata {
167
162
name = " aws-alb-ingress-controller"
168
- namespace = " ${ var . k8s_namespace } "
163
+ namespace = var. k8s_namespace
169
164
170
- labels {
171
- " app" = " aws-alb-ingress-controller"
172
- " heritage " = " Terraform "
165
+ labels = {
166
+ " app.kubernetes.io/name " = " aws-alb-ingress-controller"
167
+ " app.kubernetes.io/managed-by " = " terraform "
173
168
}
174
169
}
175
170
}
@@ -178,9 +173,9 @@ resource "kubernetes_cluster_role" "this" {
178
173
metadata {
179
174
name = " aws-alb-ingress-controller"
180
175
181
- labels {
182
- " app" = " aws-alb-ingress-controller"
183
- " heritage " = " Terraform "
176
+ labels = {
177
+ " app.kubernetes.io/name " = " aws-alb-ingress-controller"
178
+ " app.kubernetes.io/managed-by " = " terraform "
184
179
}
185
180
}
186
181
@@ -235,42 +230,40 @@ resource "kubernetes_cluster_role_binding" "this" {
235
230
metadata {
236
231
name = " aws-alb-ingress-controller"
237
232
238
- labels {
239
- " app" = " aws-alb-ingress-controller"
240
- " heritage " = " Terraform "
233
+ labels = {
234
+ " app.kubernetes.io/name " = " aws-alb-ingress-controller"
235
+ " app.kubernetes.io/managed-by " = " terraform "
241
236
}
242
237
}
243
238
244
239
role_ref {
245
240
api_group = " rbac.authorization.k8s.io"
246
241
kind = " ClusterRole"
247
- name = " ${ kubernetes_cluster_role . this . metadata . 0 . name } "
242
+ name = kubernetes_cluster_role. this . metadata [ 0 ] . name
248
243
}
249
244
250
245
subject {
251
246
api_group = " "
252
247
kind = " ServiceAccount"
253
- name = " ${ kubernetes_service_account . this . metadata . 0 . name } "
254
- namespace = " ${ kubernetes_service_account . this . metadata . 0 . namespace } "
248
+ name = kubernetes_service_account. this . metadata [ 0 ] . name
249
+ namespace = kubernetes_service_account. this . metadata [ 0 ] . namespace
255
250
}
256
251
}
257
252
258
253
resource "kubernetes_deployment" "this" {
259
- depends_on = [
260
- " kubernetes_cluster_role_binding.this" ,
261
- ]
254
+ depends_on = [kubernetes_cluster_role_binding . this ]
262
255
263
256
metadata {
264
257
name = " aws-alb-ingress-controller"
265
- namespace = " ${ var . k8s_namespace } "
258
+ namespace = var. k8s_namespace
266
259
267
- labels {
268
- " app" = " aws-alb-ingress-controller"
269
- " version" = " ${ local . aws_alb_ingress_controller_version } "
270
- " heritage " = " Terraform "
260
+ labels = {
261
+ " app.kubernetes.io/name " = " aws-alb-ingress-controller"
262
+ " app.kubernetes.io/ version" = local.aws_alb_ingress_controller_version
263
+ " app.kubernetes.io/managed-by " = " terraform "
271
264
}
272
265
273
- annotations {
266
+ annotations = {
274
267
" field.cattle.io/description" = " AWS ALB Ingress Controller"
275
268
}
276
269
}
@@ -279,20 +272,21 @@ resource "kubernetes_deployment" "this" {
279
272
replicas = 1
280
273
281
274
selector {
282
- match_labels {
283
- " name" = " aws-alb-ingress-controller"
275
+ match_labels = {
276
+ " app.kubernetes.io/ name" = " aws-alb-ingress-controller"
284
277
}
285
278
}
286
279
287
280
template {
288
281
metadata {
289
- labels {
290
- " name" = " aws-alb-ingress-controller"
282
+ labels = {
283
+ " app.kubernetes.io/name" = " aws-alb-ingress-controller"
284
+ " app.kubernetes.io/version" = local.aws_alb_ingress_controller_version
291
285
}
292
286
293
- annotations {
287
+ annotations = {
294
288
# Annotation to be used by KIAM
295
- " iam.amazonaws.com/role" = " ${ aws_iam_role . this . arn } "
289
+ " iam.amazonaws.com/role" = aws_iam_role.this.arn
296
290
}
297
291
}
298
292
@@ -302,7 +296,7 @@ resource "kubernetes_deployment" "this" {
302
296
303
297
container {
304
298
name = " server"
305
- image = " ${ local . aws_alb_ingress_controller_docker_image } "
299
+ image = local. aws_alb_ingress_controller_docker_image
306
300
image_pull_policy = " Always"
307
301
termination_message_path = " /dev/termination-log"
308
302
@@ -316,7 +310,7 @@ resource "kubernetes_deployment" "this" {
316
310
317
311
volume_mount {
318
312
mount_path = " /var/run/secrets/kubernetes.io/serviceaccount"
319
- name = " ${ kubernetes_service_account . this . default_secret_name } "
313
+ name = kubernetes_service_account. this . default_secret_name
320
314
read_only = true
321
315
}
322
316
@@ -351,14 +345,14 @@ resource "kubernetes_deployment" "this" {
351
345
}
352
346
353
347
volume {
354
- name = " ${ kubernetes_service_account . this . default_secret_name } "
348
+ name = kubernetes_service_account. this . default_secret_name
355
349
356
350
secret {
357
- secret_name = " ${ kubernetes_service_account . this . default_secret_name } "
351
+ secret_name = kubernetes_service_account. this . default_secret_name
358
352
}
359
353
}
360
354
361
- service_account_name = " ${ kubernetes_service_account . this . metadata . 0 . name } "
355
+ service_account_name = kubernetes_service_account. this . metadata [ 0 ] . name
362
356
termination_grace_period_seconds = 60
363
357
}
364
358
}
0 commit comments