@@ -85,7 +85,7 @@ resource "local_file" "kubernetes_template" {
85
85
EOF
86
86
}
87
87
88
- resource "kubernetes_config_map" "template " {
88
+ resource "kubernetes_config_map" "template_primary " {
89
89
provider = kubernetes. primary
90
90
91
91
metadata {
@@ -98,7 +98,7 @@ resource "kubernetes_config_map" "template" {
98
98
}
99
99
}
100
100
101
- resource "kubernetes_job" "push_template " {
101
+ resource "kubernetes_job" "push_template_primary " {
102
102
provider = kubernetes. primary
103
103
104
104
metadata {
@@ -137,8 +137,10 @@ resource "kubernetes_job" "push_template" {
137
137
" templates" ,
138
138
" push" ,
139
139
" --directory=/home/coder/template" ,
140
+ " --provisioner-tag=scope=organization" ,
141
+ " --provisioner-tag=deployment=primary" ,
140
142
" --yes" ,
141
- " kubernetes"
143
+ " kubernetes-primary "
142
144
]
143
145
volume_mount {
144
146
name = " coder-template"
@@ -149,7 +151,159 @@ resource "kubernetes_job" "push_template" {
149
151
volume {
150
152
name = " coder-template"
151
153
config_map {
152
- name = kubernetes_config_map. template . metadata . 0 . name
154
+ name = kubernetes_config_map. template_primary . metadata . 0 . name
155
+ }
156
+ }
157
+ restart_policy = " Never"
158
+ }
159
+ }
160
+ }
161
+ wait_for_completion = true
162
+ }
163
+
164
+ resource "kubernetes_config_map" "template_europe" {
165
+ provider = kubernetes. europe
166
+
167
+ metadata {
168
+ name = " coder-template"
169
+ namespace = kubernetes_namespace. coder_europe . metadata . 0 . name
170
+ }
171
+
172
+ data = {
173
+ " main.tf" = local_file.kubernetes_template.content
174
+ }
175
+ }
176
+
177
+ resource "kubernetes_job" "push_template_europe" {
178
+ provider = kubernetes. europe
179
+
180
+ metadata {
181
+ name = " ${ var . name } -push-template"
182
+ namespace = kubernetes_namespace. coder_europe . metadata . 0 . name
183
+ labels = {
184
+ " app.kubernetes.io/name" = " ${ var . name } -push-template"
185
+ }
186
+ }
187
+ spec {
188
+ completions = 1
189
+ template {
190
+ metadata {}
191
+ spec {
192
+ affinity {
193
+ node_affinity {
194
+ required_during_scheduling_ignored_during_execution {
195
+ node_selector_term {
196
+ match_expressions {
197
+ key = " cloud.google.com/gke-nodepool"
198
+ operator = " In"
199
+ values = [" ${ google_container_node_pool . node_pool [" europe_misc" ]. name } " ]
200
+ }
201
+ }
202
+ }
203
+ }
204
+ }
205
+ container {
206
+ name = " cli"
207
+ image = " ${ var . coder_image_repo } :${ var . coder_image_tag } "
208
+ command = [
209
+ " /opt/coder" ,
210
+ " --verbose" ,
211
+ " --url=${ local . deployments . primary . url } " ,
212
+ " --token=${ trimspace (data. local_file . api_key . content )} " ,
213
+ " templates" ,
214
+ " push" ,
215
+ " --directory=/home/coder/template" ,
216
+ " --provisioner-tag=scope=organization" ,
217
+ " --provisioner-tag=deployment=europe" ,
218
+ " --yes" ,
219
+ " kubernetes-europe"
220
+ ]
221
+ volume_mount {
222
+ name = " coder-template"
223
+ mount_path = " /home/coder/template/main.tf"
224
+ sub_path = " main.tf"
225
+ }
226
+ }
227
+ volume {
228
+ name = " coder-template"
229
+ config_map {
230
+ name = kubernetes_config_map. template_europe . metadata . 0 . name
231
+ }
232
+ }
233
+ restart_policy = " Never"
234
+ }
235
+ }
236
+ }
237
+ wait_for_completion = true
238
+ }
239
+
240
+ resource "kubernetes_config_map" "template_asia" {
241
+ provider = kubernetes. asia
242
+
243
+ metadata {
244
+ name = " coder-template"
245
+ namespace = kubernetes_namespace. coder_asia . metadata . 0 . name
246
+ }
247
+
248
+ data = {
249
+ " main.tf" = local_file.kubernetes_template.content
250
+ }
251
+ }
252
+
253
+ resource "kubernetes_job" "push_template_asia" {
254
+ provider = kubernetes. asia
255
+
256
+ metadata {
257
+ name = " ${ var . name } -push-template"
258
+ namespace = kubernetes_namespace. coder_asia . metadata . 0 . name
259
+ labels = {
260
+ " app.kubernetes.io/name" = " ${ var . name } -push-template"
261
+ }
262
+ }
263
+ spec {
264
+ completions = 1
265
+ template {
266
+ metadata {}
267
+ spec {
268
+ affinity {
269
+ node_affinity {
270
+ required_during_scheduling_ignored_during_execution {
271
+ node_selector_term {
272
+ match_expressions {
273
+ key = " cloud.google.com/gke-nodepool"
274
+ operator = " In"
275
+ values = [" ${ google_container_node_pool . node_pool [" asia_misc" ]. name } " ]
276
+ }
277
+ }
278
+ }
279
+ }
280
+ }
281
+ container {
282
+ name = " cli"
283
+ image = " ${ var . coder_image_repo } :${ var . coder_image_tag } "
284
+ command = [
285
+ " /opt/coder" ,
286
+ " --verbose" ,
287
+ " --url=${ local . deployments . primary . url } " ,
288
+ " --token=${ trimspace (data. local_file . api_key . content )} " ,
289
+ " templates" ,
290
+ " push" ,
291
+ " --directory=/home/coder/template" ,
292
+ " --provisioner-tag=scope=organization" ,
293
+ " --provisioner-tag=deployment=asia" ,
294
+ " --yes" ,
295
+ " kubernetes-asia"
296
+ ]
297
+ volume_mount {
298
+ name = " coder-template"
299
+ mount_path = " /home/coder/template/main.tf"
300
+ sub_path = " main.tf"
301
+ }
302
+ }
303
+ volume {
304
+ name = " coder-template"
305
+ config_map {
306
+ name = kubernetes_config_map. template_asia . metadata . 0 . name
153
307
}
154
308
}
155
309
restart_policy = " Never"
0 commit comments