Skip to content

Commit 1a82a4f

Browse files
authored
adding AWS LB controller to the default installation (#376)
1 parent ca2ba03 commit 1a82a4f

File tree

4 files changed

+38
-0
lines changed

4 files changed

+38
-0
lines changed

modules/aws/k8s/main.tf

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,27 @@ provider "kubernetes" {
127127
}
128128
}
129129

130+
provider "helm" {
131+
kubernetes {
132+
host = module.eks.cluster_endpoint
133+
cluster_ca_certificate = base64decode(module.eks.cluster_certificate_authority_data)
134+
exec {
135+
api_version = "client.authentication.k8s.io/v1beta1"
136+
command = "/bin/sh"
137+
args = ["-c", "for i in $(seq 1 30); do curl -s -k -f ${module.eks.cluster_endpoint}/healthz > /dev/null && break || sleep 10; done && aws eks --region ${data.aws_availability_zones.available.id} get-token --cluster-name ${var.cluster_name}"]
138+
}
139+
}
140+
}
141+
142+
module "load_balancer_controller" {
143+
source = "git::https://github.com/smarunich/terraform-aws-eks-lb-controller.git"
144+
helm_chart_version = var.lb_controller_helm_chart_version
145+
cluster_identity_oidc_issuer = module.eks.cluster_oidc_issuer_url
146+
cluster_identity_oidc_issuer_arn = module.eks.oidc_provider_arn
147+
cluster_name = var.cluster_name
148+
settings = var.lb_controller_settings
149+
}
150+
130151
resource "local_file" "gen_kubeconfig_sh" {
131152
content = "eksctl utils write-kubeconfig --cluster ${var.cluster_name} --region ${data.aws_availability_zones.available.id} --kubeconfig ${var.cluster_name}-kubeconfig"
132153
filename = "${var.output_path}/generate-${var.cluster_name}-kubeconfig.sh"

modules/aws/k8s/variables.tf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,12 @@ variable "output_path" {
3838

3939
variable "tags" {
4040
type = map(any)
41+
}
42+
43+
variable "lb_controller_helm_chart_version" {
44+
default = "1.7.1"
45+
}
46+
47+
variable "lb_controller_settings" {
48+
default = { "controllerConfig" = { "featureGates" = { "SubnetsClusterTagCheck" : "false" } } }
4149
}

modules/tsb/mp/main.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ resource "helm_release" "managementplane" {
8181
tsb_password = coalesce(var.tsb_password, random_password.tsb.result)
8282
tsb_org = var.tsb_org
8383
tsb_fqdn = var.tsb_fqdn
84+
cloud = can(regex("eks", var.k8s_host)) ? "aws" : "none"
8485
})]
8586
set {
8687
name = "secrets.tsb.cert"

modules/tsb/mp/manifests/tsb/managementplane-values.yaml.tmpl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,14 @@ spec:
1818
components:
1919
frontEnvoy:
2020
port: 443
21+
%{ if cloud == "aws"}
22+
kubeSpec:
23+
service:
24+
annotations:
25+
service.beta.kubernetes.io/aws-load-balancer-type: external
26+
service.beta.kubernetes.io/aws-load-balancer-attributes: "load_balancing.cross_zone.enabled=true"
27+
service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
28+
%{ endif }
2129
webUI:
2230
kubeSpec:
2331
overlays:

0 commit comments

Comments
 (0)