Skip to content

Separate CRDs Helm chart for upgradeable CRD lifecycle#208

Merged
carlydf merged 13 commits intomainfrom
cdf/crd-chart
Mar 18, 2026
Merged

Separate CRDs Helm chart for upgradeable CRD lifecycle#208
carlydf merged 13 commits intomainfrom
cdf/crd-chart

Conversation

@carlydf
Copy link
Copy Markdown
Collaborator

@carlydf carlydf commented Feb 26, 2026

Summary

  • Creates a new temporal-worker-controller-crds Helm chart with CRDs in templates/ (not crds/) so they are upgraded on helm upgrade
  • Removes crds/ from the main chart; CRDs now live exclusively in the CRDs chart
  • Updates make manifests to output to the new chart's templates/
  • Updates make install, make uninstall, and make deploy to use the new paths
  • Adds helm-lint-crds and helm-template-crds jobs to helm-validate.yml CI gate
  • Updates release.yml and helm.yml to bump both chart versions and push both charts on release
  • Adds docs/crd-management.md with compatibility commitment, install/upgrade/rollback instructions, and a migration guide for existing users
  • Updates README.md installation section to document the two-chart install flow

Upgrade order

# Install / upgrade CRDs first, then the controller
helm upgrade temporal-worker-controller-crds ...
helm upgrade temporal-worker-controller ...

Rollback order

# Roll back controller first, CRDs optionally afterward
helm rollback temporal-worker-controller
helm rollback temporal-worker-controller-crds  # usually not needed

Migration for existing users (Controller Helm Chart v0.12.0 and earlier)

Helm does not delete CRDs when upgrading to the new chart, so upgrading the main chart is safe. A one-time helm install temporal-worker-controller-crds adopts the existing CRDs into the new release.

Test plan

  • helm lint --strict helm/temporal-worker-controller-crds passes
  • helm template test-release helm/temporal-worker-controller-crds emits two CRDs with helm.sh/resource-policy: keep
  • helm template test-release helm/temporal-worker-controller emits zero CRDs
  • CI helm-validate.yml passes all 4 jobs (lint, template, lint-crds, template-crds)

🤖 Generated with Claude Code

@carlydf carlydf requested review from a team and jlegrone as code owners February 26, 2026 05:00
Comment thread docs/crd-management.md Outdated
Comment thread helm/temporal-worker-controller-crds/Chart.yaml
Comment thread docs/crd-management.md
Comment thread docs/crd-management.md Outdated
Comment thread docs/crd-management.md
Comment thread docs/crd-management.md Outdated
Comment thread helm/temporal-worker-controller-crds/Chart.yaml
Comment thread helm/temporal-worker-controller-crds/Chart.yaml
@carlydf carlydf enabled auto-merge (squash) March 18, 2026 07:32
@carlydf carlydf merged commit e9773f5 into main Mar 18, 2026
17 checks passed
@carlydf carlydf deleted the cdf/crd-chart branch March 18, 2026 07:40
shashwatsuri pushed a commit to shashwatsuri/temporal-worker-controller that referenced this pull request Apr 28, 2026
## Summary

- Creates a new `temporal-worker-controller-crds` Helm chart with CRDs
in `templates/` (not `crds/`) so they are upgraded on `helm upgrade`
- Removes `crds/` from the main chart; CRDs now live exclusively in the
CRDs chart
- Updates `make manifests` to output to the new chart's `templates/`
- Updates `make install`, `make uninstall`, and `make deploy` to use the
new paths
- Adds `helm-lint-crds` and `helm-template-crds` jobs to
`helm-validate.yml` CI gate
- Updates `release.yml` and `helm.yml` to bump both chart versions and
push both charts on release
- Adds `docs/crd-management.md` with compatibility commitment,
install/upgrade/rollback instructions, and a migration guide for
existing users
- Updates `README.md` installation section to document the two-chart
install flow

## Upgrade order

```
# Install / upgrade CRDs first, then the controller
helm upgrade temporal-worker-controller-crds ...
helm upgrade temporal-worker-controller ...
```

## Rollback order

```
# Roll back controller first, CRDs optionally afterward
helm rollback temporal-worker-controller
helm rollback temporal-worker-controller-crds  # usually not needed
```

## Migration for existing users (Controller Helm Chart v0.12.0 and
earlier)

Helm does not delete CRDs when upgrading to the new chart, so upgrading
the main chart is safe. A one-time `helm install
temporal-worker-controller-crds` adopts the existing CRDs into the new
release.

## Test plan

- [x] `helm lint --strict helm/temporal-worker-controller-crds` passes
- [x] `helm template test-release helm/temporal-worker-controller-crds`
emits two CRDs with `helm.sh/resource-policy: keep`
- [x] `helm template test-release helm/temporal-worker-controller` emits
zero CRDs
- [x] CI `helm-validate.yml` passes all 4 jobs (lint, template,
lint-crds, template-crds)

🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants