Skip to content

Commit 4a8db8a

Browse files
committed
Prevent datastore crypto key secret from being created when existing value provided
Fix unit test syntax
1 parent 70ee244 commit 4a8db8a

File tree

5 files changed

+170
-61
lines changed

5 files changed

+170
-61
lines changed

templates/secrets_datastore_crypto_key.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
{{- $deprecated_crypto_key := (default (dict) (default (dict) .Values.secrets).st2).datastore_crypto_key }}
33
{{- if $deprecated_crypto_key }}
44
{{- fail "Please update your values! The datastore_crypto_key value moved from secrets.st2.* to st2.*" }}
5-
{{- else if ne "disable" (default "" .Values.st2.datastore_crypto_key) }}
5+
{{- else if and (ne "disable" (default "" .Values.st2.datastore_crypto_key)) (not .Values.st2.existingDatastoreSecret) }}
66
---
77
apiVersion: v1
88
kind: Secret

tests/unit/labels_test.yaml

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -51,61 +51,61 @@ tests:
5151
# st2client, st2chatops
5252

5353
# each of these should be the same, but there is no test for that:
54-
# metdata.labels.[app.kubernetes.io/name]
55-
# spec.selector.matchLabels.[app.kubernetes.io/name]
56-
# spec.template.metadata.labels.[app.kubernetes.io/name]
54+
# metdata.labels["app.kubernetes.io/name"]
55+
# spec.selector.matchLabels["app.kubernetes.io/name"]
56+
# spec.template.metadata.labels["app.kubernetes.io/name"]
5757
# So, we use isNotNull instead.
5858
# see: https://github.com/quintush/helm-unittest/issues/122
5959
- isNotNull:
60-
path: metadata.labels.[app.kubernetes.io/name]
60+
path: metadata.labels["app.kubernetes.io/name"]
6161
- isNotNull:
62-
path: spec.selector.matchLabels.[app.kubernetes.io/name]
62+
path: spec.selector.matchLabels["app.kubernetes.io/name"]
6363
- isNotNull:
64-
path: spec.template.metadata.labels.[app.kubernetes.io/name]
64+
path: spec.template.metadata.labels["app.kubernetes.io/name"]
6565

6666
- equal: &metadata_labels_instance
67-
path: metadata.labels.[app.kubernetes.io/instance]
67+
path: metadata.labels["app.kubernetes.io/instance"]
6868
value: some-release-name
6969
- equal:
70-
path: spec.selector.matchLabels.[app.kubernetes.io/instance]
70+
path: spec.selector.matchLabels["app.kubernetes.io/instance"]
7171
value: some-release-name
7272
- equal: &spec_template_metadata_labels_instance
73-
path: spec.template.metadata.labels.[app.kubernetes.io/instance]
73+
path: spec.template.metadata.labels["app.kubernetes.io/instance"]
7474
value: some-release-name
7575

7676
- matchRegex: &regex_metadata_labels_component_backend_or_frontend
77-
path: metadata.labels.[app.kubernetes.io/component]
77+
path: metadata.labels["app.kubernetes.io/component"]
7878
pattern: ^(backend|frontend)$
7979
- matchRegex: &regex_spec_template_metadata_labels_component_backend_or_frontend
80-
path: spec.template.metadata.labels.[app.kubernetes.io/component]
80+
path: spec.template.metadata.labels["app.kubernetes.io/component"]
8181
pattern: ^(backend|frontend)$
8282

8383
- equal: &metadata_labels_part_of
84-
path: metadata.labels.[app.kubernetes.io/part-of]
84+
path: metadata.labels["app.kubernetes.io/part-of"]
8585
value: stackstorm
8686
- equal: &spec_template_metadata_labels_part_of
87-
path: spec.template.metadata.labels.[app.kubernetes.io/part-of]
87+
path: spec.template.metadata.labels["app.kubernetes.io/part-of"]
8888
value: stackstorm
8989

