This release includes 2 breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Affected surfaces
ReleasePort's take
Moderate signalKubernetes v3.1.1 now honors replicas: 0 and disables auto‑generated affinity by default.
Why it matters: The change to generic.usePredefinedAffinity defaults to false alters scheduling for all workloads; deployments specifying replicas: 0 will no longer be silently overridden, affecting workload scaling guarantees.
Summary
AI summaryDefault affinity behavior changed to disabled and replicas 0 now honoured.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Breaking | High |
Changes podAffinityPreset default from "soft" to empty string, altering generated affinity rules. Changes podAffinityPreset default from "soft" to empty string, altering generated affinity rules. Source: llm_adapter@2026-07-17 Confidence: high |
— |
| Breaking | High |
Breaks default behavior: generic.usePredefinedAffinity now defaults to false, removing auto‑generated affinity. Breaks default behavior: generic.usePredefinedAffinity now defaults to false, removing auto‑generated affinity. Source: llm_adapter@2026-07-17 Confidence: low |
— |
| Breaking | Medium |
Changes generic.usePredefinedAffinity default from true to false, disabling auto‑generated affinity. Changes generic.usePredefinedAffinity default from true to false, disabling auto‑generated affinity. Source: granite4.1:30b@2026-07-17-audit Confidence: low |
— |
| Feature | Medium |
Adds revisionHistoryLimit support for Deployments, StatefulSets, and DaemonSets. Adds revisionHistoryLimit support for Deployments, StatefulSets, and DaemonSets. Source: llm_adapter@2026-07-17 Confidence: high |
— |
| Dependency | Low |
Updates Chart.lock to match dependencies: nuc-common 1.0.5, nuc-native-gateway 1.0.6, nuc-external-secrets 1.1.0; adds lock entries for nuc-argocd, nuc-keycloak-operator, nuc-strimzi-kafka-operator. Updates Chart.lock to match dependencies: nuc-common 1.0.5, nuc-native-gateway 1.0.6, nuc-external-secrets 1.1.0; adds lock entries for nuc-argocd, nuc-keycloak-operator, nuc-strimzi-kafka-operator. Source: llm_adapter@2026-07-17 Confidence: high |
— |
| Bugfix | Medium |
Fixes rendering of replicas: 0 on Deployments and StatefulSets to honor explicit zero. Fixes rendering of replicas: 0 on Deployments and StatefulSets to honor explicit zero. Source: llm_adapter@2026-07-17 Confidence: high |
— |
| Refactor | Low |
Omits empty affinity sub‑blocks and the entire affinity block when all presets are empty. Omits empty affinity sub‑blocks and the entire affinity block when all presets are empty. Source: llm_adapter@2026-07-17 Confidence: high |
— |
Full changelog
What's Changed
- feat: support revisionHistoryLimit on Deployments and StatefulSets by @edvegas in https://github.com/nixys/nxs-universal-chart/pull/121
- feat: add release v3.1.1 by @Gekter in https://github.com/nixys/nxs-universal-chart/pull/123
- feat: support revisionHistoryLimit on DaemonSet by @SachkovDM
Added
- added
revisionHistoryLimitsupport fordeployments,statefulSets, anddaemonSets, includingdeploymentsGeneral,statefulSetsGeneral, anddaemonSetsGeneralfallbacks. An explicitly set0is honoured; when unset, the field is omitted and the Kubernetes default (10) applies.
Fixed
- fixed
replicas: 0ondeploymentsandstatefulSetsbeing rendered as1: an explicit0was treated as an unset value bydefault. An explicitly set0is now honoured; the default of1still applies whenreplicasis omitted (#119).
Changed
- behavior change:
generic.usePredefinedAffinitydefault changed fromtruetofalse: workloads without an explicitaffinityno longer get generated affinity presets, so noaffinityblock is rendered unless requested. Setgeneric.usePredefinedAffinity: true(or per workload kind, e.g.deploymentsGeneral.usePredefinedAffinity: true) to keep the previous behavior (#21). podAffinityPresetdefault changed fromsoftto"": the generated pod affinity and pod anti-affinity presets contradicted each other and cancelled out while adding scheduler overhead. With presets enabled, only the soft pod anti-affinity is generated by default now (#21).- generated
affinityno longer renders empty preset sub-blocks (nodeAffinity: {}and alike); when all presets are empty theaffinityblock is omitted entirely (#21). - regenerated
Chart.lockto match the dependencies declared inChart.yaml:nuc-common1.0.5,nuc-native-gateway1.0.6,nuc-external-secrets1.1.0, and added lock entries fornuc-argocd,nuc-keycloak-operator, andnuc-strimzi-kafka-operator.
Testing
- added unit suites
tests/units/replicas_test.yaml,tests/units/affinity_presets_test.yaml, andtests/units/revision_history_limit_test.yamlcovering the changes above.
Full Changelog: https://github.com/nixys/nxs-universal-chart/compare/v3.1.0...v3.1.1
Breaking Changes
- Default `generic.usePredefinedAffinity` changed from true to false; workloads without explicit affinity no longer receive generated presets unless explicitly enabled.
- `podAffinityPreset` default changed from "soft" to empty string, altering generated pod affinity/anti‑affinity behavior.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About Nxs Universal Chart
All releases →Related context
Related tools
Beta — feedback welcome: [email protected]