Skip to content

Commit 1be24dc

Browse files
authored
feat(helm/provisioner): add extraTemplates (#10256)
Adds support for extraTemplates to the coder-provisioner chart to bring it in line with the coder chart.
1 parent 2029543 commit 1be24dc

File tree

8 files changed

+391
-0
lines changed

8 files changed

+391
-0
lines changed

helm/coder/tests/chart_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,10 @@ var testCases = []testCase{
7676
name: "env_from",
7777
expectedError: "",
7878
},
79+
{
80+
name: "extra_templates",
81+
expectedError: "",
82+
},
7983
}
8084

8185
type testCase struct {
Lines changed: 199 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,199 @@
1+
---
2+
# Source: coder/templates/coder.yaml
3+
apiVersion: v1
4+
kind: ServiceAccount
5+
metadata:
6+
annotations: {}
7+
labels:
8+
app.kubernetes.io/instance: release-name
9+
app.kubernetes.io/managed-by: Helm
10+
app.kubernetes.io/name: coder
11+
app.kubernetes.io/part-of: coder
12+
app.kubernetes.io/version: 0.1.0
13+
helm.sh/chart: coder-0.1.0
14+
name: coder
15+
---
16+
# Source: coder/templates/extra-templates.yaml
17+
apiVersion: v1
18+
kind: ConfigMap
19+
metadata:
20+
name: some-config
21+
namespace: default
22+
data:
23+
key: some-value
24+
---
25+
# Source: coder/templates/rbac.yaml
26+
apiVersion: rbac.authorization.k8s.io/v1
27+
kind: Role
28+
metadata:
29+
name: coder-workspace-perms
30+
rules:
31+
- apiGroups: [""]
32+
resources: ["pods"]
33+
verbs:
34+
- create
35+
- delete
36+
- deletecollection
37+
- get
38+
- list
39+
- patch
40+
- update
41+
- watch
42+
- apiGroups: [""]
43+
resources: ["persistentvolumeclaims"]
44+
verbs:
45+
- create
46+
- delete
47+
- deletecollection
48+
- get
49+
- list
50+
- patch
51+
- update
52+
- watch
53+
- apiGroups:
54+
- apps
55+
resources:
56+
- deployments
57+
verbs:
58+
- create
59+
- delete
60+
- deletecollection
61+
- get
62+
- list
63+
- patch
64+
- update
65+
- watch
66+
---
67+
# Source: coder/templates/rbac.yaml
68+
apiVersion: rbac.authorization.k8s.io/v1
69+
kind: RoleBinding
70+
metadata:
71+
name: "coder"
72+
subjects:
73+
- kind: ServiceAccount
74+
name: "coder"
75+
roleRef:
76+
apiGroup: rbac.authorization.k8s.io
77+
kind: Role
78+
name: coder-workspace-perms
79+
---
80+
# Source: coder/templates/service.yaml
81+
apiVersion: v1
82+
kind: Service
83+
metadata:
84+
name: coder
85+
labels:
86+
helm.sh/chart: coder-0.1.0
87+
app.kubernetes.io/name: coder
88+
app.kubernetes.io/instance: release-name
89+
app.kubernetes.io/part-of: coder
90+
app.kubernetes.io/version: "0.1.0"
91+
app.kubernetes.io/managed-by: Helm
92+
annotations:
93+
{}
94+
spec:
95+
type: LoadBalancer
96+
sessionAffinity: None
97+
ports:
98+
- name: "http"
99+
port: 80
100+
targetPort: "http"
101+
protocol: TCP
102+
103+
externalTrafficPolicy: "Cluster"
104+
selector:
105+
app.kubernetes.io/name: coder
106+
app.kubernetes.io/instance: release-name
107+
---
108+
# Source: coder/templates/coder.yaml
109+
apiVersion: apps/v1
110+
kind: Deployment
111+
metadata:
112+
annotations: {}
113+
labels:
114+
app.kubernetes.io/instance: release-name
115+
app.kubernetes.io/managed-by: Helm
116+
app.kubernetes.io/name: coder
117+
app.kubernetes.io/part-of: coder
118+
app.kubernetes.io/version: 0.1.0
119+
helm.sh/chart: coder-0.1.0
120+
name: coder
121+
spec:
122+
replicas: 1
123+
selector:
124+
matchLabels:
125+
app.kubernetes.io/instance: release-name
126+
app.kubernetes.io/name: coder
127+
template:
128+
metadata:
129+
annotations: {}
130+
labels:
131+
app.kubernetes.io/instance: release-name
132+
app.kubernetes.io/managed-by: Helm
133+
app.kubernetes.io/name: coder
134+
app.kubernetes.io/part-of: coder
135+
app.kubernetes.io/version: 0.1.0
136+
helm.sh/chart: coder-0.1.0
137+
spec:
138+
affinity:
139+
podAntiAffinity:
140+
preferredDuringSchedulingIgnoredDuringExecution:
141+
- podAffinityTerm:
142+
labelSelector:
143+
matchExpressions:
144+
- key: app.kubernetes.io/instance
145+
operator: In
146+
values:
147+
- coder
148+
topologyKey: kubernetes.io/hostname
149+
weight: 1
150+
containers:
151+
- args:
152+
- server
153+
command:
154+
- /opt/coder
155+
env:
156+
- name: CODER_HTTP_ADDRESS
157+
value: 0.0.0.0:8080
158+
- name: CODER_PROMETHEUS_ADDRESS
159+
value: 0.0.0.0:2112
160+
- name: CODER_ACCESS_URL
161+
value: http://coder.default.svc.cluster.local
162+
- name: KUBE_POD_IP
163+
valueFrom:
164+
fieldRef:
165+
fieldPath: status.podIP
166+
- name: CODER_DERP_SERVER_RELAY_URL
167+
value: http://$(KUBE_POD_IP):8080
168+
image: ghcr.io/coder/coder:latest
169+
imagePullPolicy: IfNotPresent
170+
lifecycle: {}
171+
livenessProbe:
172+
httpGet:
173+
path: /healthz
174+
port: http
175+
scheme: HTTP
176+
name: coder
177+
ports:
178+
- containerPort: 8080
179+
name: http
180+
protocol: TCP
181+
readinessProbe:
182+
httpGet:
183+
path: /healthz
184+
port: http
185+
scheme: HTTP
186+
resources: {}
187+
securityContext:
188+
allowPrivilegeEscalation: false
189+
readOnlyRootFilesystem: null
190+
runAsGroup: 1000
191+
runAsNonRoot: true
192+
runAsUser: 1000
193+
seccompProfile:
194+
type: RuntimeDefault
195+
volumeMounts: []
196+
restartPolicy: Always
197+
serviceAccountName: coder
198+
terminationGracePeriodSeconds: 60
199+
volumes: []
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
coder:
2+
image:
3+
tag: latest
4+
extraTemplates:
5+
- |
6+
apiVersion: v1
7+
kind: ConfigMap
8+
metadata:
9+
name: some-config
10+
namespace: {{ .Release.Namespace }}
11+
data:
12+
key: some-value
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{{- range .Values.extraTemplates }}
2+
---
3+
{{ include "coder.renderTemplate" (dict "value" . "context" $) }}
4+
{{- end }}

helm/provisioner/tests/chart_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@ var testCases = []testCase{
5252
name: "provisionerd_psk",
5353
expectedError: "",
5454
},
55+
{
56+
name: "extra_templates",
57+
expectedError: "",
58+
},
5559
}
5660

