From e6419afeee00bbddbc60f9f87b9089d440919311 Mon Sep 17 00:00:00 2001 From: youngkermit8-coder <263626606+youngkermit8-coder@users.noreply.github.com> Date: Mon, 19 Oct 2026 15:15:56 +0800 Subject: [PATCH] fix(helm): preserve the requested database volume size --- .../helm_charts/templates/statefulset.yaml | 7 ---- tests/test_helm_storage.py | 34 +++++++++++++++++++ 2 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 tests/test_helm_storage.py diff --git a/k8s-cluster/ha-cluster/helm_charts/templates/statefulset.yaml b/k8s-cluster/ha-cluster/helm_charts/templates/statefulset.yaml index ffa96a4..de82c13 100644 --- a/k8s-cluster/ha-cluster/helm_charts/templates/statefulset.yaml +++ b/k8s-cluster/ha-cluster/helm_charts/templates/statefulset.yaml @@ -161,13 +161,6 @@ spec: resources: requests: storage: {{ .Values.pvc.storageSize }} - spec: - storageClassName: {{ .Values.pvc.storageClassName }} - accessModes: - - {{ .Values.pvc.accessModes }} - resources: - requests: - storage: {{ .Values.pvc.confStorageSize }} - metadata: labels: diff --git a/tests/test_helm_storage.py b/tests/test_helm_storage.py new file mode 100644 index 0000000..2c3050b --- /dev/null +++ b/tests/test_helm_storage.py @@ -0,0 +1,34 @@ +"""Render regression tests. Requires Helm 3 and PyYAML (pip install pyyaml).""" +import json +import os +from pathlib import Path +import subprocess +import unittest + +CHART = Path(__file__).resolve().parents[1] / 'k8s-cluster/ha-cluster/helm_charts' + +def render(overrides=None): + command = [os.environ.get('HELM', 'helm'), 'template', 'test', str(CHART)] + if overrides: + command += ['--values', '-'] + result = subprocess.run(command, input=json.dumps(overrides or {}), + text=True, encoding='utf-8', capture_output=True, check=True) + import yaml + return list(yaml.safe_load_all(result.stdout)) + +def statefulset(documents): + return next(doc for doc in documents if doc and doc['kind'] == 'StatefulSet') + +class StorageTest(unittest.TestCase): + def test_independent_claim_sizes(self): + for overrides, data_size, config_size in [ + ({}, '1Gi', '16Mi'), + ({'pvc': {'storageSize': '32Gi', 'confStorageSize': '64Mi'}}, '32Gi', '64Mi'), + ]: + with self.subTest(overrides=overrides): + claims = statefulset(render(overrides))['spec']['volumeClaimTemplates'] + sizes = {c['metadata']['name']: c['spec']['resources']['requests']['storage'] for c in claims} + self.assertEqual(sizes, {'pgdata': data_size, 'ivyhac-config': config_size}) + +if __name__ == '__main__': + unittest.main()