Upgrading¶
This page covers the move to 1.0 and what you can rely on across the 1.x line.
Upgrading to 1.0¶
1.0 changes nothing about how replication works. The upgrade is the CRD version:
- Upgrade the chart as usual (
helm upgrade ... --version "${VERSION}"with the 1.0 release version). The chart installs the CRD with bothv1(storage) andv1alpha1(served, deprecated). ExistingSpillwayProfileobjects keep working; the API server converts between the two versions without a webhook because the schemas are identical. - Update your manifests and GitOps sources from
apiVersion: spillway.kroy.io/v1alpha1tospillway.kroy.io/v1. Until you do,kubectlprints a deprecation warning on every apply. - Migrate stored objects so
v1alpha1can be dropped later: It rewrites every profile at thev1storage version and sets the CRD'sstatus.storedVersionsto["v1"]. It is idempotent.
Rolling back to 0.6.x after step 3 requires re-adding v1alpha1 to the CRD, so run step 3 once you are satisfied with 1.0.
Compatibility promise (1.x)¶
From the 1.0 release, the following are stable for the whole 1.x line. Changes to them are additive only; anything removed goes through at least one minor release of deprecation warnings first.
- Annotations under
spillway.kroy.io/listed in the annotation reference: names, value syntax, and semantics. SpillwayProfilespillway.kroy.io/v1: the schema and reconciliation semantics.v1alpha1is served and marked deprecated; it is removed no earlier than 1.2.- Controller flags as printed by
spillway --help: names, defaults, and meaning. - Helm values in
charts/spillway/values.yaml: keys and defaults. - Replica markers: the
spillway.kroy.io/managed-bylabel and themanaged-by,source-from,profile-ref, andexpires-atannotations on replicas. Tooling may depend on them. - Metrics listed under Metrics: names and label sets.
Not covered by the promise:
- Log line format and field names.
- Kubernetes Event reasons and messages.
- The internal Go packages (
internal/,cmd/).api/v1is importable and covered. - Exact reconcile timing, requeue intervals, and ordering across namespaces.
- The Kustomize manifests under
config/, which track the chart but are a convenience for development.
Versioning¶
- Version tags:
vMAJOR.MINOR.PATCH - Pre-releases:
vMAJOR.MINOR.PATCH-rc.N - Release tags trigger GitHub Actions automation for binaries, container image, Helm OCI chart, and GitHub release assets.
charts/spillway/Chart.yamlversionandappVersionmatch the release version (without leadingv).
See Releasing for the maintainer process.