Description
Describe the bug
When using zoneAwareReplication
with different storageClass
values per zone, the storageClassName
in volumeClaimTemplates
for ingester
StatefulSets is not rendered correctly. Instead, it falls back to the global or empty value, ignoring the zone-specific storageClass
.
To Reproduce
Use the following values.yaml configuration:
ingester:
persistence:
enabled: true
size: 12Gi
zoneAwareReplication:
enabled: true
topologyKey: topology.kubernetes.io/zone
zones:
- name: ru-2a
nodeSelector:
topology.kubernetes.io/zone: ru-2a
storageClass: fast.ru-2a
- name: ru-2b
nodeSelector:
topology.kubernetes.io/zone: ru-2b
storageClass: fast.ru-2b
- name: ru-2c
nodeSelector:
topology.kubernetes.io/zone: ru-2c
storageClass: fast.ru-2c
After installing the Helm chart, inspect the StatefulSets for the ingesters. The storageClassName
in volumeClaimTemplates
does not reflect the zone-specific value (fast.ru-2a
, etc.).
Expected behavior
Each StatefulSet corresponding to a zone should use its respective storageClass
as defined under zones[].storageClass
.
Actual behavior
All StatefulSets either use the global storageClass
, a default value, or omit storageClassName
entirely.
Environment:
- Tempo chart version:
1.41.1
Additional Context
The tempo-distributed/templates/ingester/statefulset-ingester.yaml template uses a $storageClass, which causes it to ignore per-zone overrides from zoneAwareReplication.zones[].storageClass.
Proposed fix
Use $rolloutZone.storageClass inside volumeClaimTemplates when rendering zone-specific StatefulSets.