Problem
The chart calls the default two-replica posture HA-oriented, but topology spreading and affinity default empty, so both replicas may run on one node. The PDB uses minAvailable: 1 for every replica count above one; as the Deployment scales, increasingly large voluntary disruptions are allowed.
Evidence
deploy/helm/mecak8s/values.yaml: replicaCount: 2, empty topology spread and affinity.
deploy/helm/mecak8s/templates/pdb.yaml: fixed minAvailable: 1.
Proposed direction
Default to soft hostname spreading (ScheduleAnyway) or preferred pod anti-affinity so single-node clusters remain installable. Retain a documented production option for hard hostname/zone spreading. Make the PDB configurable and default scalable deployments to maxUnavailable: 1.
Acceptance criteria
- Multi-node clusters prefer placing replicas on separate nodes by default.
- Single-node development clusters remain schedulable.
- Voluntary disruption cannot remove more than one replica by default.
- Render tests cover one, two, and greater-than-two replicas.
Problem
The chart calls the default two-replica posture HA-oriented, but topology spreading and affinity default empty, so both replicas may run on one node. The PDB uses
minAvailable: 1for every replica count above one; as the Deployment scales, increasingly large voluntary disruptions are allowed.Evidence
deploy/helm/mecak8s/values.yaml:replicaCount: 2, empty topology spread and affinity.deploy/helm/mecak8s/templates/pdb.yaml: fixedminAvailable: 1.Proposed direction
Default to soft hostname spreading (
ScheduleAnyway) or preferred pod anti-affinity so single-node clusters remain installable. Retain a documented production option for hard hostname/zone spreading. Make the PDB configurable and default scalable deployments tomaxUnavailable: 1.Acceptance criteria