Skip to content

Commit 281fabc

Browse files
committed
Update APIServer ingress and security
1 parent 012e180 commit 281fabc

File tree

1 file changed

+68
-80
lines changed

1 file changed

+68
-80
lines changed

examples/templates/vcluster/cluster.tf

+68-80
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,10 @@ resource "kubernetes_manifest" "vcluster" {
130130
"values" = <<-EOT
131131
service:
132132
type: NodePort
133+
securityContext:
134+
runAsUser: 12345
135+
runAsNonRoot: true
136+
privileged: false
133137
syncer:
134138
extraArgs:
135139
- --tls-san="${data.coder_workspace.me.name}.${var.base_domain}"
@@ -159,51 +163,51 @@ resource "kubernetes_manifest" "configmap_capi_init" {
159163
}
160164
}
161165

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+
# }
167171

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+
# }
174178

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+
# }
189193

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+
# ]
196200

197-
wait {
198-
fields = {
199-
"data[\"kubeconfig.yaml\"]" = "*"
200-
}
201-
}
201+
# wait {
202+
# fields = {
203+
# "data[\"kubeconfig.yaml\"]" = "*"
204+
# }
205+
# }
202206

203-
timeouts {
204-
create = "1m"
205-
}
206-
}
207+
# timeouts {
208+
# create = "1m"
209+
# }
210+
# }
207211

208212
resource "kubernetes_manifest" "clusterresourceset_capi_init" {
209213
manifest = {
@@ -224,10 +228,10 @@ resource "kubernetes_manifest" "clusterresourceset_capi_init" {
224228
"kind" = "ConfigMap"
225229
"name" = "capi-init"
226230
},
227-
{
228-
"kind" = "Secret"
229-
"name" = "vcluster-kubeconfig"
230-
},
231+
# {
232+
# "kind" = "Secret"
233+
# "name" = "vcluster-kubeconfig"
234+
# },
231235
]
232236
"strategy" = "ApplyOnce"
233237
}
@@ -252,48 +256,32 @@ resource "kubernetes_manifest" "clusterresourceset_capi_init" {
252256
# Need to find a way for it to wait before running, so that the secret exists
253257

254258
# 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" {
256260
manifest = {
257-
"apiVersion" = "networking.k8s.io/v1"
258-
"kind" = "Ingress"
261+
"apiVersion" = "projectcontour.io/v1"
262+
"kind" = "HTTPProxy"
259263
"metadata" = {
264+
"name" = "${data.coder_workspace.me.name}-apiserver"
265+
"namespace" = data.coder_workspace.me.name
260266
"annotations" = {
261-
"nginx.ingress.kubernetes.io/backend-protocol" = "HTTPS"
262-
"nginx.ingress.kubernetes.io/ssl-redirect" = "true"
267+
"projectcontour.io/ingress.class" = "contour-external"
263268
}
264-
"name" = "kubeapi"
265-
"namespace" = data.coder_workspace.me.name
266269
}
267270
"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+
}
297285
}
298286
}
299287
}

0 commit comments

Comments
 (0)