diff --git a/.gitignore b/.gitignore
index 7fab33f949..899be3e749 100644
--- a/.gitignore
+++ b/.gitignore
@@ -47,3 +47,6 @@ test/integration/gcloud/config.sh
test/integration/tmp
credentials.json
+
+# File to populate env vars used by Docker test runs
+.envrc
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 714e2df341..92a7190bf8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,44 +1,98 @@
# Change Log
-
All notable changes to this project will be documented in this file.
-The format is based on [Keep a Changelog](http://keepachangelog.com/) and this
-project adheres to [Semantic Versioning](http://semver.org/).
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+Extending the adopted spec, each change should have a link to its corresponding pull request appended.
## [Unreleased]
+
+## [v1.0.0] - 2019-03-25
+### Added
+* Allow creation of service accounts. [#80]
+* Add support for private clusters via submodule. [#69]
+* Add `remove_default_node_pool` set to `false` by default. Fixes [#15]. [#55]
+* Allow arbitrary key-value pairs to be set on node pool metadata. [#52]
+* Add `initial_node_count` parameter to node_pool block. [#60]
+* Added `disable_legacy_metadata_endpoints` parameter. [#114]
+
### Changed
-* Add support for private clusters via submodule. #69
-* Set `horizontal_pod_autoscaling` to `true` by default. #42
-* Add `remove_default_node_pool` set to `false` by default #15
-* Allow arbitrary key-value pairs to be set on node pool metadata. #52
-* Add `initial_node_count` parameter to node_pool block. #60
+* Set `horizontal_pod_autoscaling` to `true` by default. Fixes [#42]. [#54]
+* Update simple-zonal example GKE version to supported version. [#49]
+* Drop explicit version from simple_zonal example. [#74]
+* Remove explicit versions from test cases and examples. [#62]
+* Set up submodule structure for public and private clusters. [#61]
+* Update the google and google-beta providers to v2.2 [#106]
+
+### Fixed
+* Zonal clusters can now accept a single zone. Fixes [#43]. [#50]
+* Fix link to "configure a service account" [#73]
+* Fix issue with regional cluster roll outs causing version skews [#108]
+* Fix permanent metadata skew due to disable-legacy-endpoints keys [#114]
## [v0.4.0] - 2018-12-19
### Added
-* Added support for testing with kitchen-terraform. #33
-* Added support for preemptible nodes. #38
+* Added support for testing with kitchen-terraform. [#33]
+* Added support for preemptible nodes. [#38]
### Changed
-* Updated default version to `1.10.6`. #31
+* Updated default version to `1.10.6`. [#31]
### Fixed
-* `region` argument on google_compute_subnetwork caused errors. #22
-* Added check to wait for GKE cluster to be `READY` before completing. #46
+* `region` argument on google_compute_subnetwork caused errors. [#22]
+* Added check to wait for GKE cluster to be `READY` before completing. [#46]
## [v0.3.0] - 2018-10-10
### Changed
-* Updated network/subnetwork lookup to use data source. #16
-* Make zone configuration optional when creating a regional cluster. #19
+* Updated network/subnetwork lookup to use data source. [#16]
+* Make zone configuration optional when creating a regional cluster. [#19]
## [v0.2.0] - 2018-09-26
### Added
-* Support for configuring master authorized networks. (#10)
-* Support specifying monitoring and logging services. (#9)
+* Support for configuring master authorized networks. [#10]
+* Support specifying monitoring and logging services. [#9]
-## [v0.1.0] - 2018-09-12
+## v0.1.0 - 2018-09-12
### Added
* Initial release of module.
+
+[Unreleased]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/compare/v1.0.0...HEAD
+[v1.0.0]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/compare/v0.4.0...v1.0.0
+[v0.4.0]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/compare/v0.4.0...v0.5.0
+[v0.4.0]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/compare/v0.3.0...v0.4.0
+[v0.3.0]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/compare/v0.2.0...v0.3.0
+[v0.2.0]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/compare/v0.1.0...v0.2.0
+
+[#43]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/issues/43
+[#42]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/issues/42
+[#15]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/issues/15
+
+[#109]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/109
+[#108]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/108
+[#106]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/106
+[#80]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/80
+[#74]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/74
+[#73]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/73
+[#61]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/61
+[#69]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/69
+[#62]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/62
+[#60]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/60
+[#55]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/55
+[#54]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/54
+[#52]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/52
+[#50]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/50
+[#49]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/49
+[#46]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/46
+[#38]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/38
+[#33]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/33
+[#31]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/31
+[#22]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/22
+[#19]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/19
+[#16]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/16
+[#10]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/10
+[#9]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/9
diff --git a/Makefile b/Makefile
index cd77f45345..4a78f1eb7a 100644
--- a/Makefile
+++ b/Makefile
@@ -130,7 +130,7 @@ docker_create: docker_build_kitchen_terraform
-e GOOGLE_APPLICATION_CREDENTIALS=${CREDENTIALS_PATH} \
-v $(CURDIR):/cft/workdir \
${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM} \
- /bin/bash -c "kitchen create"
+ /bin/bash -c "source test/ci_integration.sh && setup_environment && kitchen create"
.PHONY: docker_converge
docker_converge:
@@ -144,7 +144,7 @@ docker_converge:
-e GOOGLE_APPLICATION_CREDENTIALS=${CREDENTIALS_PATH} \
-v $(CURDIR):/cft/workdir \
${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM} \
- /bin/bash -c "kitchen converge && kitchen converge"
+ /bin/bash -c "source test/ci_integration.sh && setup_environment && kitchen converge && kitchen converge"
.PHONY: docker_verify
docker_verify:
@@ -158,7 +158,7 @@ docker_verify:
-e GOOGLE_APPLICATION_CREDENTIALS=${CREDENTIALS_PATH} \
-v $(CURDIR):/cft/workdir \
${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM} \
- /bin/bash -c "kitchen verify"
+ /bin/bash -c "source test/ci_integration.sh && setup_environment && kitchen verify"
.PHONY: docker_destroy
docker_destroy:
@@ -172,7 +172,7 @@ docker_destroy:
-e GOOGLE_APPLICATION_CREDENTIALS=${CREDENTIALS_PATH} \
-v $(CURDIR):/cft/workdir \
${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM} \
- /bin/bash -c "kitchen destroy"
+ /bin/bash -c "source test/ci_integration.sh && setup_environment && kitchen destroy"
.PHONY: test_integration_docker
test_integration_docker:
diff --git a/README.md b/README.md
index f76c1e6805..6fece407ce 100644
--- a/README.md
+++ b/README.md
@@ -89,67 +89,73 @@ Then perform the following commands on the root folder:
- `terraform apply` to apply the infrastructure build
- `terraform destroy` to destroy the built infrastructure
+## Upgrade to v1.0.0
-[^]: (autogen_docs_start)
+Version 1.0.0 of this module introduces a breaking change: adding the `disable-legacy-endpoints` metadata field to all node pools. This metadata is required by GKE and [determines whether the `/0.1/` and `/v1beta1/` paths are available in the nodes' metadata server](https://cloud.google.com/kubernetes-engine/docs/how-to/protecting-cluster-metadata#disable-legacy-apis). If your applications do not require access to the node's metadata server, you can leave the default value of `true` provided by the module. If your applications require access to the metadata server, be sure to read the linked documentation to see if you need to set the value for this field to `false` to allow your applications access to the above metadata server paths.
+
+In either case, upgrading to module version `v1.0.0` will trigger a recreation of all node pools in the cluster.
+[^]: (autogen_docs_start)
## Inputs
| Name | Description | Type | Default | Required |
|------|-------------|:----:|:-----:|:-----:|
-| description | The description of the cluster | string | `` | no |
-| horizontal_pod_autoscaling | Enable horizontal pod autoscaling addon | string | `true` | no |
-| http_load_balancing | Enable httpload balancer addon | string | `true` | no |
-| ip_masq_link_local | Whether to masquerade traffic to the link-local prefix (169.254.0.0/16). | string | `false` | no |
-| ip_masq_resync_interval | The interval at which the agent attempts to sync its ConfigMap file from the disk. | string | `60s` | no |
-| ip_range_pods | The secondary ip range to use for pods | string | - | yes |
-| ip_range_services | The secondary ip range to use for pods | string | - | yes |
-| kubernetes_dashboard | Enable kubernetes dashboard addon | string | `false` | no |
-| kubernetes_version | The Kubernetes version of the masters. If set to 'latest' it will pull latest available version in the selected region. | string | `latest` | no |
-| logging_service | The logging service that the cluster should write logs to. Available options include logging.googleapis.com, logging.googleapis.com/kubernetes (beta), and none | string | `logging.googleapis.com` | no |
-| maintenance_start_time | Time window specified for daily maintenance operations in RFC3339 format | string | `05:00` | no |
-| master_authorized_networks_config | The desired configuration options for master authorized networks. Omit the nested cidr_blocks attribute to disallow external access (except the cluster node IPs, which GKE automatically whitelists)
### example format ### master_authorized_networks_config = [{ cidr_blocks = [{ cidr_block = "10.0.0.0/8" display_name = "example_network" }], }] | list | `` | no |
-| monitoring_service | The monitoring service that the cluster should write metrics to. Automatically send metrics from pods in the cluster to the Google Cloud Monitoring API. VM metrics will be collected by Google Compute Engine regardless of this setting Available options include monitoring.googleapis.com, monitoring.googleapis.com/kubernetes (beta) and none | string | `monitoring.googleapis.com` | no |
-| name | The name of the cluster (required) | string | - | yes |
-| network | The VPC network to host the cluster in (required) | string | - | yes |
-| network_policy | Enable network policy addon | string | `false` | no |
-| network_project_id | The project ID of the shared VPC's host (for shared vpc support) | string | `` | no |
-| node_pools | List of maps containing node pools | list | `` | no |
-| node_pools_labels | Map of maps containing node labels by node-pool name | map | `