Skip to content

Upgrade

The Kubernetes integration is versioned independently from Pacto core. The operator image, Helm chart, Go module and this documentation set bump together as one release group on their own cadence.

Upgrade with Helm

For an upgrade that does not change the CRD schema, a plain helm upgrade is enough:

helm upgrade pacto-operator \
  oci://ghcr.io/trianalab/pacto/charts/pacto-operator \
  --version 4.7.0 \
  --namespace pacto-operator-system

Upgrading across a major version (CRD migration)

Helm never upgrades the CustomResourceDefinitions bundled under a chart's crds/ directory: it installs them on the first helm install and then leaves them untouched on every helm upgrade. A major release that changes the CRD schema therefore has one extra, ordered step — apply the new CRDs before you run helm upgrade:

# 1. Apply the new CRDs out of band. Server-side apply is required: these CRDs are
#    larger than the client-side last-applied-configuration annotation limit, and
#    --force-conflicts takes ownership of the fields the previous chart install set.
kubectl apply --server-side --force-conflicts \
  -f https://raw.githubusercontent.com/TrianaLab/pacto/main/integrations/kubernetes/config/crd/bases/pacto.trianalab.io_pactos.yaml
kubectl apply --server-side --force-conflicts \
  -f https://raw.githubusercontent.com/TrianaLab/pacto/main/integrations/kubernetes/config/crd/bases/pacto.trianalab.io_pactorevisions.yaml

# 2. Upgrade the release to the new chart version.
helm upgrade pacto-operator \
  oci://ghcr.io/trianalab/pacto/charts/pacto-operator \
  --version 5.0.0 \
  --namespace pacto-operator-system

The API version stays v1alpha1 across the major bump and schema changes are additive, so the stored version is unchanged: every existing Pacto resource remains stored and readable under the new CRD (no conversion webhook, no decode error) and the upgraded operator reconciles it in place. Confirm the migration before and after:

kubectl get crd pactos.pacto.trianalab.io \
  -o jsonpath='{.spec.versions[0].additionalPrinterColumns[*].name}'   # reflects the new schema
kubectl get pacto -A                                                    # existing resources still list + reconcile

If a future release ever ships an incompatible schema change, the server-side apply or the resource read fails loudly rather than silently dropping resources — resolve it before running helm upgrade. See the CRD reference for the current field set.

This exact flow is exercised end to end against a real cluster by tests/e2e/kind/v4-to-v5-upgrade.sh (the ci-e2e-kind-upgrade gate): it installs the real previous-major (v4) chart with its v4 CRDs, server-side applies the new CRDs, then helm upgrades to the current chart and asserts the pre-existing resource survives and reconciles.

Compatibility

Version compatibility

The Kubernetes integration is versioned independently from Pacto core. The table below is generated from integration.yaml and release/release-manifest.json.

Integration artifact Version Supported Pacto core
Operator image 5.1.2 >=3.0.0
Operator chart 5.1.2 >=3.0.0
Go module 5.1.2 >=3.0.0
Integration docs 5.1.2 >=3.0.0

This documentation set corresponds to Pacto core 3.1.4. The integration's own version (currently operator/chart 5.1.2, docs 5.1.2) advances on its own release cadence.

Version selector

The site version selector (top of the page) tracks Pacto core releases. Because the Kubernetes integration ships on its own cadence, a Kubernetes-only release does NOT add a new core version entry to the selector: it republishes the current core version in place with regenerated integration docs, and this compatibility table shows the integration version those docs describe.

Documentation versions

The documentation site's version selector (top of every page) tracks Pacto core releases. A Kubernetes-only release does not add a new core version to the selector; it republishes the current core version in place with regenerated integration docs. The compatibility table above always reflects the integration version the docs you are reading describe. Pick a core version from the selector to read the docs that shipped with that release.