2025-03-15 23:01:46 +01:00
|
|
|
resource "kubernetes_namespace" "mail" {
|
|
|
|
|
metadata {
|
|
|
|
|
annotations = {
|
|
|
|
|
name = "mail"
|
|
|
|
|
}
|
|
|
|
|
labels = {
|
|
|
|
|
name = "mail"
|
|
|
|
|
}
|
|
|
|
|
name = "mail"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-03-16 19:37:44 +01:00
|
|
|
resource "kubernetes_secret" "relay_mail_credentials" {
|
|
|
|
|
metadata {
|
|
|
|
|
name = "relay-mail-credentials"
|
|
|
|
|
namespace = kubernetes_namespace.mail.metadata[0].name
|
|
|
|
|
}
|
|
|
|
|
data = {
|
2025-04-27 22:36:18 +02:00
|
|
|
username = var.relay_smtp_username
|
|
|
|
|
password = var.relay_smtp_password
|
2025-03-16 19:37:44 +01:00
|
|
|
}
|
|
|
|
|
type = "Opaque"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
resource "kubernetes_service_account" "mail_app" {
|
2025-03-15 23:01:46 +01:00
|
|
|
|
|
|
|
|
metadata {
|
|
|
|
|
name = "mail-app-sa"
|
|
|
|
|
namespace = kubernetes_namespace.mail.metadata[0].name
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
automount_service_account_token = false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
resource "kubernetes_manifest" "mail_certificate" {
|
|
|
|
|
manifest = {
|
|
|
|
|
apiVersion = "cert-manager.io/v1"
|
|
|
|
|
kind = "Certificate"
|
|
|
|
|
metadata = {
|
|
|
|
|
name = "mail-cert"
|
|
|
|
|
namespace = kubernetes_namespace.mail.metadata[0].name
|
|
|
|
|
}
|
|
|
|
|
spec = {
|
|
|
|
|
secretName = "mail-tls"
|
|
|
|
|
issuerRef = {
|
|
|
|
|
name = "letsencrypt-prod"
|
|
|
|
|
kind = "ClusterIssuer"
|
|
|
|
|
}
|
2025-04-27 22:36:18 +02:00
|
|
|
commonName = "imap.${var.primary_domain}"
|
|
|
|
|
dnsNames = flatten([for account in var.email_accounts : ["imap.${account.domain}", "smtp.${account.domain}"]])
|
2025-03-15 23:01:46 +01:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|