@@ -23,72 +23,76 @@ limitations under the License.
23
23
// Reserve regional external (static) IP addresses
24
24
25
25
locals {
26
- resource_labels = " ${ merge (var. labels , map (" owner" , data. external . account . result . gcloud_account ))} "
26
+ resource_labels = merge (
27
+ var. labels ,
28
+ {
29
+ " owner" = data.external.account.result.gcloud_account
30
+ },
31
+ )
27
32
}
28
33
29
34
resource "google_compute_address" "staging_public_ip_1" {
30
35
name = " gke-enterprise-demo-cloud-public-ip-1"
31
- region = " ${ var . region_cloud } "
36
+ region = var. region_cloud
32
37
}
33
38
34
39
resource "google_compute_address" "staging_public_ip_2" {
35
40
name = " gke-enterprise-demo-cloud-public-ip-2"
36
- region = " ${ var . region_on_prem } "
41
+ region = var. region_on_prem
37
42
}
38
43
39
44
// STAGING: invokes a module to create a policy based VPN, custom network/subnet, firewall rules as Cloud
40
45
module "staging_cloud" {
41
- source = " modules/datacenter"
42
- project = " ${ var . project } "
46
+ source = " ./ modules/datacenter"
47
+ project = var. project
43
48
network_name = " gke-enterprise-demo-staging-cloud"
44
- subnet_region = " ${ var . region_cloud } "
45
- primary_range = " ${ lookup ( var. cloud , " primary_range" ) } "
46
- secondary_range = " ${ lookup ( var. cloud , " secondary_range" ) } "
47
- vpn_ip = " ${ google_compute_address . staging_public_ip_1 . address } "
48
- peer_ip = " ${ google_compute_address . staging_public_ip_2 . address } "
49
- destination_range = " ${ lookup ( var. cloud , " destination_range" ) } "
50
- shared_secret = " ${ random_string . staging_shared_secret . result } "
49
+ subnet_region = var. region_cloud
50
+ primary_range = var. cloud [ " primary_range" ]
51
+ secondary_range = var. cloud [ " secondary_range" ]
52
+ vpn_ip = google_compute_address. staging_public_ip_1 . address
53
+ peer_ip = google_compute_address. staging_public_ip_2 . address
54
+ destination_range = var. cloud [ " destination_range" ]
55
+ shared_secret = random_string. staging_shared_secret . result
51
56
}
52
57
53
58
// invokes a module to create policy based VPN, custom network/subnet, firewall rules as
54
59
// STAGING: on prem data center
55
60
module "staging_on_prem" {
56
- source = " modules/datacenter"
57
- project = " ${ var . project } "
61
+ source = " ./ modules/datacenter"
62
+ project = var. project
58
63
network_name = " gke-enterprise-demo-staging-on-prem"
59
- subnet_region = " ${ var . region_on_prem } "
60
- primary_range = " ${ lookup ( var. on_prem , " primary_range" ) } "
61
- secondary_range = " ${ lookup ( var. on_prem , " secondary_range" ) } "
62
- vpn_ip = " ${ google_compute_address . staging_public_ip_2 . address } "
63
- peer_ip = " ${ google_compute_address . staging_public_ip_1 . address } "
64
- destination_range = " ${ lookup ( var. on_prem , " destination_range" ) } "
65
- shared_secret = " ${ random_string . staging_shared_secret . result } "
64
+ subnet_region = var. region_on_prem
65
+ primary_range = var. on_prem [ " primary_range" ]
66
+ secondary_range = var. on_prem [ " secondary_range" ]
67
+ vpn_ip = google_compute_address. staging_public_ip_2 . address
68
+ peer_ip = google_compute_address. staging_public_ip_1 . address
69
+ destination_range = var. on_prem [ " destination_range" ]
70
+ shared_secret = random_string. staging_shared_secret . result
66
71
}
67
72
68
73
// Creates a Google Kubernetes Engine (GKE) cluster for the on premise data center
69
74
// https://www.terraform.io/docs/providers/google/r/container_cluster.html
70
75
resource "google_container_cluster" "staging_on_prem_cluster" {
71
76
name = " gke-enterprise-staging-on-prem-cluster"
72
- project = " ${ var . project } "
77
+ project = var. project
73
78
74
- zone = " ${ var . zone_on_prem } "
75
- additional_zones = " ${ var . zone_on_prem_failover } "
79
+ zone = var. zone_on_prem
80
+ additional_zones = var. zone_on_prem_failover
76
81
77
- network = " ${ module . staging_on_prem . network } "
82
+ network = module. staging_on_prem . network
78
83
79
- subnetwork = " ${ module . staging_on_prem . subnetwork } "
84
+ subnetwork = module. staging_on_prem . subnetwork
80
85
initial_node_count = 1
81
86
82
- min_master_version = " ${ var . gke_master_version } "
87
+ min_master_version = var. gke_master_version
83
88
84
- resource_labels = " ${ local . resource_labels } "
89
+ resource_labels = local. resource_labels
85
90
86
91
ip_allocation_policy {
87
- cluster_secondary_range_name = " ${ module . staging_on_prem . secondary_range_name } "
92
+ cluster_secondary_range_name = module. staging_on_prem . secondary_range_name
88
93
}
89
94
90
95
remove_default_node_pool = true
91
- initial_node_count = 1
92
96
93
97
addons_config {
94
98
network_policy_config {
@@ -103,7 +107,11 @@ resource "google_container_cluster" "staging_on_prem_cluster" {
103
107
104
108
// Lifecycle is used for preventing destruction of the following resources when the terraform apply again
105
109
lifecycle {
106
- ignore_changes = [" network" , " subnetwork" , " ip_allocation_policy.0.services_secondary_range_name" ]
110
+ ignore_changes = [
111
+ network ,
112
+ subnetwork ,
113
+ " ip_allocation_policy[0].services_secondary_range_name" ,
114
+ ]
107
115
}
108
116
109
117
timeouts {
@@ -115,14 +123,14 @@ resource "google_container_cluster" "staging_on_prem_cluster" {
115
123
116
124
resource "google_container_node_pool" "staging_on_prem_cluster" {
117
125
name = " gke-enterprise-staging-on-prem-node-pool"
118
- project = " ${ var . project } "
126
+ project = var. project
119
127
120
- cluster = " ${ google_container_cluster . staging_on_prem_cluster . name } "
121
- zone = " ${ var . zone_on_prem } "
128
+ cluster = google_container_cluster. staging_on_prem_cluster . name
129
+ zone = var. zone_on_prem
122
130
node_count = 1
123
131
124
132
node_config {
125
- machine_type = " ${ lookup ( var. on_prem , " machine_type" ) } "
133
+ machine_type = var. on_prem [ " machine_type" ]
126
134
127
135
// https://cloud.google.com/kubernetes-engine/docs/how-to/access-scopes
128
136
// Enable private gcr.io read access for the same project
@@ -134,29 +142,31 @@ resource "google_container_node_pool" "staging_on_prem_cluster" {
134
142
}
135
143
136
144
lifecycle {
137
- ignore_changes = [" id" , " node_config.0.metadata" ]
145
+ ignore_changes = [
146
+ id ,
147
+ " node_config[0].metadata" ,
148
+ ]
138
149
}
139
150
}
140
151
141
152
// Creates a Google Kubernetes Engine (GKE) cluster for the cloud
142
153
// https://www.terraform.io/docs/providers/google/r/container_cluster.html
143
154
resource "google_container_cluster" "staging_cloud_cluster" {
144
155
name = " gke-enterprise-staging-cloud-cluster"
145
- zone = " ${ var . zone_cloud } "
146
- network = " ${ module . staging_cloud . network } "
147
- subnetwork = " ${ module . staging_cloud . subnetwork } "
156
+ zone = var. zone_cloud
157
+ network = module. staging_cloud . network
158
+ subnetwork = module. staging_cloud . subnetwork
148
159
initial_node_count = 1
149
160
150
- min_master_version = " ${ var . gke_master_version } "
161
+ min_master_version = var. gke_master_version
151
162
152
- resource_labels = " ${ local . resource_labels } "
163
+ resource_labels = local. resource_labels
153
164
154
165
ip_allocation_policy {
155
- cluster_secondary_range_name = " ${ module . staging_cloud . secondary_range_name } "
166
+ cluster_secondary_range_name = module. staging_cloud . secondary_range_name
156
167
}
157
168
158
169
remove_default_node_pool = true
159
- initial_node_count = 1
160
170
161
171
addons_config {
162
172
network_policy_config {
@@ -170,26 +180,29 @@ resource "google_container_cluster" "staging_cloud_cluster" {
170
180
}
171
181
172
182
lifecycle {
173
- ignore_changes = [" network" , " subnetwork" , " ip_allocation_policy.0.services_secondary_range_name" ]
183
+ ignore_changes = [
184
+ network ,
185
+ subnetwork ,
186
+ " ip_allocation_policy[0].services_secondary_range_name" ,
187
+ ]
174
188
}
175
189
176
190
timeouts {
177
191
create = " 30m"
178
192
update = " 40m"
179
193
delete = " 30m"
180
194
}
181
-
182
195
}
183
196
184
197
resource "google_container_node_pool" "staging_cloud_cluster" {
185
198
name = " gke-enterprise-staging-cloud-node-pool"
186
- project = " ${ var . project } "
187
- cluster = " ${ google_container_cluster . staging_cloud_cluster . name } "
188
- zone = " ${ var . zone_cloud } "
199
+ project = var. project
200
+ cluster = google_container_cluster. staging_cloud_cluster . name
201
+ zone = var. zone_cloud
189
202
node_count = 1
190
203
191
204
node_config {
192
- machine_type = " ${ lookup ( var. cloud , " machine_type" ) } "
205
+ machine_type = var. cloud [ " machine_type" ]
193
206
194
207
// https://cloud.google.com/kubernetes-engine/docs/how-to/access-scopes
195
208
// Enable private gcr.io read access for the same project
@@ -205,35 +218,38 @@ resource "google_container_node_pool" "staging_cloud_cluster" {
205
218
}
206
219
207
220
lifecycle {
208
- ignore_changes = [" id" , " node_config.0.metadata" ]
221
+ ignore_changes = [
222
+ id ,
223
+ " node_config[0].metadata" ,
224
+ ]
209
225
}
210
226
}
211
227
212
228
resource "google_bigquery_dataset" "staging-log-sink-dataset" {
213
229
dataset_id = " staging_gke_elasticsearch_log_dataset"
214
- project = " ${ var . project } "
230
+ project = var. project
215
231
location = " US"
216
232
default_table_expiration_ms = " 3600000"
217
233
218
- labels {
234
+ labels = {
219
235
env = " default"
220
236
}
221
237
}
222
238
223
239
resource "google_logging_project_sink" "staging-bigquery-sink" {
224
240
name = " gke-enterprise-demo-staging-gke-elasticsearch-log-sink"
225
- project = " ${ var . project } "
241
+ project = var. project
226
242
destination = " bigquery.googleapis.com/projects/${ var . project } /datasets/${ google_bigquery_dataset . staging-log-sink-dataset . dataset_id } "
227
243
filter = " resource.type=container"
228
244
unique_writer_identity = true
229
245
}
230
246
231
247
resource "google_project_iam_binding" "staging_bigquery-sink-permissions" {
232
- project = " ${ var . project } "
248
+ project = var. project
233
249
role = " roles/bigquery.dataEditor"
234
250
235
251
members = [
236
- " ${ google_logging_project_sink . staging-bigquery-sink . writer_identity } " ,
252
+ google_logging_project_sink . staging-bigquery-sink . writer_identity ,
237
253
]
238
254
}
239
255
0 commit comments