9090
- equal: &metadata_labels_app_version
91-
path: metadata.labels.[app.kubernetes.io/version]
91+
path: metadata.labels["app.kubernetes.io/version"]
9292
value: *appVersion
9393
- equal: &spec_template_metadata_labels_app_version
94-
path: spec.template.metadata.labels.[app.kubernetes.io/version]
94+
path: spec.template.metadata.labels["app.kubernetes.io/version"]
9595
value: *appVersion
9696

9797
- equal: &metadata_labels_chart
98-
path: metadata.labels.[helm.sh/chart]
98+
path: metadata.labels["helm.sh/chart"]
9999
value: stackstorm-ha-1.0.999
100100
- equal: &spec_template_metadata_labels_chart
101-
path: spec.template.metadata.labels.[helm.sh/chart]
101+
path: spec.template.metadata.labels["helm.sh/chart"]
102102
value: stackstorm-ha-1.0.999
103103

104104
- equal: &metadata_labels_managed_by
105-
path: metadata.labels.[app.kubernetes.io/managed-by]
105+
path: metadata.labels["app.kubernetes.io/managed-by"]
106106
value: Helm
107107
- equal: &spec_template_metadata_labels_managed_by
108-
path: spec.template.metadata.labels.[app.kubernetes.io/managed-by]
108+
path: spec.template.metadata.labels["app.kubernetes.io/managed-by"]
109109
value: Helm
110110

111111
- it: Jobs+Pods have requried labels
@@ -152,21 +152,21 @@ tests:
152152
# unlike deployments, jobs should not have selector.matchLabels
153153

154154
# like deployments each of these should be the same:
155-
# metdata.labels.[app.kubernetes.io/name]
156-
# spec.template.metadata.labels.[app.kubernetes.io/name]
155+
# metdata.labels["app.kubernetes.io/name"]
156+
# spec.template.metadata.labels["app.kubernetes.io/name"]
157157
- isNotNull:
158-
path: metadata.labels.[app.kubernetes.io/name]
158+
path: metadata.labels["app.kubernetes.io/name"]
159159
- isNotNull:
160-
path: spec.template.metadata.labels.[app.kubernetes.io/name]
160+
path: spec.template.metadata.labels["app.kubernetes.io/name"]
161161

162162
- equal: *metadata_labels_instance
163163
- equal: *spec_template_metadata_labels_instance
164164

165165
- matchRegex:
166-
path: metadata.labels.[app.kubernetes.io/component]
166+
path: metadata.labels["app.kubernetes.io/component"]
167167
pattern: ^(backend|tests)$
168168
- matchRegex:
169-
path: spec.template.metadata.labels.[app.kubernetes.io/component]
169+
path: spec.template.metadata.labels["app.kubernetes.io/component"]
170170
pattern: ^(backend|tests)$
171171

172172
- equal: *metadata_labels_part_of
@@ -193,7 +193,7 @@ tests:
193193
# st2auth, st2api, st2stream, st2web, st2chatops
194194

