Files
homelab/terraform/bootstrap-certificates.tf
T
Story Crater Bot bb1239ab0d Re-enable cert-manager manifests for TF import
- ClusterIssuers + Certificates now back in TF
- Will import existing live resources
2026-08-18 15:08:01 -07:00

105 lines
2.1 KiB
Terraform

resource "kubernetes_manifest" "selfsigned_bootstrap" {
manifest = {
apiVersion = "cert-manager.io/v1"
kind = "ClusterIssuer"
metadata = {
name = "selfsigned-bootstrap"
}
spec = {
selfSigned = {}
}
}
field_manager {
name = "terraform"
}
}
resource "kubernetes_manifest" "homelab_ca_cert" {
manifest = {
apiVersion = "cert-manager.io/v1"
kind = "Certificate"
metadata = {
name = "homelab-ca"
namespace = kubernetes_namespace.namespaces["cert-manager"].metadata[0].name
}
spec = {
secretName = "homelab-ca-secret"
commonName = "homelab-ca"
isCA = true
issuerRef = {
name = "selfsigned-bootstrap"
kind = "ClusterIssuer"
}
duration = "87600h"
renewBefore = "720h"
privateKey = {
algorithm = "ECDSA"
size = 256
}
}
}
field_manager {
name = "terraform"
}
depends_on = [
kubernetes_manifest.selfsigned_bootstrap
]
}
resource "kubernetes_manifest" "homelab_ca_issuer" {
manifest = {
apiVersion = "cert-manager.io/v1"
kind = "ClusterIssuer"
metadata = {
name = "homelab-ca"
}
spec = {
ca = {
secretName = "homelab-ca-secret"
}
}
}
field_manager {
name = "terraform"
}
depends_on = [
kubernetes_manifest.homelab_ca_cert
]
}
resource "kubernetes_manifest" "wildcard_cert" {
manifest = {
apiVersion = "cert-manager.io/v1"
kind = "Certificate"
metadata = {
name = "homelab-tls"
namespace = kubernetes_namespace.namespaces["ingress-nginx"].metadata[0].name
}
spec = {
secretName = "homelab-tls"
commonName = "*.${var.cluster_domain}"
dnsNames = ["*.${var.cluster_domain}"]
issuerRef = {
name = "homelab-ca"
kind = "ClusterIssuer"
}
duration = "2160h"
renewBefore = "720h"
}
}
field_manager {
name = "terraform"
}
depends_on = [
kubernetes_manifest.homelab_ca_issuer,
kubernetes_namespace.namespaces
]
}