Files
infrastructure/servers/legion/cert-manager.tf

64 lines
1.4 KiB
Terraform

# cert-manager — TLS certificate management via Let's Encrypt + Cloudflare DNS-01
resource "helm_release" "cert_manager" {
name = "cert-manager"
repository = "https://charts.jetstack.io"
chart = "cert-manager"
version = "v1.17.1"
namespace = "cert-manager"
create_namespace = true
set {
name = "crds.enabled"
value = "true"
}
}
resource "kubernetes_secret" "cloudflare_api_key" {
metadata {
name = "cloudflare-api-key"
namespace = "cert-manager"
}
data = {
api-key = var.cloudflare_api_key
}
depends_on = [helm_release.cert_manager]
}
resource "kubernetes_manifest" "cluster_issuer_prod" {
manifest = {
apiVersion = "cert-manager.io/v1"
kind = "ClusterIssuer"
metadata = {
name = "letsencrypt-prod"
}
spec = {
acme = {
server = "https://acme-v02.api.letsencrypt.org/directory"
email = var.cloudflare_email
privateKeySecretRef = {
name = "letsencrypt-prod"
}
solvers = [{
dns01 = {
cloudflare = {
email = var.cloudflare_email
apiKeySecretRef = {
name = "cloudflare-api-key"
key = "api-key"
}
}
}
}]
}
}
}
depends_on = [
helm_release.cert_manager,
kubernetes_secret.cloudflare_api_key,
]
}