Skip to content

Commit 031479f

Browse files
authored
Release 2.8.0: Gate CRD installation behind installCrds (#163)
1 parent f79aef0 commit 031479f

7 files changed

Lines changed: 99 additions & 33 deletions

File tree

AGENTS.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,20 @@ After changing a CRD struct, regenerate in this order (or run `just generate-all
3535

3636
When making changes, check whether the change warrants a release note by reviewing the guidelines in `release-notes/README.md`. If it does, create a release note file in `release-notes/unreleased/` as part of the same change.
3737

38+
## Releasing
39+
40+
The release workflow (`.github/workflows/release.yml`) is tag-driven: pushing a
41+
`v<version>` tag builds and publishes the docker image and helm chart under that
42+
version. It bumps nothing. In the release commit you must therefore bump all three
43+
version files together to the new version:
44+
45+
- `Cargo.toml`
46+
- `Cargo.lock` (the `restate-operator` package entry — via `cargo check`, not by hand)
47+
- `charts/restate-operator-helm/Chart.yaml`
48+
49+
Then consolidate the `release-notes/unreleased/` files into `v<version>.md`. See
50+
`release-notes/README.md` for the full, authoritative release process (bump → consolidate → delete → merge → tag).
51+
3852
## Trusted CA Certs Init Container
3953

4054
The trusted CA certs feature (`spec.security.trustedCaCerts`) uses an init container that reads the system CA bundle from `/etc/ssl/certs/ca-certificates.crt` (Debian/Alpine path). If the Restate server base image is changed to a different distro (e.g. RHEL uses `/etc/pki/tls/certs/ca-bundle.crt`), the `SYSTEM_CA_BUNDLE` constant in `src/controllers/restatecluster/reconcilers/compute.rs` must be updated.

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "restate-operator"
3-
version = "2.7.0"
3+
version = "2.8.0"
44
authors = ["restate.dev"]
55
edition = "2024"
66
rust-version = "1.92"

charts/restate-operator-helm/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ apiVersion: v2
22
name: restate-operator-helm
33
description: An operator for Restate clusters
44
type: application
5-
version: "2.7.0"
5+
version: "2.8.0"

release-notes/README.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,30 @@ When making a significant change that affects users, create a release note file
5656

5757
## Release Process
5858

59+
> **CI is tag-driven and bumps nothing.** The release workflow
60+
> (`.github/workflows/release.yml`) derives the version from the pushed `v<version>`
61+
> tag and publishes the docker image and helm chart under that version. It does
62+
> **not** edit or commit `Cargo.toml`, `Cargo.lock`, or `Chart.yaml`. You must bump
63+
> those version files by hand in the release commit *before* tagging. A tag whose
64+
> version differs from `Chart.yaml`'s internal `version:` publishes a chart whose OCI
65+
> tag and internal metadata disagree.
66+
67+
Release checklist (in order):
68+
69+
1. **Bump the version in all three files, together, to the new version:**
70+
- `Cargo.toml``version = "<version>"`
71+
- `Cargo.lock` — the `restate-operator` package entry. Do **not** hand-edit it;
72+
run `cargo check` after bumping `Cargo.toml` so the lockfile updates, then
73+
confirm the `restate-operator` entry reads `version = "<version>"`.
74+
- `charts/restate-operator-helm/Chart.yaml``version: "<version>"`
75+
2. **Consolidate release notes** into `v<version>.md` (see the detailed steps below).
76+
3. **Delete the individual `unreleased/` files** after consolidation (keep `.gitkeep`).
77+
4. **Merge the release PR** into `main`.
78+
5. **Tag `v<version>` on the merge commit** and push it to trigger the release
79+
workflow, which builds and publishes the docker image and helm chart.
80+
81+
The rest of this section details the consolidation step.
82+
5983
When creating a new release:
6084

6185
1. **Review all unreleased notes**: Check `unreleased/` for all pending release notes

release-notes/unreleased/161-gate-crds-behind-installcrds.md

Lines changed: 0 additions & 30 deletions
This file was deleted.

release-notes/v2.8.0.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# Restate Operator v2.8.0 Release Notes
2+
3+
## Highlights
4+
5+
- **CRD installation is now gated behind the `installCrds` Helm value** — the chart's CRDs are templated (default `installCrds: true`) instead of living in Helm's special `crds/` directory. They now update on `helm upgrade`, and can be turned off with `installCrds: false` when CRDs are managed outside the chart.
6+
7+
## New Features
8+
9+
### Gate CRD installation behind `installCrds`
10+
11+
The chart's CRDs are now templated and gated behind a new `installCrds` Helm value
12+
(default `true`). The CRD manifests moved from `crds/` to `crd-manifests/` and are
13+
rendered by `templates/crds.yaml`.
14+
15+
Because the CRDs are templated rather than kept in Helm's special `crds/` directory,
16+
they are applied on `helm upgrade`, so CRD schema updates now ship with chart
17+
upgrades instead of requiring a manual `kubectl apply`.
18+
19+
**Impact on Users:**
20+
- Existing deployments: no change with the default `installCrds: true`.
21+
22+
**Migration Guidance:**
23+
24+
Set `installCrds: false` when the CRDs are managed outside this chart (e.g. a
25+
separate manifest, as nuon-byoc vendors them) to avoid duplicate server-side-apply
26+
ownership:
27+
28+
```yaml
29+
installCrds: false
30+
```
31+
32+
Caveat: templated CRDs are removed on `helm uninstall`, which cascades to and
33+
deletes any existing custom resources (RestateClusters, RestateDeployments,
34+
RestateCloudEnvironments). Set `installCrds: false` if you need CRDs to survive an
35+
uninstall.
36+
37+
*Related: PR [#161](https://github.com/restatedev/restate-operator/pull/161)*
38+
39+
## Improvements
40+
41+
### Helm Chart
42+
43+
- **CRDs are templated and gated behind `installCrds`** (default `true`), so schema
44+
updates apply on `helm upgrade` and CRD installation can be disabled when CRDs are
45+
managed elsewhere. See the New Features section above for details and the uninstall
46+
caveat. ([#161](https://github.com/restatedev/restate-operator/pull/161))
47+
48+
## Upgrading
49+
50+
Upgrade the operator via Helm:
51+
52+
```bash
53+
helm upgrade restate-operator restatedev/restate-operator --version 2.8.0
54+
```
55+
56+
With the default `installCrds: true`, the updated CRDs are applied as part of the
57+
upgrade. If you manage CRDs outside this chart, set `installCrds: false` and apply
58+
them yourself.

0 commit comments

Comments
 (0)