From 5c73779a4adc1a25b3c8c47ed4424a929c16ef29 Mon Sep 17 00:00:00 2001 From: Christian Date: Wed, 16 Mar 2022 17:54:10 +0100 Subject: [PATCH] terraform update --- terraform/helm/certmanager.tf | 31 +++++++++++++ terraform/helm/traefik.tf | 46 ++++++++++++++++++++ terraform/kubectl/manifest.tf | 7 +++ terraform/kubectl/provider.tf | 24 ++++++++++ terraform/kubernetes/provider.tf | 13 +++--- terraform/kubernetes/templates/deployment.tf | 41 +++++++++++++++++ terraform/kubernetes/templates/ingress.tf | 39 +++++++++++++++++ terraform/kubernetes/templates/secret.tf | 15 +++++++ terraform/kubernetes/templates/service.tf | 19 ++++++++ 9 files changed, 228 insertions(+), 7 deletions(-) create mode 100644 terraform/helm/certmanager.tf create mode 100644 terraform/helm/traefik.tf create mode 100644 terraform/kubectl/manifest.tf create mode 100644 terraform/kubectl/provider.tf create mode 100644 terraform/kubernetes/templates/deployment.tf create mode 100644 terraform/kubernetes/templates/ingress.tf create mode 100644 terraform/kubernetes/templates/secret.tf create mode 100644 terraform/kubernetes/templates/service.tf diff --git a/terraform/helm/certmanager.tf b/terraform/helm/certmanager.tf new file mode 100644 index 0000000..03f3c18 --- /dev/null +++ b/terraform/helm/certmanager.tf @@ -0,0 +1,31 @@ +resource "kubernetes_namespace" "certmanager" { + + metadata { + name = "certmanager" + } +} + +resource "helm_release" "certmanager" { + + depends_on = [kubernetes_namespace.certmanager] + + name = "certmanager" + namespace = "certmanager" + + repository = "https://charts.jetstack.io" + chart = "cert-manager" + + # Install Kubernetes CRDs + set { + name = "installCRDs" + value = "true" + } +} + +# (Optional) Create a Time-Sleep for Certificates and Issuer Manifests to deploy later +# resource "time_sleep" "wait_for_certmanager" { +# +# depends_on = [helm_release.certmanager] +# +# create_duration = "10s" +# } diff --git a/terraform/helm/traefik.tf b/terraform/helm/traefik.tf new file mode 100644 index 0000000..7634ddc --- /dev/null +++ b/terraform/helm/traefik.tf @@ -0,0 +1,46 @@ +resource "kubernetes_namespace" "traefik" { + + metadata { + name = "traefik" + } + +} + +resource "helm_release" "traefik" { + + depends_on = [kubernetes_namespace.traefik] + + name = "traefik" + namespace = "traefik" + + repository = "https://helm.traefik.io/traefik" + chart = "traefik" + + # Set Traefik as the Default Ingress Controller + set { + name = "ingressClass.enabled" + value = "true" + } + set { + name = "ingressClass.isDefaultClass" + value = "true" + } + + # Default Redirect + set { + name = "ports.web.redirectTo" + value = "websecure" + } + + # Enable TLS on Websecure + set { + name = "ports.websecure.tls.enabled" + value = "true" + } + + # TLS Options (that's not working for some reason...) + set { + name = "tlsOptions.default.minVersion" + value = "VersionTLS12" + } +} \ No newline at end of file diff --git a/terraform/kubectl/manifest.tf b/terraform/kubectl/manifest.tf new file mode 100644 index 0000000..17285c5 --- /dev/null +++ b/terraform/kubectl/manifest.tf @@ -0,0 +1,7 @@ +resource "kubectl_manifest" "your-manifest-file" { + + yaml_body = <