Skip to content

Commit de6354c

Browse files
authored
Merge pull request #1156 from kube-hetzner/fix/ingress-namespace
Fix ingress namespace not applied
2 parents bf718f4 + f0bbbf6 commit de6354c

File tree

4 files changed

+24
-29
lines changed

4 files changed

+24
-29
lines changed

init.tf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ resource "null_resource" "kustomization" {
160160
{
161161
version = var.traefik_version
162162
values = indent(4, trimspace(local.traefik_values))
163-
target_namespace = local.ingress_target_namespace
163+
target_namespace = local.ingress_controller_namespace
164164
})
165165
destination = "/var/post_install/traefik_ingress.yaml"
166166
}
@@ -172,7 +172,7 @@ resource "null_resource" "kustomization" {
172172
{
173173
version = var.nginx_version
174174
values = indent(4, trimspace(local.nginx_values))
175-
target_namespace = local.ingress_target_namespace
175+
target_namespace = local.ingress_controller_namespace
176176
})
177177
destination = "/var/post_install/nginx_ingress.yaml"
178178
}
@@ -323,7 +323,7 @@ resource "null_resource" "kustomization" {
323323
local.has_external_load_balancer ? [] : [
324324
<<-EOT
325325
timeout 360 bash <<EOF
326-
until [ -n "\$(kubectl get -n ${lookup(local.ingress_controller_namespace_names, local.ingress_controller)} service/${lookup(local.ingress_controller_service_names, local.ingress_controller)} --output=jsonpath='{.status.loadBalancer.ingress[0].${var.lb_hostname != "" ? "hostname" : "ip"}}' 2> /dev/null)" ]; do
326+
until [ -n "\$(kubectl get -n ${local.ingress_controller_namespace} service/${lookup(local.ingress_controller_service_names, var.ingress_controller)} --output=jsonpath='{.status.loadBalancer.ingress[0].${var.lb_hostname != "" ? "hostname" : "ip"}}' 2> /dev/null)" ]; do
327327
echo "Waiting for load-balancer to get an IP..."
328328
sleep 2
329329
done

kube.tf.example

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,8 @@ module "kube-hetzner" {
413413
# After the cluster is deployed, you can always use HelmChartConfig definition to tweak the configuration.
414414
# If you want to disable both controllers set this to "none"
415415
# ingress_controller = "nginx"
416-
# ingress_target_namespace = "" // In which namespace to deploy the ingress controllers. Defaults to the ingress_controller variable, eg (nginx, traefik)
416+
# Namespace in which to deploy the ingress controllers. Defaults to the ingress_controller variable, eg (nginx, traefik)
417+
# ingress_target_namespace = ""
417418

418419
# You can change the number of replicas for selected ingress controller here. The default 0 means autoselecting based on number of agent nodes (1 node = 1 replica, 2 nodes = 2 replicas, 3+ nodes = 3 replicas)
419420
# ingress_replica_count = 1

locals.tf

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ locals {
8080
"https://raw.githubusercontent.com/rancher/system-upgrade-controller/master/manifests/system-upgrade-controller.yaml",
8181
],
8282
var.disable_hetzner_csi ? [] : ["hcloud-csi.yml"],
83-
lookup(local.ingress_controller_install_resources, local.ingress_controller, []),
83+
lookup(local.ingress_controller_install_resources, var.ingress_controller, []),
8484
lookup(local.cni_install_resources, var.cni_plugin, []),
8585
var.enable_longhorn ? ["longhorn.yaml"] : [],
8686
var.enable_csi_driver_smb ? ["csi-driver-smb.yaml"] : [],
@@ -169,16 +169,27 @@ locals {
169169

170170
using_klipper_lb = var.enable_klipper_metal_lb || local.is_single_node_cluster
171171

172-
has_external_load_balancer = local.using_klipper_lb || local.ingress_controller == "none"
172+
has_external_load_balancer = local.using_klipper_lb || var.ingress_controller == "none"
173173
load_balancer_name = "${var.cluster_name}-${var.ingress_controller}"
174174

175+
ingress_controller_service_names = {
176+
"traefik" = "traefik"
177+
"nginx" = "nginx-ingress-nginx-controller"
178+
}
179+
180+
ingress_controller_install_resources = {
181+
"traefik" = ["traefik_ingress.yaml"]
182+
"nginx" = ["nginx_ingress.yaml"]
183+
}
184+
175185
default_ingress_namespace_mapping = {
176186
"traefik" = "traefik"
177187
"nginx" = "nginx"
178188
}
179-
ingress_target_namespace = var.ingress_target_namespace != "" ? var.ingress_target_namespace : lookup(local.default_ingress_namespace_mapping, var.ingress_controller, "")
180-
ingress_replica_count = (var.ingress_replica_count > 0) ? var.ingress_replica_count : (local.agent_count > 2) ? 3 : (local.agent_count == 2) ? 2 : 1
181-
ingress_max_replica_count = (var.ingress_max_replica_count > local.ingress_replica_count) ? var.ingress_max_replica_count : local.ingress_replica_count
189+
190+
ingress_controller_namespace = var.ingress_target_namespace != "" ? var.ingress_target_namespace : lookup(local.default_ingress_namespace_mapping, var.ingress_controller, "")
191+
ingress_replica_count = (var.ingress_replica_count > 0) ? var.ingress_replica_count : (local.agent_count > 2) ? 3 : (local.agent_count == 2) ? 2 : 1
192+
ingress_max_replica_count = (var.ingress_max_replica_count > local.ingress_replica_count) ? var.ingress_max_replica_count : local.ingress_replica_count
182193

183194
# disable k3s extras
184195
disable_extras = concat(var.enable_local_storage ? [] : ["local-storage"], local.using_klipper_lb ? [] : ["servicelb"], ["traefik"], var.enable_metrics_server ? [] : ["metrics-server"])
@@ -361,23 +372,6 @@ locals {
361372
kube_controller_manager_arg = "flex-volume-plugin-dir=/var/lib/kubelet/volumeplugins"
362373
flannel_iface = "eth1"
363374

364-
ingress_controller = var.ingress_controller
365-
366-
ingress_controller_service_names = {
367-
"traefik" = "traefik"
368-
"nginx" = "nginx-ingress-nginx-controller"
369-
}
370-
371-
ingress_controller_namespace_names = {
372-
"traefik" = "traefik"
373-
"nginx" = "nginx"
374-
}
375-
376-
ingress_controller_install_resources = {
377-
"traefik" = ["traefik_ingress.yaml"]
378-
"nginx" = ["nginx_ingress.yaml"]
379-
}
380-
381375
cilium_values = var.cilium_values != "" ? var.cilium_values : <<EOT
382376
# Enable Kubernetes host-scope IPAM mode (required for K3s + Hetzner CCM)
383377
ipam:
@@ -588,7 +582,7 @@ podDisruptionBudget:
588582
%{endif~}
589583
additionalArguments:
590584
- "--entrypoints.tcp=true"
591-
- "--providers.kubernetesingress.ingressendpoint.publishedservice=${local.ingress_target_namespace}/traefik"
585+
- "--providers.kubernetesingress.ingressendpoint.publishedservice=${local.ingress_controller_namespace}/traefik"
592586
%{for option in var.traefik_additional_options~}
593587
- "${option}"
594588
%{endfor~}

values-export.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,14 @@ resource "local_file" "longhorn_values" {
2727
}
2828

2929
resource "local_file" "traefik_values" {
30-
count = var.export_values && local.ingress_controller == "traefik" ? 1 : 0
30+
count = var.export_values && var.ingress_controller == "traefik" ? 1 : 0
3131
content = local.traefik_values
3232
filename = "traefik_values.yaml"
3333
file_permission = "600"
3434
}
3535

3636
resource "local_file" "nginx_values" {
37-
count = var.export_values && local.ingress_controller == "nginx" ? 1 : 0
37+
count = var.export_values && var.ingress_controller == "nginx" ? 1 : 0
3838
content = local.nginx_values
3939
filename = "nginx_values.yaml"
4040
file_permission = "600"

0 commit comments

Comments
 (0)