9da206dc7c
PVCs and CloudNativePG Clusters need S3 buckets and backup schedules
provisioned consistently. This operator watches the
backups.unkin.net/{schedule,destination} annotations on those objects and
provisions everything needed to back them up, with no new CRDs.
- Add a PVC controller that provisions cephrgw ObjectStoreUser/Bucket/BucketAccess,
auto-generates a restic repo-password Secret and creates a k8up Schedule scoped
to the PVC via spec.backup.volumes[].persistentVolumeClaim.claimName.
- Add a CNPG Cluster controller that provisions the same bucket stack, idempotently
patches spec.backup.barmanObjectStore (leaving a user-set destinationPath alone
with a Warning event) and creates a ScheduledBackup.
- Resolve destinations through a ConfigMap lookup table; requeue until the
BucketAccess is Ready before creating schedule resources; own-reference created
resources and retain bucket data by default.
- Add schedule-mapping helpers (k8up 5-field/shortcut pass-through, CNPG 6-field
seconds-first) and deterministic, length-bounded name derivation.
- Add unit tests (schedule mapping, name derivation, destination resolution) and
envtest controller tests for both paths, wiring the external CRDs into envtest.
- Add kubebuilder-generated RBAC, a Dockerfile (distroless/nonroot), Woodpecker
lint/test/build pipelines and a tag-triggered image push to the artifactapi
docker-internal registry, plus a version-bump Makefile and deploy manifests.
2.6 KiB
2.6 KiB
Release Process
The Kubernetes controller-runtime Project is released on an as-needed basis. The process is as follows:
Note: Releases are done from the release-MAJOR.MINOR branches. For PATCH releases is not required
to create a new branch you will just need to ensure that all big fixes are cherry-picked into the respective
release-MAJOR.MINOR branch. To know more about versioning check https://semver.org/.
How to do a release
Create the new branch and the release tag
- Create a new branch
git checkout -b release-<MAJOR.MINOR>from main - Push the new branch to the remote repository
Now, let's generate the changelog
- Create the changelog from the new branch
release-<MAJOR.MINOR>(git checkout release-<MAJOR.MINOR>). You will need to use the kubebuilder-release-tools to generate the notes. See here
Note
- You will need to have checkout locally from the remote repository the previous branch
- Also, ensure that you fetch all tags from the remote
git fetch --all --tags
Draft a new release from GitHub
- Create a new tag with the correct version from the new
release-<MAJOR.MINOR>branch - Add the changelog on it and publish. Now, the code source is released !
Add a new Prow test the for the new branch release
- Create a new prow test under github.com/kubernetes/test-infra/tree/master/config/jobs/kubernetes-sigs/controller-runtime
for the new
release-<MAJOR.MINOR>branch. (i.e. for the0.11.0release see the PR: https://github.com/kubernetes/test-infra/pull/25205) - Ping the infra PR in the controller-runtime slack channel for reviews.
Announce the new release:
- Publish on the Slack channel the new release, i.e:
:announce: Controller-Runtime v0.12.0 has been released!
This release includes a Kubernetes dependency bump to v1.24.
For more info, see the release page: https://github.com/kubernetes-sigs/controller-runtime/releases.
:tada: Thanks to all our contributors!
- An announcement email is sent to
kubebuilder@googlegroups.comwith the subject[ANNOUNCE] Controller-Runtime $VERSION is released