docs: Add dependency ready expression to API docs
Signed-off-by: Stefan Prodan <stefan.prodan@gmail.com>
This commit is contained in:
parent
32f20f7344
commit
40d128a05d
|
|
@ -396,12 +396,59 @@ spec:
|
||||||
- name: backend
|
- name: backend
|
||||||
```
|
```
|
||||||
|
|
||||||
**Note:** This does not account for upgrade ordering. Kubernetes only allows
|
**Note:** Circular dependencies between HelmRelease resources must be avoided,
|
||||||
applying one resource (HelmRelease in this case) at a time, so there is no
|
|
||||||
way for the controller to know when a dependency HelmRelease may be updated.
|
|
||||||
Also, circular dependencies between HelmRelease resources must be avoided,
|
|
||||||
otherwise the interdependent HelmRelease resources will never be reconciled.
|
otherwise the interdependent HelmRelease resources will never be reconciled.
|
||||||
|
|
||||||
|
#### Dependency Ready Expression
|
||||||
|
|
||||||
|
`.spec.dependsOn[].readyExpr` is an optional field that can be used to define a CEL expression
|
||||||
|
to determine the readiness of a HelmRelease dependency.
|
||||||
|
|
||||||
|
This is helpful for when custom logic is needed to determine if a dependency is ready.
|
||||||
|
For example, when performing a lockstep upgrade, the `readyExpr` can be used to
|
||||||
|
verify that a dependency has a matching version in values before proceeding with the
|
||||||
|
reconciliation of the dependent HelmRelease.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||||
|
kind: HelmRelease
|
||||||
|
metadata:
|
||||||
|
name: backend
|
||||||
|
namespace: default
|
||||||
|
spec:
|
||||||
|
# ...omitted for brevity
|
||||||
|
values:
|
||||||
|
app:
|
||||||
|
version: v1.2.3
|
||||||
|
---
|
||||||
|
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||||
|
kind: HelmRelease
|
||||||
|
metadata:
|
||||||
|
name: frontend
|
||||||
|
namespace: default
|
||||||
|
spec:
|
||||||
|
# ...omitted for brevity
|
||||||
|
values:
|
||||||
|
app:
|
||||||
|
version: v1.2.3
|
||||||
|
dependsOn:
|
||||||
|
- name: backend
|
||||||
|
readyExpr: >
|
||||||
|
dep.spec.values.app.version == self.spec.values.app.version &&
|
||||||
|
dep.status.conditions.filter(e, e.type == 'Ready').all(e, e.status == 'True') &&
|
||||||
|
dep.metadata.generation == dep.status.observedGeneration
|
||||||
|
```
|
||||||
|
|
||||||
|
The CEL expression contains the following variables:
|
||||||
|
|
||||||
|
- `dep`: The dependency HelmRelease object being evaluated.
|
||||||
|
- `self`: The HelmRelease object being reconciled.
|
||||||
|
|
||||||
|
**Note:** When `readyExpr` is specified, the built-in readiness check is replaced by the logic
|
||||||
|
defined in the CEL expression. You can configure the controller to run both the CEL expression
|
||||||
|
evaluation and the built-in readiness check, with the `AdditiveCELDependencyCheck`
|
||||||
|
[feature gate](https://fluxcd.io/flux/components/helm/options/#feature-gates).
|
||||||
|
|
||||||
### Values
|
### Values
|
||||||
|
|
||||||
The values for the Helm release can be specified in two ways:
|
The values for the Helm release can be specified in two ways:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue