From d6e371681578c044eee8d95033ef482b97767df3 Mon Sep 17 00:00:00 2001 From: Julio Castillo Date: Fri, 10 Feb 2023 11:10:34 +0100 Subject: [PATCH] Fix gke-cluster dns config feature Fixes #1141 --- modules/gke-cluster/README.md | 28 ++++++++++++++++++++- modules/gke-cluster/main.tf | 10 ++++---- modules/gke-cluster/variables.tf | 4 +-- tests/modules/gke_cluster/examples/dns.yaml | 28 +++++++++++++++++++++ 4 files changed, 62 insertions(+), 8 deletions(-) create mode 100644 tests/modules/gke_cluster/examples/dns.yaml diff --git a/modules/gke-cluster/README.md b/modules/gke-cluster/README.md index df7f14ca..2e09aeb1 100644 --- a/modules/gke-cluster/README.md +++ b/modules/gke-cluster/README.md @@ -97,6 +97,32 @@ module "cluster-autopilot" { } # tftest modules=1 resources=1 inventory=autopilot.yaml ``` + +### Cloud DNS + +This example shows how to [use Cloud DNS as a Kubernetes DNS provider](https://cloud.google.com/kubernetes-engine/docs/how-to/cloud-dns) for GKE Standard clusters. + +```hcl +module "cluster-1" { + source = "./fabric/modules/gke-cluster" + project_id = var.project_id + name = "cluster-1" + location = "europe-west1-b" + vpc_config = { + network = var.vpc.self_link + subnetwork = var.subnet.self_link + secondary_range_names = { pods = "pods", services = "services" } + } + enable_features = { + dns = { + provider = "CLOUD_DNS" + scope = "CLUSTER_SCOPE" + domain = "gke.local" + } + } +} +# tftest modules=1 resources=1 inventory=dns.yaml +``` ## Variables @@ -110,7 +136,7 @@ module "cluster-autopilot" { | [cluster_autoscaling](variables.tf#L17) | Enable and configure limits for Node Auto-Provisioning with Cluster Autoscaler. | object({…}) | | null | | [description](variables.tf#L38) | Cluster description. | string | | null | | [enable_addons](variables.tf#L44) | Addons enabled in the cluster (true means enabled). | object({…}) | | {…} | -| [enable_features](variables.tf#L68) | Enable cluster-level features. Certain features allow configuration. | object({…}) | | {…} | +| [enable_features](variables.tf#L68) | Enable cluster-level features. Certain features allow configuration. | object({…}) | | {…} | | [issue_client_certificate](variables.tf#L107) | Enable issuing client certificate. | bool | | false | | [labels](variables.tf#L113) | Cluster resource labels. | map(string) | | null | | [logging_config](variables.tf#L124) | Logging configuration. | list(string) | | ["SYSTEM_COMPONENTS"] | diff --git a/modules/gke-cluster/main.tf b/modules/gke-cluster/main.tf index 83604c00..9480e42a 100644 --- a/modules/gke-cluster/main.tf +++ b/modules/gke-cluster/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -170,11 +170,11 @@ resource "google_container_cluster" "cluster" { } dynamic "dns_config" { - for_each = var.enable_features.cloud_dns != null ? [""] : [] + for_each = var.enable_features.dns != null ? [""] : [] content { - cluster_dns = enable_features.cloud_dns.cluster_dns - cluster_dns_scope = enable_features.cloud_dns.cluster_dns_scope - cluster_dns_domain = enable_features.cloud_dns.cluster_dns_domain + cluster_dns = var.enable_features.dns.provider + cluster_dns_scope = var.enable_features.dns.scope + cluster_dns_domain = var.enable_features.dns.domain } } diff --git a/modules/gke-cluster/variables.tf b/modules/gke-cluster/variables.tf index ecfa11c9..a51ff208 100644 --- a/modules/gke-cluster/variables.tf +++ b/modules/gke-cluster/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -70,7 +70,7 @@ variable "enable_features" { type = object({ autopilot = optional(bool, false) binary_authorization = optional(bool, false) - cloud_dns = optional(object({ + dns = optional(object({ provider = optional(string) scope = optional(string) domain = optional(string) diff --git a/tests/modules/gke_cluster/examples/dns.yaml b/tests/modules/gke_cluster/examples/dns.yaml new file mode 100644 index 00000000..53792e05 --- /dev/null +++ b/tests/modules/gke_cluster/examples/dns.yaml @@ -0,0 +1,28 @@ +# Copyright 2023 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +values: + module.cluster-1.google_container_cluster.cluster: + dns_config: + - cluster_dns: CLOUD_DNS + cluster_dns_domain: gke.local + cluster_dns_scope: CLUSTER_SCOPE + ip_allocation_policy: + - cluster_secondary_range_name: pods + services_secondary_range_name: services + location: europe-west1-b + name: cluster-1 + +counts: + google_container_cluster: 1