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.
52 lines
2.6 KiB
Markdown
52 lines
2.6 KiB
Markdown
# 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
|
|
|
|
1. Create a new branch `git checkout -b release-<MAJOR.MINOR>` from main
|
|
2. Push the new branch to the remote repository
|
|
|
|
### Now, let's generate the changelog
|
|
|
|
1. Create the changelog from the new branch `release-<MAJOR.MINOR>` (`git checkout release-<MAJOR.MINOR>`).
|
|
You will need to use the [kubebuilder-release-tools][kubebuilder-release-tools] to generate the notes. See [here][release-notes-generation]
|
|
|
|
> **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
|
|
|
|
1. Create a new tag with the correct version from the new `release-<MAJOR.MINOR>` branch
|
|
2. Add the changelog on it and publish. Now, the code source is released !
|
|
|
|
### Add a new Prow test the for the new branch release
|
|
|
|
1. Create a new prow test under [github.com/kubernetes/test-infra/tree/master/config/jobs/kubernetes-sigs/controller-runtime](https://github.com/kubernetes/test-infra/tree/master/config/jobs/kubernetes-sigs/controller-runtime)
|
|
for the new `release-<MAJOR.MINOR>` branch. (i.e. for the `0.11.0` release see the PR: https://github.com/kubernetes/test-infra/pull/25205)
|
|
2. Ping the infra PR in the controller-runtime slack channel for reviews.
|
|
|
|
### Announce the new release:
|
|
|
|
1. 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!
|
|
````
|
|
|
|
2. An announcement email is sent to `kubebuilder@googlegroups.com` with the subject `[ANNOUNCE] Controller-Runtime $VERSION is released`
|
|
|
|
[kubebuilder-release-tools]: https://github.com/kubernetes-sigs/kubebuilder-release-tools
|
|
[release-notes-generation]: https://github.com/kubernetes-sigs/kubebuilder-release-tools/blob/master/README.md#release-notes-generation
|
|
[release-process]: https://github.com/kubernetes-sigs/kubebuilder/blob/master/VERSIONING.md#releasing
|