195195
- isNotNull:
196-
path: metadata.labels.[app.kubernetes.io/name]
196+
path: metadata.labels["app.kubernetes.io/name"]
197197
- equal: *metadata_labels_instance
198198
- matchRegex: *regex_metadata_labels_component_backend_or_frontend
199199
- equal: *metadata_labels_part_of
@@ -211,11 +211,11 @@ tests:
211211
- hasDocuments:
212212
count: 1
213213
- equal:
214-
path: metadata.labels.[app.kubernetes.io/name]
214+
path: metadata.labels["app.kubernetes.io/name"]
215215
value: stackstorm-ha
216216
- equal: *metadata_labels_instance
217217
- equal: &metadata_labels_component_backend
218-
path: metadata.labels.[app.kubernetes.io/component]
218+
path: metadata.labels["app.kubernetes.io/component"]
219219
value: backend
220220
- equal: *metadata_labels_part_of
221221
- equal: *metadata_labels_app_version
@@ -253,11 +253,11 @@ tests:
253253
- hasDocuments:
254254
count: 1
255255
- equal:
256-
path: metadata.labels.[app.kubernetes.io/name]
256+
path: metadata.labels["app.kubernetes.io/name"]
257257
value: ingress
258258
- equal: *metadata_labels_instance
259259
- equal:
260-
path: metadata.labels.[app.kubernetes.io/component]
260+
path: metadata.labels["app.kubernetes.io/component"]
261261
value: frontend
262262
- equal: *metadata_labels_part_of
263263
- equal: *metadata_labels_app_version
@@ -284,7 +284,7 @@ tests:
284284
- hasDocuments:
285285
count: 1
286286
- equal: &metadata_labels_app_eq_st2
287-
path: metadata.labels.[app.kubernetes.io/name]
287+
path: metadata.labels["app.kubernetes.io/name"]
288288
value: st2
289289
- equal: *metadata_labels_instance
290290
- equal: *metadata_labels_component_backend
@@ -323,7 +323,7 @@ tests:
323323
- hasDocuments:
324324
count: 1
325325
- equal:
326-
path: metadata.labels.[app.kubernetes.io/name]
326+
path: metadata.labels["app.kubernetes.io/name"]
327327
value: st2chatops
328328
- equal: *metadata_labels_instance
329329
- equal: *metadata_labels_component_backend
@@ -347,11 +347,11 @@ tests:
347347
- hasDocuments:
348348
count: 1
349349
- equal:
350-
path: metadata.labels.[app.kubernetes.io/name]
350+
path: metadata.labels["app.kubernetes.io/name"]
351351
value: st2 # should this be st2web?
352352
- equal: *metadata_labels_instance
353353
- equal:
354-
path: metadata.labels.[app.kubernetes.io/component]
354+
path: metadata.labels["app.kubernetes.io/component"]
355355
value: backend # should this be frontend?
356356
- equal: *metadata_labels_part_of
357357
- equal: *metadata_labels_app_version

tests/unit/post_start_script_test.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ tests:
3232
- isAPIVersion:
3333
of: v1
3434
- isNotEmpty:
35-
path: data.[post-start.sh]
35+
path: data["post-start.sh"]
3636
- equal:
37-
path: data.[post-start.sh]
37+
path: data["post-start.sh"]
3838
value: |
3939
#!/bin/bash
4040
mkdir -p /home/yelnats/.ssh
@@ -85,9 +85,9 @@ tests:
8585
- isAPIVersion:
8686
of: v1
8787
- isNotEmpty:
88-
path: data.[post-start.sh]
88+
path: data["post-start.sh"]
8989
- matchRegex:
90-
path: data.[post-start.sh]
90+
path: data["post-start.sh"]
9191
# (?m) = multi-line mode: ^ and $ match begin/end line in addition to begin/end text
9292
# (?s) = let . match \n
9393
# .*? = any character zero or more times, prefer fewer
@@ -107,7 +107,7 @@ tests:
107107
# st2actionrunner and st2client do not have checksum annotations
108108
# (even though they probably should)
109109
- isNull: &assert_checksum
110-
path: spec.template.metadata.annotations.[checksum/post-start-script]
110+
path: spec.template.metadata.annotations["checksum/post-start-script"]
111111

112112
# only st2actionrunner and st2client have default postStart scripts
113113
- equal: &assert_lifecycle

