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,76 @@ spec:
1629 kube-ctf.downunderctf.com/service : challenge-manager
1730 spec :
1831 serviceAccountName : challenge-manager
32+ {{- if $redis.ca }}
33+ volumes :
34+ - name : custom-ca
35+ secret :
36+ secretName : challenge-manager-custom-ca
37+ {{- end }}
1938 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
39+ - name : challenge-manager
40+ image : {{ .Values.registries.infra }}/services/challenge-manager:latest
41+ {{- if $redis.ca }}
42+ volumeMounts :
43+ - name : custom-ca
44+ mountPath : /ssl/
45+ readOnly : true
46+ {{- end }}
47+ readinessProbe :
48+ httpGet :
49+ port : 3000
50+ path : /healthz
51+ initialDelaySeconds : 10
52+ periodSeconds : 10
53+ livenessProbe :
54+ httpGet :
55+ port : 3000
56+ path : /healthz
57+ initialDelaySeconds : 30
58+ periodSeconds : 10
59+ env :
60+ - name : KUBECTF_BASE_DOMAIN
61+ value : {{ .Values.domain.isolated }}
62+ - name : KUBECTF_API_DOMAIN
63+ value : instancer.{{ .Values.domain.management }}
64+ - name : KUBECTF_NAMESPACE
65+ value : {{ .Release.Name }}-challenges-isolated
66+ - name : KUBECTF_MAX_OWNER_DEPLOYMENTS
67+ value : " 4"
68+ - name : KUBECTF_REGISTRY_PREFIX
69+ value : {{ $deployment.registryPrefix }}
70+ - name : KUBECTF_AUTH_SECRET
71+ valueFrom :
72+ secretKeyRef :
73+ name : challenge-manager
74+ key : auth
75+ - name : KUBECTF_CONTAINER_SECRET
76+ valueFrom :
77+ secretKeyRef :
78+ name : challenge-manager
79+ key : container
80+ {{- if $deployment.redis.host }}
81+ {{- $redis := (index $deployment "redis") }}
82+ - name : REDIS_URL
83+ value : " redis{{ if $redis.ca }}s{{ end }}://{{ if $redis.auth }}:{{ $redis.auth }}@{{ end }}{{ $redis.host }}/{{ $redis.db }}"
84+ {{- if $redis.ca }}
85+ - name : NODE_EXTRA_CA_CERTS
86+ value : " /ssl/redis.pem"
87+ {{- end }}
88+ {{- end }}
89+
90+ {{- if $deployment.oidc.serverUrl }}
91+ - name : OIDC_SERVER_URL
92+ value : {{ $deployment.oidc.serverUrl }}
93+ - name : OIDC_OWNER_ID_FIELD
94+ value : {{ $deployment.oidc.ownerIdField }}
95+ - name : OIDC_CLIENT_ID
96+ value : {{ $deployment.oidc.clientId }}
97+ {{- end }}
98+ resources :
99+ {{ toYaml $deployment.quota | indent 12 }}
100+ ports :
101+ - containerPort : 3000
59102---
60103apiVersion : v1
61104kind : Service
@@ -71,6 +114,16 @@ spec:
71114 - port : 3000
72115---
73116apiVersion : traefik.io/v1alpha1
117+ kind : Middleware
118+ metadata :
119+ name : challenge-manager-strip-api-prefix
120+ namespace : {{ .Release.Name }}-management
121+ spec :
122+ stripPrefix :
123+ prefixes :
124+ - /api
125+ ---
126+ apiVersion : traefik.io/v1alpha1
74127kind : IngressRoute
75128metadata :
76129 name : challenge-manager
@@ -79,19 +132,19 @@ metadata:
79132 kube-ctf.downunderctf.com/service : challenge-manager
80133spec :
81134 entryPoints :
82- - web
83135 - websecure
84136 tls :
85137 secretName : {{ .Release.Name }}-cert-management
86138 routes :
87- - match : Host(`challenge-manager .{{ .Values.domain.management }}`)
139+ - match : Host(`instancer .{{ .Values.domain.management }}`) && PathPrefix(`/api/ `)
88140 kind : Rule
89141 priority : 10
90142 middlewares :
91- - name : hsts
143+ - name : hsts
144+ - name : challenge-manager-strip-api-prefix
92145 services :
93- - name : challenge-manager
94- port : 3000
146+ - name : challenge-manager
147+ port : 3000
95148---
96149apiVersion : v1
97150kind : ServiceAccount
@@ -118,6 +171,7 @@ rules:
118171 - secrets
119172 - networkpolicies
120173 - configmaps
174+ - tlschallenges
121175 verbs :
122176 - create
123177 - delete
0 commit comments