Skip to content

Commit aac08d8

Browse files
authored
Merge branch 'main' into feature/enable_k8s_beta_apis
2 parents 5293870 + 2c8b78d commit aac08d8

File tree

141 files changed

+1304
-287
lines changed

Some content is hidden

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

141 files changed

+1304
-287
lines changed

.github/conventional-commit-lint.yaml

Lines changed: 0 additions & 19 deletions
This file was deleted.

.github/workflows/lint.yaml

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,11 @@ name: 'lint'
2020
on:
2121
workflow_dispatch:
2222
pull_request:
23-
branches:
24-
- main
23+
types: [opened, edited, reopened, synchronize]
24+
branches: [main]
25+
26+
permissions:
27+
contents: read
2528

2629
concurrency:
2730
group: '${{ github.workflow }}-${{ github.head_ref || github.ref }}'
@@ -52,3 +55,21 @@ jobs:
5255
env:
5356
ENABLE_BPMETADATA: 1
5457

58+
commitlint:
59+
runs-on: ubuntu-latest
60+
steps:
61+
- uses: actions/checkout@v4
62+
with:
63+
fetch-depth: 0
64+
- name: Setup node
65+
uses: actions/setup-node@v4
66+
with:
67+
node-version: lts/*
68+
- name: Install commitlint
69+
run: |
70+
npm install -D @commitlint/[email protected] @commitlint/[email protected]
71+
echo "module.exports = { extends: ['@commitlint/config-conventional'], rules: {'subject-case': [0]} };" > commitlint.config.js
72+
npx commitlint --version
73+
- name: Validate PR commits with commitlint
74+
if: github.event_name == 'pull_request'
75+
run: 'echo "${{ github.event.pull_request.title }}" | npx commitlint --verbose'

CHANGELOG.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,51 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
66

77
Extending the adopted spec, each change should have a link to its corresponding pull request appended.
88

9+
## [38.1.0](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/compare/v38.0.1...v38.1.0) (2025-08-29)
10+
11+
12+
### Features
13+
14+
* **deps:** Update Terraform Google Provider to v7 (major) ([#2425](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/issues/2425)) ([6967a8f](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/commit/6967a8f2658073959a866b4b638c4e950802eb04))
15+
16+
17+
### Bug Fixes
18+
19+
* note org support of Identity Service for GKE ([#2422](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/issues/2422)) ([893ba59](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/commit/893ba597d38bef0bc6a47a5d2a37c802f7ce749d))
20+
21+
## [38.0.1](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/compare/v38.0.0...v38.0.1) (2025-08-22)
22+
23+
24+
### Bug Fixes
25+
26+
* **metadata:** update ADC roles and services per module ([#2414](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/issues/2414)) ([2a78f09](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/commit/2a78f0967ca2442cd69934d6aa1149b09088d94b))
27+
28+
## [38.0.0](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/compare/v37.1.0...v38.0.0) (2025-08-13)
29+
30+
31+
### ⚠ BREAKING CHANGES
32+
33+
* add data cache count ([#2404](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/issues/2404))
34+
* **TPG>=6.42:** add support for gke_auto_upgrade_config ([#2395](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/issues/2395))
35+
* add support for flex start ([#2386](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/issues/2386))
36+
* **TPG>=6.41:** add support performance_monitoring_unit ([#2391](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/issues/2391))
37+
* **TPG>=6.39:** Fleet app operator permissions custom roles ([#2377](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/issues/2377))
38+
39+
### Features
40+
41+
* add data cache count ([#2404](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/issues/2404)) ([85c0487](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/commit/85c0487a8e96d9f77bab5108329c6d7582b392d3))
42+
* add support for cluster level total_egress_bandwidth_tier ([#2394](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/issues/2394)) ([1b69e34](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/commit/1b69e34f83511f4e63d342439102acda59128c8f))
43+
* add support for flex start ([#2386](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/issues/2386)) ([c0c80e6](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/commit/c0c80e6c5b97e235d76285ab49d2c5808f2d42af))
44+
* Simple GKE modules for ADC ([#2397](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/issues/2397)) ([1859b17](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/commit/1859b172249ec604b0e6edc8bce3cb003f9f6603))
45+
* **TPG>=6.39:** Fleet app operator permissions custom roles ([#2377](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/issues/2377)) ([c008237](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/commit/c008237839c4a29779f893f51baabdc92846b07a))
46+
* **TPG>=6.41:** add support performance_monitoring_unit ([#2391](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/issues/2391)) ([e5ade9c](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/commit/e5ade9c674e5cc32022f51062ec5952eb3c2f5cb))
47+
* **TPG>=6.42:** add support for gke_auto_upgrade_config ([#2395](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/issues/2395)) ([19a0929](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/commit/19a09296015c512794f13f4f6b821a4e67459870))
48+
49+
50+
### Bug Fixes
51+
52+
* wrap cgroup_mode coalesce with try() to handle empty values ([#2396](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/issues/2396)) ([6148cb7](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/commit/6148cb7c9f15dbcffbb895bae44a9c0cad6ad660))
53+
954
## [37.1.0](https://github.com/terraform-google-modules/terraform-google-kubernetes-engine/compare/v37.0.0...v37.1.0) (2025-07-17)
1055

1156

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ docker_generate_docs:
8282
-e ENABLE_BPMETADATA=1 \
8383
-v "$(CURDIR)":/workspace \
8484
$(REGISTRY_URL)/${DOCKER_IMAGE_DEVELOPER_TOOLS}:${DOCKER_TAG_VERSION_DEVELOPER_TOOLS} \
85-
/bin/bash -c 'source /usr/local/bin/task_helper_functions.sh && generate_docs display'
85+
/bin/bash -c 'source /usr/local/bin/task_helper_functions.sh && generate_docs -d --per-module-requirements'
8686

8787
# Generate files from autogen
8888
.PHONY: docker_generate_modules

README.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ Then perform the following commands on the root folder:
173173
| enable\_default\_node\_pools\_metadata | Whether to enable the default node pools metadata key-value pairs such as `cluster_name` and `node_pool` | `bool` | `true` | no |
174174
| enable\_fqdn\_network\_policy | Enable FQDN Network Policies on the cluster | `bool` | `null` | no |
175175
| enable\_gcfs | Enable image streaming on cluster level. | `bool` | `false` | no |
176-
| enable\_identity\_service | (Optional) Enable the Identity Service component, which allows customers to use external identity providers with the K8S API. | `bool` | `false` | no |
176+
| enable\_identity\_service | (Optional) Enable the Identity Service component, which allows customers to use external identity providers with the K8S API. NOTE: Starting on July 1, 2025, new Google Cloud organizations that you create won't support Identity Service for GKE. | `bool` | `false` | no |
177177
| enable\_intranode\_visibility | Whether Intra-node visibility is enabled for this cluster. This makes same node pod to pod traffic visible for VPC network | `bool` | `false` | no |
178178
| enable\_k8s\_beta\_apis | (Optional) - List of Kubernetes Beta APIs to enable in cluster. | `list(string)` | `[]` | no |
179179
| enable\_kubernetes\_alpha | Whether to enable Kubernetes Alpha features for this cluster. Note that when this option is enabled, the cluster cannot be upgraded and will be automatically deleted after 30 days. | `bool` | `false` | no |
@@ -195,6 +195,7 @@ Then perform the following commands on the root folder:
195195
| gce\_pd\_csi\_driver | Whether this cluster should enable the Google Compute Engine Persistent Disk Container Storage Interface (CSI) Driver. | `bool` | `true` | no |
196196
| gcp\_public\_cidrs\_access\_enabled | Allow access through Google Cloud public IP addresses | `bool` | `null` | no |
197197
| gcs\_fuse\_csi\_driver | Whether GCE FUSE CSI driver is enabled for this cluster. | `bool` | `false` | no |
198+
| gke\_auto\_upgrade\_config\_patch\_mode | The selected auto-upgrade patch type. Accepted values are: `ACCELERATED`: Upgrades to the latest available patch version in a given minor and release channel. | `string` | `null` | no |
198199
| gke\_backup\_agent\_config | Whether Backup for GKE agent is enabled for this cluster. | `bool` | `false` | no |
199200
| grant\_registry\_access | Grants created cluster-specific service account storage.objectViewer and artifactregistry.reader roles. | `bool` | `false` | no |
200201
| horizontal\_pod\_autoscaling | Enable horizontal pod autoscaling addon | `bool` | `true` | no |
@@ -250,6 +251,7 @@ Then perform the following commands on the root folder:
250251
| parallelstore\_csi\_driver | Whether the Parallelstore CSI driver Addon is enabled for this cluster. | `bool` | `null` | no |
251252
| project\_id | The project ID to host the cluster in (required) | `string` | n/a | yes |
252253
| ray\_operator\_config | The Ray Operator Addon configuration for this cluster. | <pre>object({<br> enabled = bool<br> logging_enabled = optional(bool, false)<br> monitoring_enabled = optional(bool, false)<br> })</pre> | <pre>{<br> "enabled": false,<br> "logging_enabled": false,<br> "monitoring_enabled": false<br>}</pre> | no |
254+
| rbac\_binding\_config | RBACBindingConfig allows user to restrict ClusterRoleBindings an RoleBindings that can be created. | <pre>object({<br> enable_insecure_binding_system_unauthenticated = optional(bool, null)<br> enable_insecure_binding_system_authenticated = optional(bool, null)<br> })</pre> | <pre>{<br> "enable_insecure_binding_system_authenticated": null,<br> "enable_insecure_binding_system_unauthenticated": null<br>}</pre> | no |
253255
| region | The region to host the cluster in (optional if zonal cluster / required if regional) | `string` | `null` | no |
254256
| regional | Whether is a regional cluster (zonal cluster if set false. WARNING: changing this after cluster creation is destructive!) | `bool` | `true` | no |
255257
| registry\_project\_ids | Projects holding Google Container Registries. If empty, we use the cluster project. If a service account is created and the `grant_registry_access` variable is set to `true`, the `storage.objectViewer` and `artifactregsitry.reader` roles are assigned on these projects. | `list(string)` | `[]` | no |
@@ -268,6 +270,7 @@ Then perform the following commands on the root folder:
268270
| stub\_domains | Map of stub domains and their resolvers to forward DNS queries for a certain domain to an external DNS server | `map(list(string))` | `{}` | no |
269271
| subnetwork | The subnetwork to host the cluster in (required) | `string` | n/a | yes |
270272
| timeouts | Timeout for cluster operations. | `map(string)` | `{}` | no |
273+
| total\_egress\_bandwidth\_tier | Specifies the total network bandwidth tier for NodePools in the cluster. Valid values are `TIER_UNSPECIFIED` and `TIER_1`. Defaults to `TIER_UNSPECIFIED`. | `string` | `null` | no |
271274
| upstream\_nameservers | If specified, the values replace the nameservers taken by default from the node’s /etc/resolv.conf | `list(string)` | `[]` | no |
272275
| windows\_node\_pools | List of maps containing Windows node pools | `list(map(string))` | `[]` | no |
273276
| zones | The zones to host the cluster in (optional if regional cluster / required if zonal) | `list(string)` | `[]` | no |
@@ -352,9 +355,10 @@ The node_pools variable takes the following parameters:
352355
| initial_node_count | The initial number of nodes for the pool. In regional or multi-zonal clusters, this is the number of nodes per zone. Changing this will force recreation of the resource. Defaults to the value of min_count | " " | Optional |
353356
| insecure_kubelet_readonly_port_enabled | (boolean) Whether or not to enable the insecure Kubelet readonly port. | null | Optional |
354357
| key | The key required for the taint | | Required |
355-
| logging_variant | The type of logging agent that is deployed by default for newly created node pools in the cluster. Valid values include DEFAULT and MAX_THROUGHPUT. | DEFAULT | Optional |
356-
| local_ssd_count | The amount of local SSD disks that will be attached to each cluster node and may be used as a `hostpath` volume or a `local` PersistentVolume. | 0 | Optional |
358+
| logging_variant | The type of logging agent that is deployed by default for newly created node pools in the cluster. Valid values include DEFAULT and MAX_THROUGHPUT. | DEFAULT | Optional |
359+
| local_ssd_count | The amount of local SSD disks that will be attached to each cluster node and may be used as a `hostpath` volume or a `local` PersistentVolume. | 0 | Optional |
357360
| local_ssd_ephemeral_storage_count | The amount of local SSD disks that will be attached to each cluster node and assigned as scratch space as an `emptyDir` volume. If unspecified, ephemeral storage is backed by the cluster node boot disk. | 0 | Optional |
361+
| ephemeral_storage_local_ssd_data_cache_count | Number of raw-block local NVMe SSD disks to be attached to the node utilized for GKE Data Cache. | 0 | Optional |
358362
| local_nvme_ssd_count | Number of raw-block local NVMe SSD disks to be attached to the node.Each local SSD is 375 GB in size. If zero, it means no raw-block local NVMe SSD disks to be attached to the node. | 0 | Optional |
359363
| machine_type | The name of a Google Compute Engine machine type | e2-medium | Optional |
360364
| min_cpu_platform | Minimum CPU platform to be used by the nodes in the pool. The nodes may be scheduled on the specified or newer CPU platform. | " " | Optional |

autogen/main/README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,9 +228,10 @@ The node_pools variable takes the following parameters:
228228
| initial_node_count | The initial number of nodes for the pool. In regional or multi-zonal clusters, this is the number of nodes per zone. Changing this will force recreation of the resource. Defaults to the value of min_count | " " | Optional |
229229
| insecure_kubelet_readonly_port_enabled | (boolean) Whether or not to enable the insecure Kubelet readonly port. | null | Optional |
230230
| key | The key required for the taint | | Required |
231-
| logging_variant | The type of logging agent that is deployed by default for newly created node pools in the cluster. Valid values include DEFAULT and MAX_THROUGHPUT. | DEFAULT | Optional |
232-
| local_ssd_count | The amount of local SSD disks that will be attached to each cluster node and may be used as a `hostpath` volume or a `local` PersistentVolume. | 0 | Optional |
231+
| logging_variant | The type of logging agent that is deployed by default for newly created node pools in the cluster. Valid values include DEFAULT and MAX_THROUGHPUT. | DEFAULT | Optional |
232+
| local_ssd_count | The amount of local SSD disks that will be attached to each cluster node and may be used as a `hostpath` volume or a `local` PersistentVolume. | 0 | Optional |
233233
| local_ssd_ephemeral_storage_count | The amount of local SSD disks that will be attached to each cluster node and assigned as scratch space as an `emptyDir` volume. If unspecified, ephemeral storage is backed by the cluster node boot disk. | 0 | Optional |
234+
| ephemeral_storage_local_ssd_data_cache_count | Number of raw-block local NVMe SSD disks to be attached to the node utilized for GKE Data Cache. | 0 | Optional |
234235
{% if beta_cluster %}
235236
| local_ssd_ephemeral_count | The amount of local SSD disks that will be attached to each cluster node and assigned as scratch space as an `emptyDir` volume. If unspecified, ephemeral storage is backed by the cluster node boot disk. | 0 | Optional |
236237
{% endif %}

autogen/main/cluster.tf.tmpl

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,14 @@ resource "google_container_cluster" "primary" {
7171
}
7272
}
7373

74+
dynamic "gke_auto_upgrade_config" {
75+
for_each = var.gke_auto_upgrade_config_patch_mode != null ? [1] : []
76+
77+
content {
78+
patch_mode = var.gke_auto_upgrade_config_patch_mode
79+
}
80+
}
81+
7482
dynamic "cost_management_config" {
7583
for_each = var.enable_cost_allocation ? [1] : []
7684
content {
@@ -236,7 +244,7 @@ resource "google_container_cluster" "primary" {
236244
{% if autopilot_cluster != true %}
237245

238246
dynamic "identity_service_config" {
239-
for_each = var.enable_identity_service !=null ? [var.enable_identity_service] : []
247+
for_each = var.enable_identity_service != null ? [var.enable_identity_service] : []
240248
content {
241249
enabled = identity_service_config.value
242250
}
@@ -266,6 +274,21 @@ resource "google_container_cluster" "primary" {
266274

267275
in_transit_encryption_config = var.in_transit_encryption_config
268276

277+
dynamic "network_performance_config" {
278+
for_each = var.total_egress_bandwidth_tier != null ? [1] : []
279+
content {
280+
total_egress_bandwidth_tier = var.total_egress_bandwidth_tier
281+
}
282+
}
283+
284+
dynamic "rbac_binding_config" {
285+
for_each = var.rbac_binding_config.enable_insecure_binding_system_unauthenticated != null || var.rbac_binding_config.enable_insecure_binding_system_authenticated != null ? [var.rbac_binding_config] : []
286+
content {
287+
enable_insecure_binding_system_unauthenticated = rbac_binding_config.value["enable_insecure_binding_system_unauthenticated"]
288+
enable_insecure_binding_system_authenticated = rbac_binding_config.value["enable_insecure_binding_system_authenticated"]
289+
}
290+
}
291+
269292
dynamic "secret_manager_config" {
270293
for_each = var.enable_secret_manager_addon ? [var.enable_secret_manager_addon] : []
271294
content {
@@ -855,6 +878,8 @@ locals {
855878
"local_ssd_encryption_mode",
856879
"max_run_duration",
857880
"flex_start",
881+
"local_ssd_ephemeral_storage_count",
882+
"ephemeral_storage_local_ssd_data_cache_count",
858883
]
859884
}
860885

@@ -1106,14 +1131,15 @@ resource "google_container_node_pool" "windows_pools" {
11061131
disk_type = lookup(each.value, "disk_type", "pd-standard")
11071132

11081133
dynamic "ephemeral_storage_local_ssd_config" {
1109-
for_each = lookup(each.value, "local_ssd_ephemeral_storage_count", 0) > 0 ? [each.value.local_ssd_ephemeral_storage_count] : []
1134+
for_each = lookup(each.value, "local_ssd_ephemeral_storage_count", 0) > 0 || lookup(each.value, "ephemeral_storage_local_ssd_data_cache_count", 0) > 0 ? [1] : []
11101135
content {
1111-
local_ssd_count = ephemeral_storage_local_ssd_config.value
1136+
local_ssd_count = lookup(each.value, "local_ssd_ephemeral_storage_count", 0)
1137+
data_cache_count = lookup(each.value, "ephemeral_storage_local_ssd_data_cache_count", 0)
11121138
}
11131139
}
11141140
{% if beta_cluster %}
11151141
dynamic "ephemeral_storage_config" {
1116-
for_each = lookup(each.value, "local_ssd_ephemeral_count",0) > 0 ? [each.value.local_ssd_ephemeral_count] : []
1142+
for_each = lookup(each.value, "local_ssd_ephemeral_count", 0) > 0 ? [each.value.local_ssd_ephemeral_count] : []
11171143
content {
11181144
local_ssd_count = ephemeral_storage_config.value
11191145
}

0 commit comments

Comments
 (0)