tests/unit/secrets_test.yaml

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
suite: Secret files
33
templates:
44
# primary template files
5+
- secrets_datastore_crypto_key.yaml
56
- secrets_st2auth.yaml
67
- deployments.yaml
78
- jobs.yaml
@@ -113,3 +114,111 @@ tests:
113114
path: spec.template.spec.initContainers[1].envFrom[1].secretRef.name
114115
value: "hello-world"
115116
documentIndex: 1 # st2-key-load
117+
118+
- it: ST2 Datastore Crypto Key Secret include by default
119+
template: secrets_datastore_crypto_key.yaml
120+
set:
121+
st2: {}
122+
release:
123+
name: st2ha
124+
asserts:
125+
- hasDocuments:
126+
count: 1
127+
- isNotEmpty:
128+
path: data.datastore_crypto_key
129+
documentIndex: 0
130+
131+
- it: ST2 Datastore Crypto Key Secret set custom username and password
132+
template: secrets_datastore_crypto_key.yaml
133+
set:
134+
st2:
135+
datastore_crypto_key: >-
136+
{"hmacKey": {"hmacKeyString": "", "size": 256}, "size": 256, "aesKeyString": "", "mode": "CBC"}
137+
release:
138+
name: st2ha
139+
asserts:
140+
- hasDocuments:
141+
count: 1
142+
- equal:
143+
path: data.datastore_crypto_key
144+
value: "eyJobWFjS2V5IjogeyJobWFjS2V5U3RyaW5nIjogIiIsICJzaXplIjogMjU2fSwgInNpemUiOiAyNTYsICJhZXNLZXlTdHJpbmciOiAiIiwgIm1vZGUiOiAiQ0JDIn0=" # Base64 encoded value
145+
146+
- it: ST2 Datastore Crypto Key Secret disable generation
147+
template: secrets_datastore_crypto_key.yaml
148+
set:
149+
st2:
150+
existingDatastoreSecret: "hello-world"
151+
release:
152+
name: st2ha
153+
asserts:
154+
- hasDocuments:
155+
count: 0
156+
157+
- it: ST2 Datastore Crypto Key Secret custom secret Name
158+
template: deployments.yaml
159+
set:
160+
st2:
161+
existingDatastoreSecret: "hello-world"
162+
st2chatops:
163+
enabled: true
164+
release:
165+
name: st2ha
166+
asserts:
167+
- hasDocuments:
168+
count: 14
169+
- equal:
170+
path: metadata.name
171+
value: st2ha-st2api
172+
documentIndex: &deployment_st2api_doc 1
173+
- equal:
174+
path: spec.template.spec.volumes[0].secret.secretName
175+
value: "hello-world"
176+
documentIndex: *deployment_st2api_doc
177+
- equal:
178+
path: metadata.name
179+
value: st2ha-st2rulesengine
180+
documentIndex: &deployment_st2rulesengine_doc 4
181+
- equal:
182+
path: spec.template.spec.volumes[1].secret.secretName
183+
value: "hello-world"
184+
documentIndex: *deployment_st2rulesengine_doc
185+
- equal:
186+
path: metadata.name
187+
value: st2ha-st2workflowengine
188+
documentIndex: &deployment_st2workflowengine_doc 6
189+
- equal:
190+
path: spec.template.spec.volumes[1].secret.secretName
191+
value: "hello-world"
192+
documentIndex: *deployment_st2workflowengine_doc
193+
- equal:
194+
path: metadata.name
195+
value: st2ha-st2scheduler
196+
documentIndex: &deployment_st2scheduler_doc 7
197+
- equal:
198+
path: spec.template.spec.volumes[0].secret.secretName
199+
value: "hello-world"
200+
documentIndex: *deployment_st2scheduler_doc
201+
- equal:
202+
path: metadata.name
203+
value: st2ha-st2sensorcontainer
204+
documentIndex: &deployment_st2sensorcontainer_doc 9
205+
- equal:
206+
path: spec.template.spec.volumes[0].secret.secretName
207+
value: "hello-world"
208+
documentIndex: *deployment_st2sensorcontainer_doc
209+
- equal:
210+
path: metadata.name
211+
value: st2ha-st2actionrunner
212+
documentIndex: &deployment_st2actionrunner_doc 10
213+
- equal:
214+
path: spec.template.spec.volumes[0].secret.secretName
215+
value: "hello-world"
216+
documentIndex: *deployment_st2actionrunner_doc
217+
- equal:
218+
path: metadata.name
219+
value: st2ha-st2client
220+
documentIndex: &deployment_st2client_doc 12
221+
- equal:
222+
path: spec.template.spec.volumes[0].secret.secretName
223+
value: "hello-world"
224+
documentIndex: *deployment_st2client_doc

0 commit comments

Comments
 (0)