Skip to content

Commit ed165c2

Browse files
authored
refactor: do not use templates/nginx-ingress-values.yaml and set necessary values in the eks-ingress-nginx-controller.tf file (#206)
1 parent 5572d4e commit ed165c2

File tree

5 files changed

+74
-115
lines changed

5 files changed

+74
-115
lines changed

terraform/layer2-k8s/eks-nginx-ingress-controller.tf renamed to terraform/layer2-k8s/eks-ingress-nginx-controller.tf

Lines changed: 73 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,80 @@ locals {
44
enabled = local.helm_releases[index(local.helm_releases.*.id, "ingress-nginx")].enabled
55
chart = local.helm_releases[index(local.helm_releases.*.id, "ingress-nginx")].chart
66
repository = local.helm_releases[index(local.helm_releases.*.id, "ingress-nginx")].repository
7-
chart_version = local.helm_releases[index(local.helm_releases.*.id, "ingress-nginx")].version
7+
chart_version = local.helm_releases[index(local.helm_releases.*.id, "ingress-nginx")].chart_version
88
namespace = local.helm_releases[index(local.helm_releases.*.id, "ingress-nginx")].namespace
99
}
10-
ssl_certificate_arn = var.nginx_ingress_ssl_terminator == "lb" ? data.terraform_remote_state.layer1-aws.outputs.ssl_certificate_arn : ""
10+
ssl_certificate_arn = var.nginx_ingress_ssl_terminator == "lb" ? data.terraform_remote_state.layer1-aws.outputs.ssl_certificate_arn : "ssl-certificate"
11+
ingress_nginx_general_values = <<VALUES
12+
rbac:
13+
create: true
14+
controller:
15+
metrics:
16+
enabled: true
17+
serviceMonitor:
18+
enabled: true
19+
podAnnotations:
20+
co.elastic.logs/module: nginx
21+
co.elastic.logs/fileset.stdout: ingress_controller
22+
co.elastic.logs/fileset.stderr: error
1123
12-
template_name = (
13-
var.nginx_ingress_ssl_terminator == "lb" ? "nginx-ingress-values.yaml" : (
14-
var.nginx_ingress_ssl_terminator == "nginx" ? "nginx-ingress-certmanager-ssl-termination-values.yaml" : "")
15-
)
16-
}
17-
18-
data "template_file" "ingress_nginx" {
19-
count = local.ingress_nginx.enabled ? 1 : 0
20-
21-
template = file("${path.module}/templates/${local.template_name}")
22-
vars = {
23-
hostname = local.domain_name
24-
ssl_cert = local.ssl_certificate_arn
25-
proxy_real_ip_cidr = local.vpc_cidr
26-
namespace = module.ingress_nginx_namespace[count.index].name
27-
}
24+
affinity:
25+
nodeAffinity:
26+
requiredDuringSchedulingIgnoredDuringExecution:
27+
nodeSelectorTerms:
28+
- matchExpressions:
29+
- key: eks.amazonaws.com/capacityType
30+
operator: In
31+
values:
32+
- ON_DEMAND
33+
VALUES
34+
ingress_loadbalancer_ssl_termination_values = <<VALUES
35+
controller:
36+
service:
37+
targetPorts:
38+
http: http
39+
https: http
40+
annotations:
41+
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
42+
service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: '60'
43+
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "https"
44+
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: ${local.ssl_certificate_arn}
45+
service.beta.kubernetes.io/aws-load-balancer-ssl-negotiation-policy: ELBSecurityPolicy-TLS-1-2-2017-01
46+
external-dns.alpha.kubernetes.io/hostname: ${local.domain_name}.
47+
publishService:
48+
enabled: true
49+
config:
50+
server-tokens: "false"
51+
use-forwarded-headers: "true"
52+
set-real-ip-from: "${local.vpc_cidr}"
53+
VALUES
54+
ingress_pod_ssl_termination_values = <<VALUES
55+
controller:
56+
extraArgs:
57+
default-ssl-certificate: "${local.ingress_nginx.enabled ? module.ingress_nginx_namespace[0].name : "default"}/nginx-tls"
58+
containerPort:
59+
http: 80
60+
https: 443
61+
service:
62+
targetPorts:
63+
http: http
64+
https: https
65+
annotations:
66+
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
67+
service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*"
68+
service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: '60'
69+
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "https"
70+
# service.beta.kubernetes.io/aws-load-balancer-type: nlb
71+
external-dns.alpha.kubernetes.io/hostname: ${local.domain_name}.
72+
publishService:
73+
enabled: true
74+
config:
75+
server-tokens: "false"
76+
use-forwarded-headers: "true"
77+
use-proxy-protocol: "true"
78+
set-real-ip-from: "${local.vpc_cidr}"
79+
real-ip-header: "proxy_protocol"
80+
VALUES
2881
}
2982

3083
#tfsec:ignore:kubernetes-network-no-public-egress tfsec:ignore:kubernetes-network-no-public-ingress
@@ -170,7 +223,8 @@ resource "helm_release" "ingress_nginx" {
170223
max_history = var.helm_release_history_size
171224

172225
values = [
173-
data.template_file.ingress_nginx[count.index].rendered,
226+
local.ingress_nginx_general_values,
227+
var.nginx_ingress_ssl_terminator == "lb" ? local.ingress_loadbalancer_ssl_termination_values : local.ingress_pod_ssl_termination_values
174228
]
175229

176230
depends_on = [helm_release.prometheus_operator]

terraform/layer2-k8s/helm-releases.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ releases:
6969
enabled: true
7070
chart: ingress-nginx
7171
repository: https://kubernetes.github.io/ingress-nginx
72-
version: 3.23.0
72+
chart_version: 3.23.0
7373
namespace: ingress-nginx
7474
- id: istio-operator
7575
enabled: false

terraform/layer2-k8s/templates/nginx-ingress-certmanager-ssl-termination-values.yaml

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

terraform/layer2-k8s/templates/nginx-ingress-values.yaml

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

terraform/layer2-k8s/variables.tf

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,6 @@ variable "nginx_ingress_ssl_terminator" {
3939
# nginx - terminate ssl on nginx side
4040
}
4141

42-
# ALB Ingress
43-
variable "aws_loadbalancer_controller_enable" {
44-
description = "Disable or Enable aws-loadbalancer-controller. You need to enable it if you want to use Fargate"
45-
type = bool
46-
default = false
47-
}
48-
4942
# Cluster autoscaler
5043
variable "cluster_autoscaler_version" {
5144
description = "Version of cluster autoscaler"

0 commit comments

Comments
 (0)