Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit25c1e45

Browse files
authored
chore(helm): add unit tests for setting labels / annotations on serviceaccount / deployment / pod (#7156)
* chore(helm): add unit tests for setting sa annotations* chore(cli): also add test for labels / annotations / podLabels / podAnnotations
1 parent26cfc18 commit25c1e45

File tree

5 files changed

+367
-0
lines changed

5 files changed

+367
-0
lines changed

‎helm/tests/chart_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,14 @@ var TestCases = []TestCase{
3636
name:"tls",
3737
expectedError:"",
3838
},
39+
{
40+
name:"sa",
41+
expectedError:"",
42+
},
43+
{
44+
name:"labels_annotations",
45+
expectedError:"",
46+
},
3947
}
4048

4149
typeTestCasestruct {
Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
---
2+
# Source: coder/templates/coder.yaml
3+
apiVersion: v1
4+
kind: ServiceAccount
5+
metadata:
6+
name: "coder"
7+
annotations:
8+
{}
9+
labels:
10+
helm.sh/chart: coder-0.1.0
11+
app.kubernetes.io/name: coder
12+
app.kubernetes.io/instance: release-name
13+
app.kubernetes.io/part-of: coder
14+
app.kubernetes.io/version: "0.1.0"
15+
app.kubernetes.io/managed-by: Helm
16+
---
17+
# Source: coder/templates/rbac.yaml
18+
apiVersion: rbac.authorization.k8s.io/v1
19+
kind: Role
20+
metadata:
21+
name: coder-workspace-perms
22+
rules:
23+
- apiGroups: [""]
24+
resources: ["pods"]
25+
verbs: ["*"]
26+
- apiGroups: [""]
27+
resources: ["persistentvolumeclaims"]
28+
verbs: ["*"]
29+
---
30+
# Source: coder/templates/rbac.yaml
31+
apiVersion: rbac.authorization.k8s.io/v1
32+
kind: RoleBinding
33+
metadata:
34+
name: "coder"
35+
subjects:
36+
- kind: ServiceAccount
37+
name: "coder"
38+
roleRef:
39+
apiGroup: rbac.authorization.k8s.io
40+
kind: Role
41+
name: coder-workspace-perms
42+
---
43+
# Source: coder/templates/service.yaml
44+
apiVersion: v1
45+
kind: Service
46+
metadata:
47+
name: coder
48+
labels:
49+
helm.sh/chart: coder-0.1.0
50+
app.kubernetes.io/name: coder
51+
app.kubernetes.io/instance: release-name
52+
app.kubernetes.io/part-of: coder
53+
app.kubernetes.io/version: "0.1.0"
54+
app.kubernetes.io/managed-by: Helm
55+
annotations:
56+
{}
57+
spec:
58+
type: LoadBalancer
59+
sessionAffinity: ClientIP
60+
ports:
61+
- name: "http"
62+
port: 80
63+
targetPort: "http"
64+
protocol: TCP
65+
externalTrafficPolicy: "Cluster"
66+
selector:
67+
app.kubernetes.io/name: coder
68+
app.kubernetes.io/instance: release-name
69+
---
70+
# Source: coder/templates/coder.yaml
71+
apiVersion: apps/v1
72+
kind: Deployment
73+
metadata:
74+
name: coder
75+
labels:
76+
helm.sh/chart: coder-0.1.0
77+
app.kubernetes.io/name: coder
78+
app.kubernetes.io/instance: release-name
79+
app.kubernetes.io/part-of: coder
80+
app.kubernetes.io/version: "0.1.0"
81+
app.kubernetes.io/managed-by: Helm
82+
com.coder/label/baz: qux
83+
com.coder/label/foo: bar
84+
annotations:
85+
com.coder/annotation/baz: qux
86+
com.coder/annotation/foo: bar
87+
spec:
88+
replicas: 1
89+
selector:
90+
matchLabels:
91+
app.kubernetes.io/name: coder
92+
app.kubernetes.io/instance: release-name
93+
template:
94+
metadata:
95+
labels:
96+
helm.sh/chart: coder-0.1.0
97+
app.kubernetes.io/name: coder
98+
app.kubernetes.io/instance: release-name
99+
app.kubernetes.io/part-of: coder
100+
app.kubernetes.io/version: "0.1.0"
101+
app.kubernetes.io/managed-by: Helm
102+
com.coder/podLabel/baz: qux
103+
com.coder/podLabel/foo: bar
104+
annotations:
105+
com.coder/podAnnotation/baz: qux
106+
com.coder/podAnnotation/foo: bar
107+
spec:
108+
serviceAccountName: "coder"
109+
restartPolicy: Always
110+
terminationGracePeriodSeconds: 60
111+
affinity:
112+
podAntiAffinity:
113+
preferredDuringSchedulingIgnoredDuringExecution:
114+
- podAffinityTerm:
115+
labelSelector:
116+
matchExpressions:
117+
- key: app.kubernetes.io/instance
118+
operator: In
119+
values:
120+
- coder
121+
topologyKey: kubernetes.io/hostname
122+
weight: 1
123+
containers:
124+
- name: coder
125+
image: "ghcr.io/coder/coder:latest"
126+
imagePullPolicy: IfNotPresent
127+
resources:
128+
{}
129+
lifecycle:
130+
{}
131+
env:
132+
- name: CODER_HTTP_ADDRESS
133+
value: "0.0.0.0:8080"
134+
- name: CODER_PROMETHEUS_ADDRESS
135+
value: "0.0.0.0:2112"
136+
# Set the default access URL so a `helm apply` works by default.
137+
# See: https://github.com/coder/coder/issues/5024
138+
- name: CODER_ACCESS_URL
139+
value: "http://coder.default.svc.cluster.local"
140+
# Used for inter-pod communication with high-availability.
141+
- name: KUBE_POD_IP
142+
valueFrom:
143+
fieldRef:
144+
fieldPath: status.podIP
145+
- name: CODER_DERP_SERVER_RELAY_URL
146+
value: "http://$(KUBE_POD_IP):8080"
147+
148+
ports:
149+
- name: "http"
150+
containerPort: 8080
151+
protocol: TCP
152+
securityContext:
153+
allowPrivilegeEscalation: false
154+
readOnlyRootFilesystem: null
155+
runAsGroup: 1000
156+
runAsNonRoot: true
157+
runAsUser: 1000
158+
seccompProfile:
159+
type: RuntimeDefault
160+
readinessProbe:
161+
httpGet:
162+
path: /api/v2/buildinfo
163+
port: "http"
164+
scheme: "HTTP"
165+
livenessProbe:
166+
httpGet:
167+
path: /api/v2/buildinfo
168+
port: "http"
169+
scheme: "HTTP"
170+
volumeMounts: []
171+
volumes: []
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
coder:
2+
image:
3+
tag:latest
4+
annotations:
5+
com.coder/annotation/foo:bar
6+
com.coder/annotation/baz:qux
7+
labels:
8+
com.coder/label/foo:bar
9+
com.coder/label/baz:qux
10+
podAnnotations:
11+
com.coder/podAnnotation/foo:bar
12+
com.coder/podAnnotation/baz:qux
13+
podLabels:
14+
com.coder/podLabel/foo:bar
15+
com.coder/podLabel/baz:qux

‎helm/tests/testdata/sa.golden

Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
---
2+
# Source: coder/templates/coder.yaml
3+
apiVersion: v1
4+
kind: ServiceAccount
5+
metadata:
6+
name: "coder-service-account"
7+
annotations:
8+
eks.amazonaws.com/role-arn: arn:aws:iam::123456789012:role/coder-service-account
9+
labels:
10+
helm.sh/chart: coder-0.1.0
11+
app.kubernetes.io/name: coder
12+
app.kubernetes.io/instance: release-name
13+
app.kubernetes.io/part-of: coder
14+
app.kubernetes.io/version: "0.1.0"
15+
app.kubernetes.io/managed-by: Helm
16+
---
17+
# Source: coder/templates/rbac.yaml
18+
apiVersion: rbac.authorization.k8s.io/v1
19+
kind: Role
20+
metadata:
21+
name: coder-workspace-perms
22+
rules:
23+
- apiGroups: [""]
24+
resources: ["pods"]
25+
verbs: ["*"]
26+
- apiGroups: [""]
27+
resources: ["persistentvolumeclaims"]
28+
verbs: ["*"]
29+
---
30+
# Source: coder/templates/rbac.yaml
31+
apiVersion: rbac.authorization.k8s.io/v1
32+
kind: RoleBinding
33+
metadata:
34+
name: "coder-service-account"
35+
subjects:
36+
- kind: ServiceAccount
37+
name: "coder-service-account"
38+
roleRef:
39+
apiGroup: rbac.authorization.k8s.io
40+
kind: Role
41+
name: coder-workspace-perms
42+
---
43+
# Source: coder/templates/service.yaml
44+
apiVersion: v1
45+
kind: Service
46+
metadata:
47+
name: coder
48+
labels:
49+
helm.sh/chart: coder-0.1.0
50+
app.kubernetes.io/name: coder
51+
app.kubernetes.io/instance: release-name
52+
app.kubernetes.io/part-of: coder
53+
app.kubernetes.io/version: "0.1.0"
54+
app.kubernetes.io/managed-by: Helm
55+
annotations:
56+
{}
57+
spec:
58+
type: LoadBalancer
59+
sessionAffinity: ClientIP
60+
ports:
61+
- name: "http"
62+
port: 80
63+
targetPort: "http"
64+
protocol: TCP
65+
externalTrafficPolicy: "Cluster"
66+
selector:
67+
app.kubernetes.io/name: coder
68+
app.kubernetes.io/instance: release-name
69+
---
70+
# Source: coder/templates/coder.yaml
71+
apiVersion: apps/v1
72+
kind: Deployment
73+
metadata:
74+
name: coder
75+
labels:
76+
helm.sh/chart: coder-0.1.0
77+
app.kubernetes.io/name: coder
78+
app.kubernetes.io/instance: release-name
79+
app.kubernetes.io/part-of: coder
80+
app.kubernetes.io/version: "0.1.0"
81+
app.kubernetes.io/managed-by: Helm
82+
annotations:
83+
{}
84+
spec:
85+
replicas: 1
86+
selector:
87+
matchLabels:
88+
app.kubernetes.io/name: coder
89+
app.kubernetes.io/instance: release-name
90+
template:
91+
metadata:
92+
labels:
93+
helm.sh/chart: coder-0.1.0
94+
app.kubernetes.io/name: coder
95+
app.kubernetes.io/instance: release-name
96+
app.kubernetes.io/part-of: coder
97+
app.kubernetes.io/version: "0.1.0"
98+
app.kubernetes.io/managed-by: Helm
99+
annotations:
100+
{}
101+
spec:
102+
serviceAccountName: "coder-service-account"
103+
restartPolicy: Always
104+
terminationGracePeriodSeconds: 60
105+
affinity:
106+
podAntiAffinity:
107+
preferredDuringSchedulingIgnoredDuringExecution:
108+
- podAffinityTerm:
109+
labelSelector:
110+
matchExpressions:
111+
- key: app.kubernetes.io/instance
112+
operator: In
113+
values:
114+
- coder
115+
topologyKey: kubernetes.io/hostname
116+
weight: 1
117+
containers:
118+
- name: coder
119+
image: "ghcr.io/coder/coder:latest"
120+
imagePullPolicy: IfNotPresent
121+
resources:
122+
{}
123+
lifecycle:
124+
{}
125+
env:
126+
- name: CODER_HTTP_ADDRESS
127+
value: "0.0.0.0:8080"
128+
- name: CODER_PROMETHEUS_ADDRESS
129+
value: "0.0.0.0:2112"
130+
# Set the default access URL so a `helm apply` works by default.
131+
# See: https://github.com/coder/coder/issues/5024
132+
- name: CODER_ACCESS_URL
133+
value: "http://coder.default.svc.cluster.local"
134+
# Used for inter-pod communication with high-availability.
135+
- name: KUBE_POD_IP
136+
valueFrom:
137+
fieldRef:
138+
fieldPath: status.podIP
139+
- name: CODER_DERP_SERVER_RELAY_URL
140+
value: "http://$(KUBE_POD_IP):8080"
141+
142+
ports:
143+
- name: "http"
144+
containerPort: 8080
145+
protocol: TCP
146+
securityContext:
147+
allowPrivilegeEscalation: false
148+
readOnlyRootFilesystem: null
149+
runAsGroup: 1000
150+
runAsNonRoot: true
151+
runAsUser: 1000
152+
seccompProfile:
153+
type: RuntimeDefault
154+
readinessProbe:
155+
httpGet:
156+
path: /api/v2/buildinfo
157+
port: "http"
158+
scheme: "HTTP"
159+
livenessProbe:
160+
httpGet:
161+
path: /api/v2/buildinfo
162+
port: "http"
163+
scheme: "HTTP"
164+
volumeMounts: []
165+
volumes: []

‎helm/tests/testdata/sa.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
coder:
2+
image:
3+
tag:latest
4+
serviceAccount:
5+
name:coder-service-account
6+
annotations:
7+
eks.amazonaws.com/role-arn:arn:aws:iam::123456789012:role/coder-service-account
8+
workspacePerms:true

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp