@@ -130,6 +130,10 @@ resource "kubernetes_manifest" "vcluster" {
130
130
" values" = <<- EOT
131
131
service:
132
132
type: NodePort
133
+ securityContext:
134
+ runAsUser: 12345
135
+ runAsNonRoot: true
136
+ privileged: false
133
137
syncer:
134
138
extraArgs:
135
139
- --tls-san="${ data . coder_workspace . me . name } .${ var . base_domain } "
@@ -159,51 +163,51 @@ resource "kubernetes_manifest" "configmap_capi_init" {
159
163
}
160
164
}
161
165
162
- data "kubernetes_secret" "vcluster-kubeconfig" {
163
- metadata {
164
- name = " ${ data . coder_workspace . me . name } -kubeconfig"
165
- namespace = data. coder_workspace . me . name
166
- }
166
+ # data "kubernetes_secret" "vcluster-kubeconfig" {
167
+ # metadata {
168
+ # name = "${data.coder_workspace.me.name}-kubeconfig"
169
+ # namespace = data.coder_workspace.me.name
170
+ # }
167
171
168
- depends_on = [
169
- kubernetes_manifest . cluster ,
170
- kubernetes_manifest . vcluster ,
171
- kubernetes_manifest . clusterresourceset_capi_init
172
- ]
173
- }
172
+ # depends_on = [
173
+ # kubernetes_manifest.cluster,
174
+ # kubernetes_manifest.vcluster,
175
+ # kubernetes_manifest.clusterresourceset_capi_init
176
+ # ]
177
+ # }
174
178
175
- // using a manifest instead of secret, so that the wait capability works
176
- resource "kubernetes_manifest" "configmap_capi_kubeconfig" {
177
- manifest = {
178
- " kind" = " Secret"
179
- " metadata" = {
180
- " name" = " vcluster-kubeconfig"
181
- " namespace" = data.coder_workspace.me.name
182
- }
183
- " apiVersion" = " v1"
184
- " type" = " addons.cluster.x-k8s.io/resource-set"
185
- " data" = {
186
- " kubeconfig.yaml" = base64encode (data. kubernetes_secret . vcluster-kubeconfig . data . value )
187
- }
188
- }
179
+ # // using a manifest instead of secret, so that the wait capability works
180
+ # resource "kubernetes_manifest" "configmap_capi_kubeconfig" {
181
+ # manifest = {
182
+ # "kind" = "Secret"
183
+ # "metadata" = {
184
+ # "name" = "vcluster-kubeconfig"
185
+ # "namespace" = data.coder_workspace.me.name
186
+ # }
187
+ # "apiVersion" = "v1"
188
+ # "type" = "addons.cluster.x-k8s.io/resource-set"
189
+ # "data" = {
190
+ # "kubeconfig.yaml" = base64encode(data.kubernetes_secret.vcluster-kubeconfig.data.value)
191
+ # }
192
+ # }
189
193
190
- depends_on = [
191
- kubernetes_manifest . cluster ,
192
- kubernetes_manifest . vcluster ,
193
- kubernetes_manifest . clusterresourceset_capi_init ,
194
- data . kubernetes_secret . vcluster-kubeconfig
195
- ]
194
+ # depends_on = [
195
+ # kubernetes_manifest.cluster,
196
+ # kubernetes_manifest.vcluster,
197
+ # kubernetes_manifest.clusterresourceset_capi_init,
198
+ # data.kubernetes_secret.vcluster-kubeconfig
199
+ # ]
196
200
197
- wait {
198
- fields = {
199
- " data[\"kubeconfig.yaml\"]" = " *"
200
- }
201
- }
201
+ # wait {
202
+ # fields = {
203
+ # "data[\"kubeconfig.yaml\"]" = "*"
204
+ # }
205
+ # }
202
206
203
- timeouts {
204
- create = " 1m"
205
- }
206
- }
207
+ # timeouts {
208
+ # create = "1m"
209
+ # }
210
+ # }
207
211
208
212
resource "kubernetes_manifest" "clusterresourceset_capi_init" {
209
213
manifest = {
@@ -224,10 +228,10 @@ resource "kubernetes_manifest" "clusterresourceset_capi_init" {
224
228
" kind" = " ConfigMap"
225
229
" name" = " capi-init"
226
230
},
227
- {
228
- " kind" = " Secret"
229
- " name" = " vcluster-kubeconfig"
230
- },
231
+ # {
232
+ # "kind" = "Secret"
233
+ # "name" = "vcluster-kubeconfig"
234
+ # },
231
235
]
232
236
" strategy" = " ApplyOnce"
233
237
}
@@ -252,48 +256,32 @@ resource "kubernetes_manifest" "clusterresourceset_capi_init" {
252
256
# Need to find a way for it to wait before running, so that the secret exists
253
257
254
258
# We'll need to use the kubeconfig from above to provision the coder/pair environment
255
- resource "kubernetes_manifest" "ingress_capi_kubeapi " {
259
+ resource "kubernetes_manifest" "ingress_vcluster " {
256
260
manifest = {
257
- " apiVersion" = " networking.k8s .io/v1"
258
- " kind" = " Ingress "
261
+ " apiVersion" = " projectcontour .io/v1"
262
+ " kind" = " HTTPProxy "
259
263
" metadata" = {
264
+ " name" = " ${ data . coder_workspace . me . name } -apiserver"
265
+ " namespace" = data.coder_workspace.me.name
260
266
" annotations" = {
261
- " nginx.ingress.kubernetes.io/backend-protocol" = " HTTPS"
262
- " nginx.ingress.kubernetes.io/ssl-redirect" = " true"
267
+ " projectcontour.io/ingress.class" = " contour-external"
263
268
}
264
- " name" = " kubeapi"
265
- " namespace" = data.coder_workspace.me.name
266
269
}
267
270
" spec" = {
268
- " ingressClassName" = " contour-external"
269
- " rules" = [
270
- {
271
- " host" = " ${ data . coder_workspace . me . name } .${ var . base_domain } "
272
- " http" = {
273
- " paths" = [
274
- {
275
- " backend" = {
276
- " service" = {
277
- " name" = " vcluster1"
278
- " port" = {
279
- " number" = 443
280
- }
281
- }
282
- }
283
- " path" = " /"
284
- " pathType" = " ImplementationSpecific"
285
- },
286
- ]
287
- }
288
- },
289
- ]
290
- " tls" = [
291
- {
292
- " hosts" = [
293
- " ${ data . coder_workspace . me . name } .${ var . base_domain } "
294
- ]
295
- },
296
- ]
271
+ " tcpproxy" = {
272
+ " services" = [
273
+ {
274
+ " name" = " ${ data . coder_workspace . me . name } "
275
+ " port" = 443
276
+ },
277
+ ]
278
+ }
279
+ " virtualhost" = {
280
+ " fqdn" = " ${ data . coder_workspace . me . name } .${ var . base_domain } "
281
+ " tls" = {
282
+ " passthrough" = true
283
+ }
284
+ }
297
285
}
298
286
}
299
287
}
0 commit comments