5761
type testCase struct {
Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
---
2+
# Source: coder-provisioner/templates/coder.yaml
3+
apiVersion: v1
4+
kind: ServiceAccount
5+
metadata:
6+
annotations: {}
7+
labels:
8+
app.kubernetes.io/instance: release-name
9+
app.kubernetes.io/managed-by: Helm
10+
app.kubernetes.io/name: coder-provisioner
11+
app.kubernetes.io/part-of: coder-provisioner
12+
app.kubernetes.io/version: 0.1.0
13+
helm.sh/chart: coder-provisioner-0.1.0
14+
name: coder-provisioner
15+
---
16+
# Source: coder-provisioner/templates/extra-templates.yaml
17+
apiVersion: v1
18+
kind: ConfigMap
19+
metadata:
20+
name: some-config
21+
namespace: default
22+
data:
23+
key: some-value
24+
---
25+
# Source: coder-provisioner/templates/rbac.yaml
26+
apiVersion: rbac.authorization.k8s.io/v1
27+
kind: Role
28+
metadata:
29+
name: coder-provisioner-workspace-perms
30+
rules:
31+
- apiGroups: [""]
32+
resources: ["pods"]
33+
verbs:
34+
- create
35+
- delete
36+
- deletecollection
37+
- get
38+
- list
39+
- patch
40+
- update
41+
- watch
42+
- apiGroups: [""]
43+
resources: ["persistentvolumeclaims"]
44+
verbs:
45+
- create
46+
- delete
47+
- deletecollection
48+
- get
49+
- list
50+
- patch
51+
- update
52+
- watch
53+
- apiGroups:
54+
- apps
55+
resources:
56+
- deployments
57+
verbs:
58+
- create
59+
- delete
60+
- deletecollection
61+
- get
62+
- list
63+
- patch
64+
- update
65+
- watch
66+
---
67+
# Source: coder-provisioner/templates/rbac.yaml
68+
apiVersion: rbac.authorization.k8s.io/v1
69+
kind: RoleBinding
70+
metadata:
71+
name: "coder-provisioner"
72+
subjects:
73+
- kind: ServiceAccount
74+
name: "coder-provisioner"
75+
roleRef:
76+
apiGroup: rbac.authorization.k8s.io
77+
kind: Role
78+
name: coder-provisioner-workspace-perms
79+
---
80+
# Source: coder-provisioner/templates/coder.yaml
81+
apiVersion: apps/v1
82+
kind: Deployment
83+
metadata:
84+
annotations: {}
85+
labels:
86+
app.kubernetes.io/instance: release-name
87+
app.kubernetes.io/managed-by: Helm
88+
app.kubernetes.io/name: coder-provisioner
89+
app.kubernetes.io/part-of: coder-provisioner
90+
app.kubernetes.io/version: 0.1.0
91+
helm.sh/chart: coder-provisioner-0.1.0
92+
name: coder-provisioner
93+
spec:
94+
replicas: 1
95+
selector:
96+
matchLabels:
97+
app.kubernetes.io/instance: release-name
98+
app.kubernetes.io/name: coder-provisioner
99+
template:
100+
metadata:
101+
annotations: {}
102+
labels:
103+
app.kubernetes.io/instance: release-name
104+
app.kubernetes.io/managed-by: Helm
105+
app.kubernetes.io/name: coder-provisioner
106+
app.kubernetes.io/part-of: coder-provisioner
107+
app.kubernetes.io/version: 0.1.0
108+
helm.sh/chart: coder-provisioner-0.1.0
109+
spec:
110+
containers:
111+
- args:
112+
- provisionerd
113+
- start
114+
command:
115+
- /opt/coder
116+
env:
117+
- name: CODER_PROMETHEUS_ADDRESS
118+
value: 0.0.0.0:2112
119+
- name: CODER_PROVISIONER_DAEMON_PSK
120+
valueFrom:
121+
secretKeyRef:
122+
key: psk
123+
name: coder-provisioner-psk
124+
- name: CODER_URL
125+
value: http://coder.default.svc.cluster.local
126+
image: ghcr.io/coder/coder:latest
127+
imagePullPolicy: IfNotPresent
128+
lifecycle: {}
129+
name: coder
130+
ports: null
131+
resources: {}
132+
securityContext:
133+
allowPrivilegeEscalation: false
134+
readOnlyRootFilesystem: null
135+
runAsGroup: 1000
136+
runAsNonRoot: true
137+
runAsUser: 1000
138+
seccompProfile:
139+
type: RuntimeDefault
140+
volumeMounts: []
141+
restartPolicy: Always
142+
serviceAccountName: coder-provisioner
143+
terminationGracePeriodSeconds: 600
144+
volumes: []
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
coder:
2+
image:
3+
tag: latest
4+
extraTemplates:
5+
- |
6+
apiVersion: v1
7+
kind: ConfigMap
8+
metadata:
9+
name: some-config
10+
namespace: {{ .Release.Namespace }}
11+
data:
12+
key: some-value

0 commit comments

Comments
 (0)