Skip to content

Commit bbdb766

Browse files
committed
fix(openbao): garbage-collect the data PVC on delete (#3058)
After deleting an OpenBAO app CR, the StatefulSet data PVC (data-<release>-0) was left orphaned in the tenant namespace, consuming storage permanently. StatefulSet-templated PVCs are never garbage-collected on StatefulSet deletion by default, and the chart set no persistentVolumeClaimRetentionPolicy. Pass a retention policy through the HelmRelease values. The vendored upstream chart renders it onto the StatefulSet from server.persistentVolumeClaimRetentionPolicy (not server.dataStorage.*): whenDeleted: Delete reclaims the data PVC on release deletion, while whenScaled: Retain keeps a member's data PVC on HA scale-down. Also add a 'test' Makefile target so the package's helm-unittest suite runs in CI (hack/helm-unit-tests.sh only runs packages that define a 'test' target). Signed-off-by: Алексей Артамонов <[email protected]>
1 parent 374cac1 commit bbdb766

3 files changed

Lines changed: 43 additions & 0 deletions

File tree

‎packages/apps/openbao/Makefile‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,6 @@ include ../../../hack/package.mk
33
generate:
44
cozyvalues-gen -m 'openbao' -v values.yaml -s values.schema.json -r README.md -g ../../../api/apps/v1alpha1/openbao/types.go
55
../../../hack/update-crd.sh
6+
7+
test:
8+
helm unittest .

‎packages/apps/openbao/templates/openbao.yaml‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,14 @@ spec:
2828
server:
2929
podManagementPolicy: Parallel
3030
resources: {{- include "cozy-lib.resources.defaultingSanitize" (list .Values.resourcesPreset .Values.resources $) | nindent 10 }}
31+
# Ensure the StatefulSet's data PVC is removed when the release is
32+
# deleted. Without this, the upstream chart leaves the PVC orphaned
33+
# (StatefulSet volumeClaimTemplates are never garbage-collected by
34+
# default). Rendered onto the StatefulSet by the upstream chart from
35+
# server.persistentVolumeClaimRetentionPolicy. See issue #3058.
36+
persistentVolumeClaimRetentionPolicy:
37+
whenDeleted: Delete
38+
whenScaled: Retain
3139
dataStorage:
3240
enabled: true
3341
size: {{ .Values.size }}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
suite: data PVC retention policy passthrough
2+
3+
# Guards the fix for issue #3058: the upstream OpenBAO StatefulSet renders
4+
# persistentVolumeClaimRetentionPolicy from server.persistentVolumeClaimRetentionPolicy.
5+
# The app wrapper must pass this value through the HelmRelease so the data PVC
6+
# is removed on release deletion instead of being orphaned.
7+
8+
templates:
9+
- templates/openbao.yaml
10+
11+
release:
12+
name: openbao-test
13+
namespace: tenant-test
14+
15+
tests:
16+
- it: "passes whenDeleted=Delete through the HelmRelease values"
17+
documentSelector:
18+
path: kind
19+
value: HelmRelease
20+
asserts:
21+
- equal:
22+
path: spec.values.openbao.server.persistentVolumeClaimRetentionPolicy.whenDeleted
23+
value: Delete
24+
25+
- it: "keeps whenScaled=Retain so scale-down does not destroy raft member data"
26+
documentSelector:
27+
path: kind
28+
value: HelmRelease
29+
asserts:
30+
- equal:
31+
path: spec.values.openbao.server.persistentVolumeClaimRetentionPolicy.whenScaled
32+
value: Retain

0 commit comments

Comments
 (0)