File tree Expand file tree Collapse file tree 16 files changed +42
-11
lines changed
beta-autopilot-private-cluster
beta-autopilot-public-cluster
beta-private-cluster-update-variant
beta-public-cluster-update-variant
private-cluster-update-variant
integration/safer_cluster/controls Expand file tree Collapse file tree 16 files changed +42
-11
lines changed Original file line number Diff line number Diff line change @@ -69,7 +69,7 @@ resource "google_container_cluster" "primary" {
69
69
disabled = var.disable_default_snat
70
70
}
71
71
{% endif %}
72
- min_master_version = var.release_channel != null ? null : local.master_version
72
+ min_master_version = var.release_channel == null || var.release_channel == "UNSPECIFIED" ? local.master_version : null
73
73
74
74
{% if beta_cluster and autopilot_cluster != true %}
75
75
dynamic "cluster_telemetry" {
Original file line number Diff line number Diff line change @@ -50,7 +50,7 @@ resource "google_container_cluster" "primary" {
50
50
51
51
subnetwork = " projects/${ local . network_project_id } /regions/${ local . region } /subnetworks/${ var . subnetwork } "
52
52
53
- min_master_version = var. release_channel != null ? null : local. master_version
53
+ min_master_version = var. release_channel == null || var . release_channel == " UNSPECIFIED " ? local. master_version : null
54
54
55
55
logging_service = var. logging_service
56
56
monitoring_service = var. monitoring_service
Original file line number Diff line number Diff line change @@ -17,6 +17,7 @@ This example illustrates how to instantiate the opinionated Safer Cluster module
17
17
| ca\_ certificate | The cluster ca certificate (base64 encoded) |
18
18
| client\_ token | The bearer token for auth |
19
19
| cluster\_ name | Cluster name |
20
+ | explicit\_ k8s\_ version | Explicit version used for cluster creation |
20
21
| kubernetes\_ endpoint | The cluster endpoint |
21
22
| location | n/a |
22
23
| master\_ kubernetes\_ version | Kubernetes version of the master |
Original file line number Diff line number Diff line change @@ -38,6 +38,18 @@ provider "kubernetes" {
38
38
cluster_ca_certificate = base64decode (module. gke . ca_certificate )
39
39
}
40
40
41
+ // A random valid k8s version is retrived
42
+ // to specify as an explicit version.
43
+ data "google_container_engine_versions" "current" {
44
+ project = var. project_id
45
+ location = var. region
46
+ }
47
+
48
+ resource "random_shuffle" "version" {
49
+ input = data. google_container_engine_versions . current . valid_master_versions
50
+ result_count = 1
51
+ }
52
+
41
53
module "gke" {
42
54
source = " ../../modules/safer-cluster/"
43
55
project_id = var. project_id
@@ -51,6 +63,8 @@ module "gke" {
51
63
master_ipv4_cidr_block = " 172.16.0.0/28"
52
64
add_cluster_firewall_rules = true
53
65
firewall_inbound_ports = [" 9443" , " 15017" ]
66
+ kubernetes_version = random_shuffle. version . result [0 ]
67
+ release_channel = " UNSPECIFIED"
54
68
55
69
master_authorized_networks = [
56
70
{
Original file line number Diff line number Diff line change @@ -74,3 +74,8 @@ output "project_id" {
74
74
description = " The project ID the cluster is in"
75
75
value = var. project_id
76
76
}
77
+
78
+ output "explicit_k8s_version" {
79
+ description = " Explicit version used for cluster creation"
80
+ value = random_shuffle. version . result [0 ]
81
+ }
Original file line number Diff line number Diff line change @@ -29,7 +29,8 @@ terraform {
29
29
source = " hashicorp/kubernetes"
30
30
}
31
31
random = {
32
- source = " hashicorp/random"
32
+ source = " hashicorp/random"
33
+ version = " ~> 3.0"
33
34
}
34
35
}
35
36
}
Original file line number Diff line number Diff line change @@ -51,7 +51,7 @@ resource "google_container_cluster" "primary" {
51
51
default_snat_status {
52
52
disabled = var. disable_default_snat
53
53
}
54
- min_master_version = var. release_channel != null ? null : local. master_version
54
+ min_master_version = var. release_channel == null || var . release_channel == " UNSPECIFIED " ? local. master_version : null
55
55
56
56
logging_service = var. logging_service
57
57
monitoring_service = var. monitoring_service
Original file line number Diff line number Diff line change @@ -51,7 +51,7 @@ resource "google_container_cluster" "primary" {
51
51
default_snat_status {
52
52
disabled = var. disable_default_snat
53
53
}
54
- min_master_version = var. release_channel != null ? null : local. master_version
54
+ min_master_version = var. release_channel == null || var . release_channel == " UNSPECIFIED " ? local. master_version : null
55
55
56
56
logging_service = var. logging_service
57
57
monitoring_service = var. monitoring_service
Original file line number Diff line number Diff line change @@ -59,7 +59,7 @@ resource "google_container_cluster" "primary" {
59
59
default_snat_status {
60
60
disabled = var. disable_default_snat
61
61
}
62
- min_master_version = var. release_channel != null ? null : local. master_version
62
+ min_master_version = var. release_channel == null || var . release_channel == " UNSPECIFIED " ? local. master_version : null
63
63
64
64
dynamic "cluster_telemetry" {
65
65
for_each = local. cluster_telemetry_type_is_set ? [1 ] : []
Original file line number Diff line number Diff line change @@ -59,7 +59,7 @@ resource "google_container_cluster" "primary" {
59
59
default_snat_status {
60
60
disabled = var. disable_default_snat
61
61
}
62
- min_master_version = var. release_channel != null ? null : local. master_version
62
+ min_master_version = var. release_channel == null || var . release_channel == " UNSPECIFIED " ? local. master_version : null
63
63
64
64
dynamic "cluster_telemetry" {
65
65
for_each = local. cluster_telemetry_type_is_set ? [1 ] : []
Original file line number Diff line number Diff line change @@ -59,7 +59,7 @@ resource "google_container_cluster" "primary" {
59
59
default_snat_status {
60
60
disabled = var. disable_default_snat
61
61
}
62
- min_master_version = var. release_channel != null ? null : local. master_version
62
+ min_master_version = var. release_channel == null || var . release_channel == " UNSPECIFIED " ? local. master_version : null
63
63
64
64
dynamic "cluster_telemetry" {
65
65
for_each = local. cluster_telemetry_type_is_set ? [1 ] : []
Original file line number Diff line number Diff line change @@ -59,7 +59,7 @@ resource "google_container_cluster" "primary" {
59
59
default_snat_status {
60
60
disabled = var. disable_default_snat
61
61
}
62
- min_master_version = var. release_channel != null ? null : local. master_version
62
+ min_master_version = var. release_channel == null || var . release_channel == " UNSPECIFIED " ? local. master_version : null
63
63
64
64
dynamic "cluster_telemetry" {
65
65
for_each = local. cluster_telemetry_type_is_set ? [1 ] : []
Original file line number Diff line number Diff line change @@ -50,7 +50,7 @@ resource "google_container_cluster" "primary" {
50
50
51
51
subnetwork = " projects/${ local . network_project_id } /regions/${ local . region } /subnetworks/${ var . subnetwork } "
52
52
53
- min_master_version = var. release_channel != null ? null : local. master_version
53
+ min_master_version = var. release_channel == null || var . release_channel == " UNSPECIFIED " ? local. master_version : null
54
54
55
55
logging_service = var. logging_service
56
56
monitoring_service = var. monitoring_service
Original file line number Diff line number Diff line change @@ -50,7 +50,7 @@ resource "google_container_cluster" "primary" {
50
50
51
51
subnetwork = " projects/${ local . network_project_id } /regions/${ local . region } /subnetworks/${ var . subnetwork } "
52
52
53
- min_master_version = var. release_channel != null ? null : local. master_version
53
+ min_master_version = var. release_channel == null || var . release_channel == " UNSPECIFIED " ? local. master_version : null
54
54
55
55
logging_service = var. logging_service
56
56
monitoring_service = var. monitoring_service
Original file line number Diff line number Diff line change @@ -55,3 +55,7 @@ output "service_account" {
55
55
description = " The service account to default running nodes as if not overridden in `node_pools`."
56
56
value = module. example . service_account
57
57
}
58
+
59
+ output "explicit_k8s_version" {
60
+ value = module. example . explicit_k8s_version
61
+ }
Original file line number Diff line number Diff line change 15
15
project_id = attribute ( 'project_id' )
16
16
location = attribute ( 'location' )
17
17
cluster_name = attribute ( 'cluster_name' )
18
+ explicit_version = attribute ( 'explicit_k8s_version' )
18
19
19
20
control "gcloud" do
20
21
title "Google Compute Engine GKE configuration"
35
36
expect ( data [ 'status' ] ) . to eq 'RUNNING'
36
37
end
37
38
39
+ it "has expected explicit version" do
40
+ expect ( data [ 'currentMasterVersion' ] ) . to eq explicit_version
41
+ expect ( data [ 'currentNodeVersion' ] ) . to eq explicit_version
42
+ end
43
+
38
44
it "is regional" do
39
45
expect ( data [ 'location' ] ) . to match ( /^.*[1-9]$/ )
40
46
end
You can’t perform that action at this time.
0 commit comments