Skip to content

Commit 4be95bc

Browse files
Merge branch 'master' into fix/180
2 parents 5ca69ce + ce90c83 commit 4be95bc

File tree

228 files changed

+7331
-2759
lines changed

Some content is hidden

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

228 files changed

+7331
-2759
lines changed

.dockerignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ test/fixtures/*/.terraform
77
test/fixtures/*/terraform.tfstate.d
88
examples/.kitchen
99
examples/*/.terraform
10-
examples/*/terraform.tfstate.d
10+
examples/*/terraform.tfstate.d
11+

.kitchen.yml

Lines changed: 50 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -29,27 +29,31 @@ platforms:
2929
- name: local
3030

3131
suites:
32-
- name: "deploy_service"
33-
driver:
34-
root_module_directory: test/fixtures/deploy_service
35-
verifier:
36-
systems:
37-
- name: deploy_service
38-
backend: local
32+
# Disabled due to issue #274
33+
# (https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/issues/274)
34+
# - name: "deploy_service"
35+
# driver:
36+
# root_module_directory: test/fixtures/deploy_service
37+
# verifier:
38+
# systems:
39+
# - name: deploy_service
40+
# backend: local
3941
- name: "disable_client_cert"
4042
driver:
4143
root_module_directory: test/fixtures/disable_client_cert
4244
verifier:
4345
systems:
4446
- name: disable_client_cert
4547
backend: local
46-
- name: "node_pool"
47-
driver:
48-
root_module_directory: test/fixtures/node_pool
49-
verifier:
50-
systems:
51-
- name: node_pool
52-
backend: local
48+
# Disabled due to issue #274
49+
# (https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/issues/274)
50+
# - name: "node_pool"
51+
# driver:
52+
# root_module_directory: test/fixtures/node_pool
53+
# verifier:
54+
# systems:
55+
# - name: node_pool
56+
# backend: local
5357
- name: "shared_vpc"
5458
driver:
5559
root_module_directory: test/fixtures/shared_vpc
@@ -64,6 +68,23 @@ suites:
6468
systems:
6569
- name: simple_regional
6670
backend: local
71+
- name: "simple_regional_with_networking"
72+
driver:
73+
root_module_directory: test/fixtures/simple_regional_with_networking
74+
verifier:
75+
systems:
76+
- name: simple_regional_with_networking
77+
backend: local
78+
controls:
79+
- gcloud
80+
- name: subnet
81+
backend: local
82+
controls:
83+
- subnet
84+
- name: network
85+
backend: gcp
86+
controls:
87+
- network
6788
- name: "simple_regional_private"
6889
driver:
6990
root_module_directory: test/fixtures/simple_regional_private
@@ -98,12 +119,14 @@ suites:
98119
systems:
99120
- name: stub_domains
100121
backend: local
101-
- name: stub_domains_private
102-
driver:
103-
root_module_directory: test/fixtures/stub_domains_private
104-
systems:
105-
- name: stub_domains_private
106-
backend: local
122+
# Disabled due to issue #264
123+
# (https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/issues/264)
124+
# - name: stub_domains_private
125+
# driver:
126+
# root_module_directory: test/fixtures/stub_domains_private
127+
# systems:
128+
# - name: stub_domains_private
129+
# backend: local
107130
- name: "upstream_nameservers"
108131
driver:
109132
root_module_directory: test/fixtures/upstream_nameservers
@@ -138,3 +161,10 @@ suites:
138161
backend: gcp
139162
controls:
140163
- gcp
164+
- name: "sandbox_enabled"
165+
driver:
166+
root_module_directory: test/fixtures/sandbox_enabled
167+
verifier:
168+
systems:
169+
- name: sandbox_enabled
170+
backend: local

.ruby-version

Lines changed: 0 additions & 1 deletion
This file was deleted.

CHANGELOG.md

Lines changed: 78 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,52 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77
Extending the adopted spec, each change should have a link to its corresponding pull request appended.
88

99
## [Unreleased]
10+
11+
## [v5.1.1] - 2019-10-25
12+
13+
### Fixed
14+
15+
* Fixed bug with setting up sandboxing on nodes. [#286]
16+
17+
## [v5.1.0] - 2019-10-24
18+
1019
### Added
1120

21+
* Added ability to skip local-exec provisioners. [#258]
22+
* Added [private](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/tree/master/modules/private-cluster-update-variant) and [beta private](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/tree/master/modules/beta-private-cluster-update-variant) variants which allow node pools to be created before being destroyed. [#256]
23+
* Add a parameter `registry_project_id` to allow connecting to registries in other projects. [#273]
24+
25+
### Changed
26+
27+
* Made `region` variable optional for zonal clusters. [#247]
28+
* Made default metadata, labels, and tags optional. [#282]
29+
30+
### Fixed
31+
32+
* Authenticate gcloud in wait-for-cluster.sh using value of `GOOGLE_APPLICATION_CREDENTIALS`. [#284] [#285]
33+
34+
## [v5.0.0] - 2019-09-25
35+
v5.0.0 is a backwards-incompatible release. Please see the [upgrading guide](./docs/upgrading_to_v5.0.md).
36+
37+
The v5.0.0 module requires using the [2.12 version](https://github.com/terraform-providers/terraform-provider-google/blob/master/CHANGELOG.md#2120-august-01-2019) of the Google provider.
38+
39+
### Changed
40+
41+
* **Breaking**: Enabled metadata-concealment by default [#248]
42+
* All beta functionality removed from non-beta clusters, moved `node_pool_taints` to beta modules [#228]
43+
44+
### Added
45+
* Added support for resource usage export config [#238]
46+
* Added `sandbox_enabled` variable to use GKE Sandbox [#241]
47+
* Added `grant_registry_access` variable to grant Container Registry access to created SA [#236]
1248
* Support for Intranode Visbiility (IV) and Veritical Pod Autoscaling (VPA) beta features [#216]
49+
* Support for Workload Identity beta feature [#234]
50+
* Support for Google Groups based RBAC beta feature [#217]
51+
* Support for disabling node pool autoscaling by setting `autoscaling` to `false` within the node pool variable. [#250]
52+
53+
### Fixed
54+
55+
* Fixed issue with passing a dynamically created Service Account to the module. [#27]
1356

1457
## [v4.1.0] 2019-07-24
1558

@@ -28,6 +71,8 @@ Extending the adopted spec, each change should have a link to its corresponding
2871
* Supported version of Terraform is 0.12. [#177]
2972

3073
## [v3.0.0] - 2019-07-08
74+
v3.0.0 is a breaking release. Refer to the
75+
[Upgrading to v3.0 guide][upgrading-to-v3.0] for details.
3176

3277
### Added
3378

@@ -68,6 +113,8 @@ Extending the adopted spec, each change should have a link to its corresponding
68113
2.3. [#148]
69114

70115
## [v2.0.0] - 2019-04-12
116+
v2.0.0 is a breaking release. Refer to the
117+
[Upgrading to v2.0 guide][upgrading-to-v2.0] for details.
71118

72119
### Added
73120

@@ -99,6 +146,10 @@ Extending the adopted spec, each change should have a link to its corresponding
99146
* Fix empty zone list. [#132]
100147

101148
## [v1.0.0] - 2019-03-25
149+
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.
150+
151+
In either case, upgrading to module version `v1.0.0` will trigger a recreation of all node pools in the cluster.
152+
102153
### Added
103154
* Allow creation of service accounts. [#80]
104155
* Add support for private clusters via submodule. [#69]
@@ -153,7 +204,10 @@ Extending the adopted spec, each change should have a link to its corresponding
153204

154205
* Initial release of module.
155206

156-
[Unreleased]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/compare/v4.1.0...HEAD
207+
[Unreleased]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/compare/v5.1.1...HEAD
208+
[v5.1.1]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/compare/v5.1.0...v5.1.1
209+
[v5.1.0]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/compare/v5.0.0...v5.1.0
210+
[v5.0.0]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/compare/v4.1.0...v5.0.0
157211
[v4.1.0]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/compare/v4.0.0...v4.1.0
158212
[v4.0.0]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/compare/v3.0.0...v4.0.0
159213
[v3.0.0]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/compare/v2.1.0...v3.0.0
@@ -167,6 +221,23 @@ Extending the adopted spec, each change should have a link to its corresponding
167221
[v0.3.0]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/compare/v0.2.0...v0.3.0
168222
[v0.2.0]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/compare/v0.1.0...v0.2.0
169223

224+
[#286]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/286
225+
[#285]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/285
226+
[#284]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/284
227+
[#282]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/282
228+
[#273]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/273
229+
[#258]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/issues/258
230+
[#256]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/256
231+
[#248]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/248
232+
[#247]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/247
233+
[#228]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/228
234+
[#238]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/238
235+
[#241]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/241
236+
[#250]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/250
237+
[#236]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/236
238+
[#217]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/217
239+
[#234]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/234
240+
[#27]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/issues/27
170241
[#216]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/216
171242
[#214]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/214
172243
[#210]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/210
@@ -221,3 +292,9 @@ Extending the adopted spec, each change should have a link to its corresponding
221292
[#15]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/issues/15
222293
[#10]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/10
223294
[#9]: https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/9
295+
296+
[upgrading-to-v2.0]: docs/upgrading_to_v2.0.md
297+
[upgrading-to-v3.0]: docs/upgrading_to_v3.0.md
298+
[terraform-provider-google]: https://github.com/terraform-providers/terraform-provider-google
299+
[3.0.0]: https://registry.terraform.io/modules/terraform-google-modules/kubernetes-engine/google/3.0.0
300+
[terraform-0.12-upgrade]: https://www.terraform.io/upgrade-guides/0-12.html

CONTRIBUTING.md

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
# Contributing
2+
3+
This document provides guidelines for contributing to the module.
4+
5+
## Dependencies
6+
7+
The following dependencies must be installed on the development system:
8+
9+
- [Docker Engine][docker-engine]
10+
- [Google Cloud SDK][google-cloud-sdk]
11+
- [make]
12+
13+
## Generating Documentation for Inputs and Outputs
14+
15+
The Inputs and Outputs tables in the READMEs of the root module,
16+
submodules, and example modules are automatically generated based on
17+
the `variables` and `outputs` of the respective modules. These tables
18+
must be refreshed if the module interfaces are changed.
19+
20+
## Templating
21+
22+
To more cleanly handle cases where desired functionality would require complex duplication of Terraform resources (i.e. [PR 51](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/pull/51)), this repository is largely generated from the [`autogen`](/autogen) directory.
23+
24+
The root module is generated by running `make generate`. Changes to this repository should be made in the [`autogen`](/autogen) directory where appropriate.
25+
26+
Note: The correct sequence to update the repo using autogen functionality is to run
27+
`make docker_generate && make docker_generate_docs`. This will create the various Terraform files, and then
28+
generate the Terraform documentation using `terraform-docs`.
29+
30+
### Autogeneration of documentation from .tf files
31+
To generate new Inputs and Outputs tables run
32+
```
33+
make docker_generate_docs
34+
```
35+
36+
## Integration Testing
37+
38+
Integration tests are used to verify the behaviour of the root module,
39+
submodules, and example modules. Additions, changes, and fixes should
40+
be accompanied with tests.
41+
42+
The integration tests are run using [Kitchen][kitchen],
43+
[Kitchen-Terraform][kitchen-terraform], and [InSpec][inspec]. These
44+
tools are packaged within a Docker image for convenience.
45+
46+
The general strategy for these tests is to verify the behaviour of the
47+
[example modules](./examples/), thus ensuring that the root module,
48+
submodules, and example modules are all functionally correct.
49+
50+
Six test-kitchen instances are defined:
51+
52+
- `deploy-service`
53+
- `node-pool`
54+
- `shared-vpc`
55+
- `simple-regional`
56+
- `simple-zonal`
57+
- `stub-domains`
58+
59+
The test-kitchen instances in `test/fixtures/` wrap identically-named examples in the `examples/` directory.`
60+
61+
### Test Environment
62+
The easiest way to test the module is in an isolated test project. The setup for such a project is defined in [test/setup](./test/setup/) directory.
63+
64+
To use this setup, you need a service account with Project Creator access on a folder. Export the Service Account credentials to your environment like so:
65+
66+
```
67+
export SERVICE_ACCOUNT_JSON=$(< credentials.json)
68+
```
69+
70+
You will also need to set a few environment variables:
71+
```
72+
export TF_VAR_org_id="your_org_id"
73+
export TF_VAR_folder_id="your_folder_id"
74+
export TF_VAR_billing_account="your_billing_account_id"
75+
```
76+
77+
With these settings in place, you can prepare a test project using Docker:
78+
```
79+
make docker_test_prepare
80+
```
81+
82+
### Noninteractive Execution
83+
84+
Run `make docker_test_integration` to test all of the example modules
85+
noninteractively, using the prepared test project.
86+
87+
### Interactive Execution
88+
89+
1. Run `make docker_run` to start the testing Docker container in
90+
interactive mode.
91+
92+
1. Run `kitchen_do create <EXAMPLE_NAME>` to initialize the working
93+
directory for an example module.
94+
95+
1. Run `kitchen_do converge <EXAMPLE_NAME>` to apply the example module.
96+
97+
1. Run `kitchen_do verify <EXAMPLE_NAME>` to test the example module.
98+
99+
1. Run `kitchen_do destroy <EXAMPLE_NAME>` to destroy the example module
100+
state.
101+
102+
## Linting and Formatting
103+
104+
Many of the files in the repository can be linted or formatted to
105+
maintain a standard of quality.
106+
107+
### Execution
108+
109+
Run `make docker_test_lint`.
110+
111+
[docker-engine]: https://www.docker.com/products/docker-engine
112+
[flake8]: http://flake8.pycqa.org/en/latest/
113+
[gofmt]: https://golang.org/cmd/gofmt/
114+
[google-cloud-sdk]: https://cloud.google.com/sdk/install
115+
[hadolint]: https://github.com/hadolint/hadolint
116+
[inspec]: https://inspec.io/
117+
[kitchen-terraform]: https://github.com/newcontext-oss/kitchen-terraform
118+
[kitchen]: https://kitchen.ci/
119+
[make]: https://en.wikipedia.org/wiki/Make_(software)
120+
[shellcheck]: https://www.shellcheck.net/
121+
[terraform-docs]: https://github.com/segmentio/terraform-docs
122+
[terraform]: https://terraform.io/

0 commit comments

Comments
 (0)