diff --git a/aws/_modules/eks/ingress.tf b/aws/_modules/eks/ingress.tf index db7c6b71..332a0891 100644 --- a/aws/_modules/eks/ingress.tf +++ b/aws/_modules/eks/ingress.tf @@ -1,4 +1,6 @@ resource "kubernetes_service" "current" { + count = var.disable_default_ingress ? 0 : 1 + provider = kubernetes.eks metadata { @@ -30,36 +32,39 @@ resource "kubernetes_service" "current" { } resource "aws_route53_zone" "current" { - name = "${var.metadata_fqdn}." -} + count = var.disable_default_ingress ? 0 : 1 -locals { - elb_hostname = kubernetes_service.current.load_balancer_ingress[0].hostname + name = "${var.metadata_fqdn}." } data "aws_elb_hosted_zone_id" "current" { + count = var.disable_default_ingress ? 0 : 1 } resource "aws_route53_record" "host" { - zone_id = aws_route53_zone.current.zone_id + count = var.disable_default_ingress ? 0 : 1 + + zone_id = aws_route53_zone.current[0].zone_id name = var.metadata_fqdn type = "A" alias { - name = local.elb_hostname - zone_id = data.aws_elb_hosted_zone_id.current.id + name = kubernetes_service.current[0].load_balancer_ingress[0].hostname + zone_id = data.aws_elb_hosted_zone_id.current[0].id evaluate_target_health = true } } resource "aws_route53_record" "wildcard" { - zone_id = aws_route53_zone.current.zone_id + count = var.disable_default_ingress ? 0 : 1 + + zone_id = aws_route53_zone.current[0].zone_id name = "*.${var.metadata_fqdn}" type = "A" alias { - name = local.elb_hostname - zone_id = data.aws_elb_hosted_zone_id.current.id + name = kubernetes_service.current[0].load_balancer_ingress[0].hostname + zone_id = data.aws_elb_hosted_zone_id.current[0].id evaluate_target_health = true } } diff --git a/aws/_modules/eks/outputs.tf b/aws/_modules/eks/outputs.tf deleted file mode 100644 index e7a60c2a..00000000 --- a/aws/_modules/eks/outputs.tf +++ /dev/null @@ -1,5 +0,0 @@ -output "ingress_zone_name_servers" { - value = aws_route53_zone.current.name_servers - description = "Nameservers of the cluster's managed zone." -} - diff --git a/aws/_modules/eks/variables.tf b/aws/_modules/eks/variables.tf index 5b4d9552..456a919f 100644 --- a/aws/_modules/eks/variables.tf +++ b/aws/_modules/eks/variables.tf @@ -69,3 +69,8 @@ variable "manifest_path" { type = string description = "Path to Kustomize overlay to build." } + +variable "disable_default_ingress" { + type = bool + description = "Whether to disable the default ingress." +} diff --git a/aws/cluster/configuration.tf b/aws/cluster/configuration.tf index cfc65192..ccb03133 100644 --- a/aws/cluster/configuration.tf +++ b/aws/cluster/configuration.tf @@ -33,4 +33,6 @@ locals { manifest_path_default = "manifests/overlays/${terraform.workspace}" manifest_path = var.manifest_path != null ? var.manifest_path : local.manifest_path_default + + disable_default_ingress = lookup(local.cfg, "disable_default_ingress", false) } diff --git a/aws/cluster/main.tf b/aws/cluster/main.tf index 44cc4a4f..a0bd9a9f 100644 --- a/aws/cluster/main.tf +++ b/aws/cluster/main.tf @@ -32,4 +32,6 @@ module "cluster" { aws_auth_map_accounts = local.cluster_aws_auth_map_accounts manifest_path = local.manifest_path + + disable_default_ingress = local.disable_default_ingress } diff --git a/azurerm/_modules/aks/ingress.tf b/azurerm/_modules/aks/ingress.tf index f0c14abc..034c32a6 100644 --- a/azurerm/_modules/aks/ingress.tf +++ b/azurerm/_modules/aks/ingress.tf @@ -1,4 +1,6 @@ resource "azurerm_public_ip" "current" { + count = var.disable_default_ingress ? 0 : 1 + name = var.metadata_name location = azurerm_kubernetes_cluster.current.location resource_group_name = azurerm_kubernetes_cluster.current.node_resource_group @@ -10,6 +12,8 @@ resource "azurerm_public_ip" "current" { } resource "kubernetes_service" "current" { + count = var.disable_default_ingress ? 0 : 1 + provider = kubernetes.aks metadata { @@ -19,7 +23,7 @@ resource "kubernetes_service" "current" { spec { type = "LoadBalancer" - load_balancer_ip = azurerm_public_ip.current.ip_address + load_balancer_ip = azurerm_public_ip.current[0].ip_address selector = { "kubestack.com/ingress-default" = "true" @@ -42,6 +46,8 @@ resource "kubernetes_service" "current" { } resource "azurerm_dns_zone" "current" { + count = var.disable_default_ingress ? 0 : 1 + name = var.metadata_fqdn resource_group_name = data.azurerm_resource_group.current.name @@ -49,21 +55,25 @@ resource "azurerm_dns_zone" "current" { } resource "azurerm_dns_a_record" "host" { + count = var.disable_default_ingress ? 0 : 1 + name = "@" - zone_name = azurerm_dns_zone.current.name + zone_name = azurerm_dns_zone.current[0].name resource_group_name = data.azurerm_resource_group.current.name ttl = 300 - records = [azurerm_public_ip.current.ip_address] + records = [azurerm_public_ip.current[0].ip_address] tags = var.metadata_labels } resource "azurerm_dns_a_record" "wildcard" { + count = var.disable_default_ingress ? 0 : 1 + name = "*" - zone_name = azurerm_dns_zone.current.name + zone_name = azurerm_dns_zone.current[0].name resource_group_name = data.azurerm_resource_group.current.name ttl = 300 - records = [azurerm_public_ip.current.ip_address] + records = [azurerm_public_ip.current[0].ip_address] tags = var.metadata_labels } diff --git a/azurerm/_modules/aks/outputs.tf b/azurerm/_modules/aks/outputs.tf deleted file mode 100644 index 0eed8d24..00000000 --- a/azurerm/_modules/aks/outputs.tf +++ /dev/null @@ -1,5 +0,0 @@ -output "ingress_zone_name_servers" { - value = azurerm_dns_zone.current.name_servers - description = "Nameservers of the cluster's managed zone." -} - diff --git a/azurerm/_modules/aks/variables.tf b/azurerm/_modules/aks/variables.tf index a88e12c8..07c473a8 100644 --- a/azurerm/_modules/aks/variables.tf +++ b/azurerm/_modules/aks/variables.tf @@ -81,3 +81,8 @@ variable "manifest_path" { type = string description = "Path to Kustomize overlay to build." } + +variable "disable_default_ingress" { + type = bool + description = "Whether to disable the default ingress." +} diff --git a/azurerm/cluster/configuration.tf b/azurerm/cluster/configuration.tf index eb86b5d6..82ce487b 100644 --- a/azurerm/cluster/configuration.tf +++ b/azurerm/cluster/configuration.tf @@ -31,4 +31,6 @@ locals { manifest_path_default = "manifests/overlays/${terraform.workspace}" manifest_path = var.manifest_path != null ? var.manifest_path : local.manifest_path_default + + disable_default_ingress = lookup(local.cfg, "disable_default_ingress", false) } diff --git a/azurerm/cluster/main.tf b/azurerm/cluster/main.tf index 88128361..0b851894 100644 --- a/azurerm/cluster/main.tf +++ b/azurerm/cluster/main.tf @@ -39,4 +39,6 @@ module "cluster" { default_node_pool_os_disk_size_gb = local.default_node_pool_os_disk_size_gb manifest_path = local.manifest_path + + disable_default_ingress = local.disable_default_ingress } diff --git a/google/_modules/gke/ingress.tf b/google/_modules/gke/ingress.tf index 3a9a50fd..66a0a5c8 100644 --- a/google/_modules/gke/ingress.tf +++ b/google/_modules/gke/ingress.tf @@ -1,4 +1,6 @@ resource "google_compute_address" "current" { + count = var.disable_default_ingress ? 0 : 1 + region = google_container_cluster.current.location project = var.project @@ -6,6 +8,8 @@ resource "google_compute_address" "current" { } resource "kubernetes_service" "current" { + count = var.disable_default_ingress ? 0 : 1 + provider = kubernetes.gke metadata { @@ -15,7 +19,7 @@ resource "kubernetes_service" "current" { spec { type = "LoadBalancer" - load_balancer_ip = google_compute_address.current.address + load_balancer_ip = google_compute_address.current[0].address selector = { "kubestack.com/ingress-default" = "true" @@ -39,6 +43,8 @@ resource "kubernetes_service" "current" { } resource "google_dns_managed_zone" "current" { + count = var.disable_default_ingress ? 0 : 1 + project = var.project name = var.metadata_name @@ -46,25 +52,29 @@ resource "google_dns_managed_zone" "current" { } resource "google_dns_record_set" "host" { + count = var.disable_default_ingress ? 0 : 1 + project = var.project - name = google_dns_managed_zone.current.dns_name + name = google_dns_managed_zone.current[0].dns_name type = "A" ttl = 300 - managed_zone = google_dns_managed_zone.current.name + managed_zone = google_dns_managed_zone.current[0].name - rrdatas = [google_compute_address.current.address] + rrdatas = [google_compute_address.current[0].address] } resource "google_dns_record_set" "wildcard" { + count = var.disable_default_ingress ? 0 : 1 + project = var.project - name = "*.${google_dns_managed_zone.current.dns_name}" + name = "*.${google_dns_managed_zone.current[0].dns_name}" type = "A" ttl = 300 - managed_zone = google_dns_managed_zone.current.name + managed_zone = google_dns_managed_zone.current[0].name - rrdatas = [google_compute_address.current.address] + rrdatas = [google_compute_address.current[0].address] } diff --git a/google/_modules/gke/outputs.tf b/google/_modules/gke/outputs.tf deleted file mode 100644 index 6dfd1f12..00000000 --- a/google/_modules/gke/outputs.tf +++ /dev/null @@ -1,5 +0,0 @@ -output "ingress_zone_name_servers" { - value = google_dns_managed_zone.current.name_servers - description = "Nameservers of the cluster's managed zone." -} - diff --git a/google/_modules/gke/variables.tf b/google/_modules/gke/variables.tf index 953460b7..a93cdda0 100644 --- a/google/_modules/gke/variables.tf +++ b/google/_modules/gke/variables.tf @@ -108,3 +108,8 @@ variable "manifest_path" { type = string description = "Path to Kustomize overlay to build." } + +variable "disable_default_ingress" { + type = bool + description = "Whether to disable the default ingress." +} diff --git a/google/cluster/configuration.tf b/google/cluster/configuration.tf index aeb414fc..22fea269 100644 --- a/google/cluster/configuration.tf +++ b/google/cluster/configuration.tf @@ -54,4 +54,6 @@ locals { manifest_path_default = "manifests/overlays/${terraform.workspace}" manifest_path = var.manifest_path != null ? var.manifest_path : local.manifest_path_default + + disable_default_ingress = lookup(local.cfg, "disable_default_ingress", false) } diff --git a/google/cluster/main.tf b/google/cluster/main.tf index 87351433..f1208ae3 100644 --- a/google/cluster/main.tf +++ b/google/cluster/main.tf @@ -45,4 +45,6 @@ module "cluster" { auto_upgrade = local.cluster_auto_upgrade manifest_path = local.manifest_path + + disable_default_ingress = local.disable_default_ingress }