57 lines
1.1 KiB
Terraform
57 lines
1.1 KiB
Terraform
|
|
resource "tls_private_key" "tls" {
|
||
|
|
algorithm = "ED25519"
|
||
|
|
}
|
||
|
|
|
||
|
|
resource "tls_self_signed_cert" "tls" {
|
||
|
|
private_key_pem = tls_private_key.tls.private_key_pem
|
||
|
|
|
||
|
|
subject {
|
||
|
|
common_name = "kube-ca"
|
||
|
|
organization = "Alexandre Pires, Portugal"
|
||
|
|
}
|
||
|
|
|
||
|
|
validity_period_hours = 87600
|
||
|
|
is_ca_certificate = true
|
||
|
|
|
||
|
|
allowed_uses = [
|
||
|
|
"cert_signing",
|
||
|
|
"key_encipherment",
|
||
|
|
"digital_signature",
|
||
|
|
"crl_signing"
|
||
|
|
]
|
||
|
|
}
|
||
|
|
|
||
|
|
resource "kubernetes_secret" "root_ca" {
|
||
|
|
metadata {
|
||
|
|
name = "root-ca"
|
||
|
|
namespace = "cert-manager"
|
||
|
|
}
|
||
|
|
data = {
|
||
|
|
"tls.crt" = tls_self_signed_cert.tls.cert_pem
|
||
|
|
"tls.key" = tls_private_key.tls.private_key_pem
|
||
|
|
}
|
||
|
|
|
||
|
|
type = "kubernetes.io/tls"
|
||
|
|
}
|
||
|
|
|
||
|
|
resource "kubernetes_manifest" "cluster_issuer" {
|
||
|
|
|
||
|
|
manifest = {
|
||
|
|
apiVersion = "cert-manager.io/v1"
|
||
|
|
kind = "ClusterIssuer"
|
||
|
|
metadata = {
|
||
|
|
name = local.internal_issuer
|
||
|
|
annotations = {
|
||
|
|
"cert-manager.io/issuer-group" = "cert-manager.io"
|
||
|
|
"cert-manager.io/issuer-kind" = "Issuer"
|
||
|
|
"cert-manager.io/issuer-name" = local.internal_issuer
|
||
|
|
}
|
||
|
|
}
|
||
|
|
spec = {
|
||
|
|
ca = {
|
||
|
|
secretName = "root-ca"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|