Skip to content

Commit 0cb8bd6

Browse files
authored
Merge pull request #206 from terraform-google-modules/aaron-lane-v3.0.0
v3.0
2 parents f15c674 + 321eabe commit 0cb8bd6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+1435
-37
lines changed

.kitchen.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,20 @@ suites:
104104
systems:
105105
- name: stub_domains_private
106106
backend: local
107+
- name: "upstream_nameservers"
108+
driver:
109+
root_module_directory: test/fixtures/upstream_nameservers
110+
verifier:
111+
systems:
112+
- name: upstream_nameservers
113+
backend: local
114+
- name: "stub_domains_upstream_nameservers"
115+
driver:
116+
root_module_directory: test/fixtures/stub_domains_upstream_nameservers
117+
verifier:
118+
systems:
119+
- name: stub_domains_upstream_nameservers
120+
backend: local
107121
- name: "workload_metadata_config"
108122
driver:
109123
root_module_directory: test/fixtures/workload_metadata_config

CHANGELOG.md

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ Extending the adopted spec, each change should have a link to its corresponding
88

99
## [Unreleased]
1010

11+
## [v3.0.0] - 2019-07-08
12+
1113
### Added
1214

1315
* Add configuration flag for enable BinAuthZ Admission controller [#160] [#188]
@@ -16,15 +18,16 @@ Extending the adopted spec, each change should have a link to its corresponding
1618
* Support to scale the default node cluster. [#149]
1719
* Support for configuring the network policy provider. [#159]
1820
* Support for database encryption. [#165]
19-
* Submodules for public and private clusters with beta features. [#124] [#188]
21+
* Submodules for public and private clusters with beta features. [#124] [#188] [#203]
2022
* Support for configuring cluster IPv4 CIDRs. [#193]
2123
* Support for configuring IP Masquerade. [#187]
2224
* Support for v2.9 of the Google providers. [#198]
25+
* Support for upstreamNameservers. [#207]
2326

2427
### Fixed
2528

26-
* Dropped support for v2.7 of the Google providers; these versions were
27-
incompatible with the guest accelerator. [#198]
29+
* Dropped support for versions of the Google provider earlier than v2.9; these versions multiple
30+
incompatibilities with the module. [#198]
2831

2932
## [v2.1.0] - 2019-05-30
3033

@@ -131,7 +134,8 @@ Extending the adopted spec, each change should have a link to its corresponding
131134

132135
* Initial release of module.
133136

134-
[Unreleased]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/compare/v2.1.0...HEAD
137+
[Unreleased]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/compare/v3.0.0...HEAD
138+
[v3.0.0]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/compare/v2.1.0...v3.0.0
135139
[v2.1.0]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/compare/v2.0.1...v2.1.0
136140
[v2.0.1]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/compare/v2.0.0...v2.0.1
137141
[v2.0.0]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/compare/v1.0.1...v2.0.0
@@ -142,6 +146,8 @@ Extending the adopted spec, each change should have a link to its corresponding
142146
[v0.3.0]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/compare/v0.2.0...v0.3.0
143147
[v0.2.0]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/compare/v0.1.0...v0.2.0
144148

149+
[#207]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/207
150+
[#203]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/203
145151
[#198]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/198
146152
[#197]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/197
147153
[#193]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/193

README.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,11 @@ Then perform the following commands on the root folder:
9797
- `terraform apply` to apply the infrastructure build
9898
- `terraform destroy` to destroy the built infrastructure
9999

100+
## Upgrade to v3.0.0
101+
102+
v3.0.0 is a breaking release. Refer to the
103+
[Upgrading to v3.0 guide][upgrading-to-v3.0] for details.
104+
100105
## Upgrade to v2.0.0
101106

102107
v2.0.0 is a breaking release. Refer to the
@@ -154,6 +159,7 @@ In either case, upgrading to module version `v1.0.0` will trigger a recreation o
154159
| service\_account | The service account to run nodes as if not overridden in `node_pools`. The default value will cause a cluster-specific service account to be created. | string | `"create"` | no |
155160
| stub\_domains | Map of stub domains and their resolvers to forward DNS queries for a certain domain to an external DNS server | map | `<map>` | no |
156161
| subnetwork | The subnetwork to host the cluster in (required) | string | n/a | yes |
162+
| upstream\_nameservers | If specified, the values replace the nameservers taken by default from the node’s /etc/resolv.conf | list | `<list>` | no |
157163
| zones | The zones to host the cluster in (optional if regional cluster / required if zonal) | list | `<list>` | no |
158164

159165
## Outputs
@@ -198,7 +204,7 @@ The [project factory](https://github.com/terraform-google-modules/terraform-goog
198204
- [kubectl](https://github.com/kubernetes/kubernetes/releases) 1.9.x
199205
#### Terraform and Plugins
200206
- [Terraform](https://www.terraform.io/downloads.html) 0.11.x
201-
- [terraform-provider-google](https://github.com/terraform-providers/terraform-provider-google) v2.3, v2.6, v2.9
207+
- [Terraform Provider for GCP][terraform-provider-google] v2.9
202208

203209
### Configure a Service Account
204210
In order to execute this module you must have a Service Account with the
@@ -366,3 +372,5 @@ command.
366372
* Dockerfiles - hadolint. Can be found in homebrew
367373

368374
[upgrading-to-v2.0]: docs/upgrading_to_v2.0.md
375+
[upgrading-to-v3.0]: docs/upgrading_to_v3.0.md
376+
[terraform-provider-google]: https://github.com/terraform-providers/terraform-provider-google

autogen/README.md

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,11 @@ Then perform the following commands on the root folder:
111111
- `terraform apply` to apply the infrastructure build
112112
- `terraform destroy` to destroy the built infrastructure
113113

114+
## Upgrade to v3.0.0
115+
116+
v3.0.0 is a breaking release. Refer to the
117+
[Upgrading to v3.0 guide][upgrading-to-v3.0] for details.
118+
114119
## Upgrade to v2.0.0
115120

116121
v2.0.0 is a breaking release. Refer to the
@@ -142,9 +147,9 @@ The [project factory](https://github.com/terraform-google-modules/terraform-goog
142147
#### Terraform and Plugins
143148
- [Terraform](https://www.terraform.io/downloads.html) 0.11.x
144149
{% if private_cluster or beta_cluster %}
145-
- [terraform-provider-google-beta](https://github.com/terraform-providers/terraform-provider-google-beta) v2.3, v2.6, v2.9
150+
- [Terraform Provider for GCP Beta][terraform-provider-google-beta] v2.9
146151
{% else %}
147-
- [terraform-provider-google](https://github.com/terraform-providers/terraform-provider-google) v2.3, v2.6, v2.9
152+
- [Terraform Provider for GCP][terraform-provider-google] v2.9
148153
{% endif %}
149154

150155
### Configure a Service Account
@@ -317,3 +322,13 @@ command.
317322
{% else %}
318323
[upgrading-to-v2.0]: docs/upgrading_to_v2.0.md
319324
{% endif %}
325+
{% if private_cluster or beta_cluster %}
326+
[upgrading-to-v3.0]: ../../docs/upgrading_to_v3.0.md
327+
{% else %}
328+
[upgrading-to-v3.0]: docs/upgrading_to_v3.0.md
329+
{% endif %}
330+
{% if private_cluster or beta_cluster %}
331+
[terraform-provider-google-beta]: https://github.com/terraform-providers/terraform-provider-google-beta
332+
{% else %}
333+
[terraform-provider-google]: https://github.com/terraform-providers/terraform-provider-google
334+
{% endif %}

autogen/cluster_regional.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ resource "google_container_cluster" "primary" {
107107
node_config {
108108
service_account = "${lookup(var.node_pools[0], "service_account", local.service_account)}"
109109
{% if beta_cluster %}
110+
110111
workload_metadata_config = "${local.cluster_node_metadata_config["${var.node_metadata == "UNSPECIFIED" ? "unspecified" : "specified"}"]}"
111112
{% endif %}
112113
}

autogen/cluster_zonal.tf

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,10 @@ resource "google_container_cluster" "zonal_primary" {
3939
monitoring_service = "${var.monitoring_service}"
4040

4141
{% if beta_cluster %}
42-
enable_binary_authorization = "${var.enable_binary_authorization}"
43-
pod_security_policy_config = "${var.pod_security_policy_config}"
44-
{% endif %}
42+
enable_binary_authorization = "${var.enable_binary_authorization}"
43+
pod_security_policy_config = "${var.pod_security_policy_config}"
4544

45+
{% endif %}
4646
master_authorized_networks_config = ["${var.master_authorized_networks_config}"]
4747

4848
master_auth {
@@ -108,6 +108,7 @@ resource "google_container_cluster" "zonal_primary" {
108108
node_config {
109109
service_account = "${lookup(var.node_pools[0], "service_account", local.service_account)}"
110110
{% if beta_cluster %}
111+
111112
workload_metadata_config = "${local.cluster_node_metadata_config["${var.node_metadata == "UNSPECIFIED" ? "unspecified" : "specified"}"]}"
112113
{% endif %}
113114
}

autogen/dns.tf

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
Delete default kube-dns configmap
2121
*****************************************/
2222
resource "null_resource" "delete_default_kube_dns_configmap" {
23-
count = "${local.custom_kube_dns_config ? 1 : 0}"
23+
count = "${local.custom_kube_dns_config || local.upstream_nameservers_config ? 1 : 0}"
2424

2525
provisioner "local-exec" {
2626
command = "${path.module}/scripts/kubectl_wrapper.sh https://${local.cluster_endpoint} ${data.google_client_config.default.access_token} ${local.cluster_ca_certificate} ${path.module}/scripts/delete-default-resource.sh kube-system configmap kube-dns"
@@ -33,7 +33,7 @@ resource "null_resource" "delete_default_kube_dns_configmap" {
3333
Create kube-dns confimap
3434
*****************************************/
3535
resource "kubernetes_config_map" "kube-dns" {
36-
count = "${local.custom_kube_dns_config ? 1 : 0}"
36+
count = "${local.custom_kube_dns_config && !local.upstream_nameservers_config ? 1 : 0}"
3737

3838
metadata {
3939
name = "kube-dns"
@@ -52,3 +52,49 @@ EOF
5252

5353
depends_on = ["null_resource.delete_default_kube_dns_configmap", "data.google_client_config.default", "google_container_cluster.primary", "google_container_node_pool.pools", "google_container_cluster.zonal_primary", "google_container_node_pool.zonal_pools"]
5454
}
55+
56+
resource "kubernetes_config_map" "kube-dns-upstream-namservers" {
57+
count = "${!local.custom_kube_dns_config && local.upstream_nameservers_config ? 1 : 0}"
58+
59+
metadata {
60+
name = "kube-dns"
61+
namespace = "kube-system"
62+
63+
labels {
64+
maintained_by = "terraform"
65+
}
66+
}
67+
68+
data {
69+
upstreamNameservers = <<EOF
70+
${jsonencode(var.upstream_nameservers)}
71+
EOF
72+
}
73+
74+
depends_on = ["null_resource.delete_default_kube_dns_configmap", "data.google_client_config.default", "google_container_cluster.primary", "google_container_node_pool.pools", "google_container_cluster.zonal_primary", "google_container_node_pool.zonal_pools"]
75+
}
76+
77+
resource "kubernetes_config_map" "kube-dns-upstream-nameservers-and-stub-domains" {
78+
count = "${local.custom_kube_dns_config && local.upstream_nameservers_config ? 1 : 0}"
79+
80+
metadata {
81+
name = "kube-dns"
82+
namespace = "kube-system"
83+
84+
labels {
85+
maintained_by = "terraform"
86+
}
87+
}
88+
89+
data {
90+
upstreamNameservers = <<EOF
91+
${jsonencode(var.upstream_nameservers)}
92+
EOF
93+
94+
stubDomains = <<EOF
95+
${jsonencode(var.stub_domains)}
96+
EOF
97+
}
98+
99+
depends_on = ["null_resource.delete_default_kube_dns_configmap", "data.google_client_config.default", "google_container_cluster.primary", "google_container_node_pool.pools", "google_container_cluster.zonal_primary", "google_container_node_pool.zonal_pools"]
100+
}

autogen/main.tf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ locals {
3636
node_version_regional = "${var.node_version != "" && var.regional ? var.node_version : local.kubernetes_version_regional}"
3737
node_version_zonal = "${var.node_version != "" && !var.regional ? var.node_version : local.kubernetes_version_zonal}"
3838
custom_kube_dns_config = "${length(keys(var.stub_domains)) > 0 ? true : false}"
39+
upstream_nameservers_config = "${length(var.upstream_nameservers) > 0 ? true : false}"
3940
network_project_id = "${var.network_project_id != "" ? var.network_project_id : var.project_id}"
4041

4142
cluster_type = "${var.regional ? "regional" : "zonal"}"
@@ -195,9 +196,8 @@ locals {
195196
cluster_kubernetes_dashboard_enabled = "${local.cluster_type_output_kubernetes_dashboard_enabled[local.cluster_type] ? false : true}"
196197
{% if beta_cluster %}
197198
# BETA features
198-
cluster_istio_enabled = "${local.cluster_type_output_istio_enabled[local.cluster_type] ? false : true}"
199-
cluster_cloudrun_enabled = "${var.cloudrun}"
200-
199+
cluster_istio_enabled = "${local.cluster_type_output_istio_enabled[local.cluster_type] ? false : true}"
200+
cluster_cloudrun_enabled = "${var.cloudrun}"
201201
cluster_pod_security_policy_enabled = "${local.cluster_type_output_pod_security_policy_enabled[local.cluster_type] ? true : false}"
202202
# /BETA features
203203
{% endif %}

autogen/outputs.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ output "service_account" {
113113
value = "${local.service_account}"
114114
}
115115
{% if beta_cluster %}
116+
116117
output "istio_enabled" {
117118
description = "Whether Istio is enabled"
118119
value = "${local.cluster_istio_enabled}"

autogen/variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,12 @@ variable "stub_domains" {
206206
default = {}
207207
}
208208

209+
variable "upstream_nameservers" {
210+
type = "list"
211+
description = "If specified, the values replace the nameservers taken by default from the node’s /etc/resolv.conf"
212+
default = []
213+
}
214+
209215
variable "non_masquerade_cidrs" {
210216
type = "list"
211217
description = "List of strings in CIDR notation that specify the IP address ranges that do not use IP masquerading."

0 commit comments

Comments
 (0)