devops/infra/modules/traefik/main.tf

59 lines
1.4 KiB
HCL

resource "helm_release" "traefik" {
depends_on = [var.wait_on]
name = "traefik"
repository = "https://helm.traefik.io/traefik"
chart = "traefik"
namespace = var.namespace
version = var.chart_version
wait = false
wait_for_jobs = true
values = [
file("${path.module}/traefik-values.yaml")
]
}
resource "kubernetes_manifest" "preserve-host-middleware" {
depends_on = [helm_release.traefik]
manifest = {
apiVersion = "traefik.io/v1alpha1"
kind = "Middleware"
metadata = {
name = "preserve-host-headers"
namespace = "default" # NOTE: Hardcoded by design
}
spec = {
headers = {
customRequestHeaders = {
"X-Forwarded-Proto" = "https"
"X-Forwarded-Port" = "443"
}
}
}
}
}
resource "kubernetes_manifest" "https-redirect-middleware" {
depends_on = [helm_release.traefik]
manifest = {
apiVersion = "traefik.io/v1alpha1"
kind = "Middleware"
metadata = {
name = "redirect-to-https"
namespace = "default" # NOTE: Hardcoded by design
}
spec = {
redirectScheme = {
permanent = true
scheme = "https"
}
}
}
}
output "installed" {
value = true
depends_on = [helm_release.traefik, kubernetes_manifest.preserve-host-middleware, kubernetes_manifest.https-redirect-middleware]
}