11locals {
2- cert_manager_namespace = " kube-system"
3- cert_manager_version = " 0.14.2"
2+ cert_manager_namespace = " kube-system"
3+ cert_manager_version = " 0.14.2"
4+ cluster_issuer_name = var. cert_manager_use_production_acme_environment ? " clusterissuer-letsencrypt-production" : " clusterissuer-letsencrypt-production"
5+ cert_manager_acme_server = var. cert_manager_use_production_acme_environment ? " https://acme-v02.api.letsencrypt.org/directory" : " https://acme-staging-v02.api.letsencrypt.org/directory"
46}
57
68# Reference an existing route53 zone
@@ -24,6 +26,32 @@ resource "null_resource" "cert_manager" {
2426 }
2527}
2628
29+
30+ # Cert-manager issuer manifest
31+ data "template_file" "cert_manager_issuer" {
32+ template = " ${ file (" ${ path . module } /files/cert_manager_issuer.yaml.tpl" )} "
33+ vars = {
34+ name = local.cluster_issuer_name
35+ environment = var.environment
36+ acme_registration_email = var.cert_manager_acme_registration_email
37+ acme_server = local.cert_manager_acme_server
38+ region = var.region
39+ hosted_zone_id = data.aws_route53_zone.public.zone_id
40+ }
41+ }
42+
43+ # Manually kubectl apply the cert-manager issuer, as the kubernetes terraform provider
44+ # does not have support for custom resources.
45+ resource "null_resource" "cert_manager_issuer" {
46+ triggers = {
47+ manifest_sha1 = " ${ sha1 (" ${ data . template_file . cert_manager_issuer . rendered } " )} "
48+ }
49+ provisioner "local-exec" {
50+ command = " kubectl apply -f - <<EOF\n ${ data . template_file . cert_manager_issuer . rendered } \n EOF"
51+ }
52+ depends_on = [null_resource. cert_manager ]
53+ }
54+
2755data "helm_repository" "jetstack" {
2856 name = " jetstack"
2957 url = " https://charts.jetstack.io"
0 commit comments