doc/spec/v2beta2: document CRD lifecycle
Signed-off-by: Hidde Beydals <hidde@hhh.computer>
This commit is contained in:
parent
f26749231e
commit
eca86919be
|
|
@ -741,6 +741,63 @@ resume.
|
||||||
|
|
||||||
### Controlling the lifecycle of Custom Resource Definitions
|
### Controlling the lifecycle of Custom Resource Definitions
|
||||||
|
|
||||||
|
Helm does support [the installation of Custom Resource Definitions](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/#method-1-let-helm-do-it-for-you)
|
||||||
|
(CRDs) as part of a chart. However, it has no native support for
|
||||||
|
[upgrading CRDs](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/#some-caveats-and-explanations):
|
||||||
|
|
||||||
|
> There is no support at this time for upgrading or deleting CRDs using Helm.
|
||||||
|
> This was an explicit decision after much community discussion due to the
|
||||||
|
> danger for unintentional data loss. Furthermore, there is currently no
|
||||||
|
> community consensus around how to handle CRDs and their lifecycle. As this
|
||||||
|
> evolves, Helm will add support for those use cases.
|
||||||
|
|
||||||
|
If you write your own Helm charts, you can work around this limitation by
|
||||||
|
putting your CRDs into the templates instead of the `crds/` directory, or by
|
||||||
|
factoring them out into a separate Helm chart as suggested by the [official Helm
|
||||||
|
documentation](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/#method-2-separate-charts).
|
||||||
|
|
||||||
|
However, if you use a third-party Helm chart that installs CRDs, not being able
|
||||||
|
to upgrade the CRDs via HelmRelease objects might become a cumbersome limitation
|
||||||
|
within your GitOps workflow. Therefore, Flux allows you to opt in to upgrading
|
||||||
|
CRDs by setting the `.crds` policy in the [`.spec.install`](#install-configuration)
|
||||||
|
and [`.spec.upgrade`](#upgrade-configuration) configurations.
|
||||||
|
|
||||||
|
The following policy values are supported:
|
||||||
|
|
||||||
|
- `Skip`: Skip the installation or upgrade of CRDs. This is the default value
|
||||||
|
for `.spec.upgrade.crds`.
|
||||||
|
- `Create`: Create CRDs if they do not exist, but do not upgrade or delete them.
|
||||||
|
This is the default value for `.spec.install.crds`.
|
||||||
|
- `CreateReplace`: Create new CRDs, update (replace) existing ones, but **do
|
||||||
|
not** delete CRDs which no longer exist in the current Helm chart.
|
||||||
|
|
||||||
|
For example, if you want to update CRDs when installing and upgrading a Helm
|
||||||
|
chart, you can set the `.spec.install.crds` and `.spec.upgrade.crds` policies to
|
||||||
|
`CreateReplace`:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
apiVersion: helm.toolkit.fluxcd.io/v2beta2
|
||||||
|
kind: HelmRelease
|
||||||
|
metadata:
|
||||||
|
name: my-operator
|
||||||
|
namespace: default
|
||||||
|
spec:
|
||||||
|
interval: 10m
|
||||||
|
chart:
|
||||||
|
spec:
|
||||||
|
chart: my-operator
|
||||||
|
version: "1.0.1"
|
||||||
|
sourceRef:
|
||||||
|
kind: HelmRepository
|
||||||
|
name: my-operator-repo
|
||||||
|
interval: 5m
|
||||||
|
install:
|
||||||
|
crds: CreateReplace
|
||||||
|
upgrade:
|
||||||
|
crds: CreateReplace
|
||||||
|
```
|
||||||
|
|
||||||
### Role-based access control
|
### Role-based access control
|
||||||
|
|
||||||
By default, a HelmRelease runs under the cluster admin account and can create,
|
By default, a HelmRelease runs under the cluster admin account and can create,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue