Files
Bryce Wilkinson f6728c1254 feat(helm): expose gateway scheduling fields and data volume config
The gateway pod template exposes nodeSelector, affinity and tolerations but
not priorityClassName or topologySpreadConstraints, and the StatefulSet
hardcodes the data volume at 1Gi with no StorageClass control. Operators who
need any of these have to fork the chart or mutate the rendered output
out-of-band.

Add four optional passthroughs:

- priorityClassName: the gateway is a control-plane component. When it shares
  nodes with the workloads it serves, the default priority gives it no
  advantage under node pressure, so a local capacity crunch can evict it and
  widen into a fleet-wide outage.
- topologySpreadConstraints: spread replicas across zones or nodes. Only
  affinity was available, which is a blunter tool for even spreading.
- persistence.size / persistence.storageClassName: volumeClaimTemplates is
  immutable, so a claim created at 1Gi cannot be grown through the chart
  later. Omitting storageClassName also leaves the claim Pending on clusters
  with no default StorageClass.

Both scheduling fields go in the shared gatewayPodTemplate, so they apply
identically to the statefulset and deployment workload shapes. persistence
applies to the statefulset only, which is where the volume exists.

All four render only when set and default to current behaviour: 1Gi, no
storageClassName, and neither scheduling field emitted. A default render is
byte-identical to before this change.

Signed-off-by: Bryce Wilkinson <22760097+bjw123@users.noreply.github.com>
2026-08-20 10:33:35 +00:00
..