11# Define your locals here
22locals {
3- tenant_provider = lower (try (var. cc_metadata . cc_tenant_provider , " aws" ))
3+ tenant_provider = lower (try (var. cc_metadata . cc_tenant_provider , try (var . inputs . external_dns_details . attributes . provider , " aws" ) ))
44 spec = lookup (var. instance , " spec" , {})
55 user_supplied_helm_values = try (local. spec . cert_manager . values , try (var. instance . advanced . cert_manager . values , {}))
66 cert_manager = lookup (local. spec , " cert_manager" , try (var. instance . advanced . cert_manager , {}))
@@ -9,31 +9,45 @@ locals {
99 cnameStrategy = lookup (local. spec , " cname_strategy" , " Follow" )
1010 disable_dns_validation = lookup (local. spec , " disable_dns_validation" , lookup (local. advanced , " disable_dns_validation" , false ))
1111 user_defined_tags = try (local. cert_manager . tags , {})
12- deploy_aws_resources = local. tenant_provider == " aws" ? local. disable_dns_validation ? false : true : false
13- dns_providers = {
14- aws = {
12+
13+ # External DNS configuration (if provided)
14+ external_dns = try (var. inputs . external_dns_details . attributes , null )
15+ has_external_dns = local. external_dns != null && ! local. disable_dns_validation
16+
17+ # Build DNS provider configuration from external_dns input
18+ dns_providers = local. has_external_dns ? (
19+ local. external_dns . provider == " aws" ? {
1520 route53 = {
16- region = try (var . cc_metadata . cc_region , null )
21+ region = local.external_dns.region
1722 accessKeyIDSecretRef = {
18- key = " access-key-id "
19- name = local.disable_dns_validation ? " na " : kubernetes_secret.cert_manager_r53_secret[ 0 ].metadata[ 0 ].name
23+ key = local.external_dns.aws_access_key_id_key
24+ name = local.external_dns.secret_name
2025 }
2126 secretAccessKeySecretRef = {
22- key = " secret-access-key "
23- name = local.disable_dns_validation ? " na " : kubernetes_secret.cert_manager_r53_secret[ 0 ].metadata[ 0 ].name
27+ key = local.external_dns.aws_secret_access_key_key
28+ name = local.external_dns.secret_name
2429 }
2530 }
26- }
27- google = {
31+ } : local. external_dns . provider == " gcp" ? {
2832 cloudDNS = {
29- project = lookup ( try (data . kubernetes_secret_v1 . dns [ 0 ] . data , {}), " project" , " " )
33+ project = try (var . inputs . cloud_account . attributes . project , " " )
3034 serviceAccountSecretRef = {
31- key = " credentials.json "
32- name = local.disable_dns_validation ? " na " : kubernetes_secret.cert_manager_r53_secret[ 0 ].metadata[ 0 ].name
35+ key = local.external_dns.gcp_credentials_json_key
36+ name = local.external_dns.secret_name
3337 }
3438 }
35- }
36- }
39+ } : local. external_dns . provider == " azure" ? {
40+ azureDNS = {
41+ subscriptionID = try (var. inputs . cloud_account . attributes . subscription_id , " " )
42+ tenantID = try (var. inputs . cloud_account . attributes . tenant_id , " " )
43+ clientID = try (var. inputs . cloud_account . attributes . client_id , " " )
44+ clientSecretSecretRef = {
45+ key = local.external_dns.azure_credentials_json_key
46+ name = local.external_dns.secret_name
47+ }
48+ }
49+ } : {}
50+ ) : {}
3751 dns01_validations = {
3852 staging = {
3953 name = " letsencrypt-staging"
@@ -113,8 +127,9 @@ locals {
113127 acme_email = lookup (local. spec , " acme_email" , " " ) != " " ? lookup (local. spec , " acme_email" , " " ) : try (var. cluster . createdBy , null )
114128}
115129
130+ # Fallback: Read existing DNS credentials secret if external_dns not provided (for GCP/Azure)
116131data "kubernetes_secret_v1" "dns" {
117- count = local. tenant_provider == " aws" ? 0 : 1
132+ count = local. has_external_dns ? 0 : (local . tenant_provider == " aws" ? 0 : 1 )
118133 metadata {
119134 name = " facets-tenant-dns"
120135 namespace = " default"
0 commit comments