diff --git a/core/ingress.tf b/core/ingress.tf index 07e707f..fe14fdc 100644 --- a/core/ingress.tf +++ b/core/ingress.tf @@ -14,12 +14,15 @@ helm install traefik traefik/traefik \ resource "helm_release" "nginx_ingress" { - name = "traefik" - repository = "https://traefik.github.io/charts" - chart = "traefik" - version = "v41.7.1" - namespace = "traefik" + name = "traefik" + repository = "https://traefik.github.io/charts" + chart = "traefik" + version = "v41.7.1" + namespace = "traefik" create_namespace = true + wait = false + + set = [ { name = "ports.web.nodePort" @@ -35,4 +38,4 @@ resource "helm_release" "nginx_ingress" { } ] -} \ No newline at end of file +} diff --git a/core/module.tf b/core/module.tf index 4032506..c11b510 100644 --- a/core/module.tf +++ b/core/module.tf @@ -56,6 +56,7 @@ variable "kubernetes" { service_type = optional(string, "ClusterIP") service_name = optional(string) domain_name = optional(string) + exposed = optional(bool, true) liveness_tcp_socket = optional(number) liveness_http_get = optional(string) liveness_http_get_path = optional(string) diff --git a/core/services.tf b/core/services.tf index 7f2d7f2..c587407 100644 --- a/core/services.tf +++ b/core/services.tf @@ -1,3 +1,31 @@ +resource "kubernetes_ingress_v1" "automatic_ingress" { + for_each = { for key, value in var.kubernetes : key => value if value.service_port != null && value.enabled == true && value.docker != true && value.exposed == true } + metadata { + name = "${each.key}-ingress" + namespace = coalesce(each.value.namespace, each.value.connected_namespace, each.key) + } + + spec { + ingress_class_name = "traefik" + rule { + host = join(".", [coalesce(each.value.domain_name, each.key), "geeraert.eu"]) + http { + path { + path = "/" + backend { + service { + name = "${each.key}-svc" + port { + number = each.value.service_port[0] #selecting the first of the list + } + } + } + } + } + } + } +} + resource "kubernetes_service_v1" "automatic_service" { for_each = { for key, value in var.kubernetes : key => value if value.service_port != null && value.enabled == true && value.docker != true } metadata { diff --git a/core/variables.auto.tfvars b/core/variables.auto.tfvars index 9ceb929..c64e50f 100644 --- a/core/variables.auto.tfvars +++ b/core/variables.auto.tfvars @@ -1,6 +1,6 @@ kubernetes = { reverse-proxy = { - #enabled = false + enabled = false #docker = true image = "nginx:latest" service_port = [80, 443] @@ -79,6 +79,7 @@ kubernetes = { #enabled = false #docker = true image = "gitea/act_runner:latest" + exposed = false connected_namespace = "gitea" environment = { GITEA_INSTANCE_URL = { value = "https://gitea.geeraert.eu/" } @@ -140,6 +141,7 @@ kubernetes = { image = "ghcr.io/bitwarden/admin:2026.1.0" extra_manifest = ["/opt/kubernetes/Terraform_kube/external_manifests/bitwarden/config.configmap.yml", "/opt/kubernetes/Terraform_kube/external_manifests/bitwarden/global.env.configmap.yml", "/opt/kubernetes/Terraform_kube/external_manifests/bitwarden/global.override.env.configmap.yml", "/opt/kubernetes/Terraform_kube/external_manifests/bitwarden/mssql.env.configmap.yml", "/opt/kubernetes/Terraform_kube/external_manifests/bitwarden/mssql.override.env.configmap.yml", "/opt/kubernetes/Terraform_kube/external_manifests/bitwarden/uid.env.configmap.yml", "/opt/kubernetes/Terraform_kube/external_manifests/bitwarden/bitwarden-identity-cert-password.secret.yml"] service_port = [5000] + exposed = false config_map_ref = ["global.env", "uid.env", "global.override.env"] environment = {} @@ -168,6 +170,7 @@ kubernetes = { name = "bitwarden-api" image = "gitea.tryton.geeraert.eu/pi-ux-ce/bitbetter_api:2026.1.0" service_port = [5000] + exposed = false config_map_ref = ["global.env", "uid.env", "global.override.env"] environment = {} @@ -195,6 +198,7 @@ kubernetes = { name = "bitwarden-attachments" image = "ghcr.io/bitwarden/attachments:2026.1.0" service_port = [5000] + exposed = false config_map_ref = ["global.env", "uid.env"] environment = {} @@ -213,6 +217,7 @@ kubernetes = { name = "bitwarden-events" image = "ghcr.io/bitwarden/events:2026.1.0" service_port = [5000] + exposed = false config_map_ref = ["global.env", "uid.env", "global.override.env"] environment = {} @@ -235,6 +240,7 @@ kubernetes = { name = "bitwarden-icons" image = "ghcr.io/bitwarden/icons:2026.1.0" service_port = [5000] + exposed = false config_map_ref = ["global.env", "uid.env"] environment = {} @@ -256,6 +262,7 @@ kubernetes = { name = "bitwarden-identity" image = "gitea.tryton.geeraert.eu/pi-ux-ce/bitbetter_identity:2026.1.0" service_port = [5000] + exposed = false config_map_ref = ["global.env", "uid.env", "global.override.env"] environment = {} @@ -283,6 +290,7 @@ kubernetes = { name = "bitwarden-mssql" image = "ghcr.io/bitwarden/mssql:2026.1.0" service_port = [1433, 5000] + exposed = false config_map_ref = ["mssql.env", "uid.env", "mssql.override.env"] environment = {} database = { @@ -311,6 +319,8 @@ kubernetes = { name = "bitwarden-nginx" image = "ghcr.io/bitwarden/nginx:2026.1.0" service_port = [5000, 8080, 8443] + exposed = true #no need to set as true but I did it for easy access + domain_name = "bitwarden" config_map_ref = ["uid.env"] environment = {} @@ -338,6 +348,7 @@ kubernetes = { name = "bitwarden-notifications" image = "ghcr.io/bitwarden/notifications:2026.1.0" service_port = [5000] + exposed = false config_map_ref = ["global.env", "uid.env", "global.override.env"] environment = {} @@ -359,6 +370,7 @@ kubernetes = { name = "bitwarden-sso" image = "ghcr.io/bitwarden/sso:2026.1.0" service_port = [5000] + exposed = false config_map_ref = ["global.env", "uid.env", "global.override.env"] environment = {} @@ -385,6 +397,7 @@ kubernetes = { name = "bitwarden-web" image = "ghcr.io/bitwarden/web:2026.1.0" service_port = [5000] + exposed = false config_map_ref = ["global.env", "uid.env"] environment = {}