1+ {{- $deployment := (index .Values "challenge-manager") }}
2+ apiVersion : v1
3+ kind : Secret
4+ metadata :
5+ name : challenge-manager-custom-ca
6+ namespace : {{ .Release.Name }}-management
7+ type : Opaque
8+ data :
9+ CACHEDIR.TAG : " "
10+ {{- if $deployment.redis.ca }}
11+ redis.pem : {{ $deployment.redis.ca | b64enc | quote }}
12+ {{- end }}
13+ ---
114apiVersion : apps/v1
215kind : Deployment
316metadata :
@@ -6,7 +19,7 @@ metadata:
619 labels :
720 kube-ctf.downunderctf.com/service : challenge-manager
821spec :
9- replicas : {{ (index .Values "challenge-manager") .replicas }}
22+ replicas : {{ $deployment .replicas }}
1023 selector :
1124 matchLabels :
1225 kube-ctf.downunderctf.com/service : challenge-manager
@@ -16,46 +29,72 @@ spec:
1629 kube-ctf.downunderctf.com/service : challenge-manager
1730 spec :
1831 serviceAccountName : challenge-manager
32+ volumes :
33+ - name : custom-ca
34+ secret :
35+ secretName : challenge-manager-custom-ca
1936 containers :
20- - name : challenge-manager
21- image : {{ .Values.googleRegion }}-docker.pkg.dev/{{ .Values.googleProject }}/{{ .Values.googleRepositoryName }}/challenge-manager:latest
22- readinessProbe :
23- httpGet :
24- port : 3000
25- path : /healthz
26- initialDelaySeconds : 10
27- periodSeconds : 10
28- livenessProbe :
29- httpGet :
30- port : 3000
31- path : /healthz
32- initialDelaySeconds : 30
33- periodSeconds : 10
34- env :
35- - name : KUBECTF_BASE_DOMAIN
36- value : {{ .Values.domain.challenges }}
37- - name : KUBECTF_API_DOMAIN
38- value : challenge-manager.{{ .Values.domain.management }}
39- - name : KUBECTF_NAMESPACE
40- value : {{ .Release.Name }}-challenges-isolated
41- - name : KUBECTF_MAX_OWNER_DEPLOYMENTS
42- value : " 4"
43- - name : KUBECTF_REGISTRY_PREFIX
44- value : {{ (index .Values "challenge-manager").registryPrefix }}
45- - name : KUBECTF_AUTH_SECRET
46- valueFrom :
47- secretKeyRef :
48- name : challenge-manager
49- key : auth
50- - name : KUBECTF_CONTAINER_SECRET
51- valueFrom :
52- secretKeyRef :
53- name : challenge-manager
54- key : container
55- resources :
56- {{ toYaml (index .Values "challenge-manager").quota | indent 10 }}
57- ports :
58- - containerPort : 3000
37+ - name : challenge-manager
38+ image : {{ .Values.registries.infra }}/services/challenge-manager:latest
39+ volumeMounts :
40+ - name : custom-ca
41+ mountPath : /ssl/
42+ readOnly : true
43+ readinessProbe :
44+ httpGet :
45+ port : 3000
46+ path : /healthz
47+ initialDelaySeconds : 10
48+ periodSeconds : 10
49+ livenessProbe :
50+ httpGet :
51+ port : 3000
52+ path : /healthz
53+ initialDelaySeconds : 30
54+ periodSeconds : 10
55+ env :
56+ - name : KUBECTF_BASE_DOMAIN
57+ value : {{ .Values.domain.isolated }}
58+ - name : KUBECTF_API_DOMAIN
59+ value : instancer.{{ .Values.domain.management }}
60+ - name : KUBECTF_NAMESPACE
61+ value : {{ .Release.Name }}-challenges-isolated
62+ - name : KUBECTF_MAX_OWNER_DEPLOYMENTS
63+ value : " 4"
64+ - name : KUBECTF_REGISTRY_PREFIX
65+ value : {{ $deployment.registryPrefix }}
66+ - name : KUBECTF_AUTH_SECRET
67+ valueFrom :
68+ secretKeyRef :
69+ name : challenge-manager
70+ key : auth
71+ - name : KUBECTF_CONTAINER_SECRET
72+ valueFrom :
73+ secretKeyRef :
74+ name : challenge-manager
75+ key : container
76+ {{- if $deployment.redis.host }}
77+ {{- $redis := (index $deployment "redis") }}
78+ - name : REDIS_URL
79+ value : " redis{{ if $redis.ca }}s{{ end }}://{{ if $redis.auth }}:{{ $redis.auth }}@{{ end }}{{ $redis.host }}/{{ $redis.db }}"
80+ {{- if $redis.ca }}
81+ - name : NODE_EXTRA_CA_CERTS
82+ value : " /ssl/redis.pem"
83+ {{- end }}
84+ {{- end }}
85+
86+ {{- if $deployment.oidc.serverUrl }}
87+ - name : OIDC_SERVER_URL
88+ value : {{ $deployment.oidc.serverUrl }}
89+ - name : OIDC_OWNER_ID_FIELD
90+ value : {{ $deployment.oidc.ownerIdField }}
91+ - name : OIDC_CLIENT_ID
92+ value : {{ $deployment.oidc.clientId }}
93+ {{- end }}
94+ resources :
95+ {{ toYaml $deployment.quota | indent 12 }}
96+ ports :
97+ - containerPort : 3000
5998---
6099apiVersion : v1
61100kind : Service
@@ -71,6 +110,16 @@ spec:
71110 - port : 3000
72111---
73112apiVersion : traefik.io/v1alpha1
113+ kind : Middleware
114+ metadata :
115+ name : challenge-manager-strip-api-prefix
116+ namespace : {{ .Release.Name }}-management
117+ spec :
118+ stripPrefix :
119+ prefixes :
120+ - /api
121+ ---
122+ apiVersion : traefik.io/v1alpha1
74123kind : IngressRoute
75124metadata :
76125 name : challenge-manager
@@ -79,19 +128,19 @@ metadata:
79128 kube-ctf.downunderctf.com/service : challenge-manager
80129spec :
81130 entryPoints :
82- - web
83131 - websecure
84132 tls :
85133 secretName : {{ .Release.Name }}-cert-management
86134 routes :
87- - match : Host(`challenge-manager .{{ .Values.domain.management }}`)
135+ - match : Host(`instancer .{{ .Values.domain.management }}`) && PathPrefix(`/api/ `)
88136 kind : Rule
89137 priority : 10
90138 middlewares :
91- - name : hsts
139+ - name : hsts
140+ - name : challenge-manager-strip-api-prefix
92141 services :
93- - name : challenge-manager
94- port : 3000
142+ - name : challenge-manager
143+ port : 3000
95144---
96145apiVersion : v1
97146kind : ServiceAccount
@@ -118,6 +167,7 @@ rules:
118167 - secrets
119168 - networkpolicies
120169 - configmaps
170+ - tlschallenges
121171 verbs :
122172 - create
123173 - delete
0 commit comments