59 lines
1.4 KiB
HCL
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]
|
|
}
|