diff --git a/docs/components/helm/controller.md b/docs/components/helm/controller.md index fbaa5969..ff85b676 100644 --- a/docs/components/helm/controller.md +++ b/docs/components/helm/controller.md @@ -6,18 +6,20 @@ releases with Kubernetes manifests. ![](../../_files/helm-controller.png) The desired state of a Helm release is described through a Kubernetes Custom Resource named `HelmRelease`. -Based on the creation, mutation or removal of a HelmRelease resource in the cluster, +Based on the creation, mutation or removal of a `HelmRelease` resource in the cluster, Helm actions are performed by the controller. Features: - Watches for `HelmRelease` objects and generates `HelmChart` objects +- Supports `HelmChart` artifacts produced from `HelmRepository` and `GitRepository` sources - Fetches artifacts produced by [source-controller](../source/controller.md) from `HelmChart` objects -- Watches `HelmChart` objects for revision changes (semver ranges) -- Performs Helm v3 actions including Helm tests as configured in the `HelmRelease` objects -- Runs Helm install/upgrade in a specific order, taking into account the depends-on relationship +- Watches `HelmChart` objects for revision changes (including semver ranges for charts from `HelmRepository` sources) +- Performs automated Helm actions, including Helm tests, rollbacks and uninstalls +- Offers extensive configuration options for automated remediation (rollback, uninstall, retry) on failed Helm install, upgrade or test actions +- Runs Helm install/upgrade in a specific order, taking into account the depends-on relationship defined in a set of `HelmRelease` objects - Prunes Helm releases removed from cluster (garbage collection) -- Reports Helm releases status (alerting provided by [notification-controller](../notification/controller.md)) +- Reports Helm releases statuses (alerting provided by [notification-controller](../notification/controller.md)) Links: diff --git a/docs/faq/index.md b/docs/faq/index.md index d6a68ecc..af60d7db 100644 --- a/docs/faq/index.md +++ b/docs/faq/index.md @@ -55,12 +55,14 @@ Support for custom commands and generators executed by fluxd in a POSIX shell | Flux v1 | Toolkit component driven "Flux v2" ---------------------------------- | ---------------------------------- -Declarative config in a single Helm custom resource | Declarative config through `HelmRepository`, `HelmChart` and `HelmRelease` custom resources +Declarative config in a single Helm custom resource | Declarative config through `HelmRepository`, `GitRepository`, `HelmChart` and `HelmRelease` custom resources Chart synchronisation embedded in the operator | Extensive release configuration options, and a reconciliation interval per source Support for fixed SemVer versions from Helm repositories | Support for SemVer ranges for `HelmChart` resources Git repository synchronisation on a global interval | Planned support for charts from GitRepository sources Limited observability via the status object of the HelmRelease resource | Better observability via the HelmRelease status object, Kubernetes events, and notifications Resource heavy, relatively slow | Better performance +Chart changes from Git sources are determined from Git metadata | Chart changes must be accompanied by a version bump in `Chart.yaml` to produce a new artifact +Chart dependencies for charts from Git sources are downloaded by the operator | Chart dependencies must be committed to Git #### Notifications, webhooks, observability diff --git a/docs/guides/helmreleases.md b/docs/guides/helmreleases.md index fef81944..d3f08b98 100644 --- a/docs/guides/helmreleases.md +++ b/docs/guides/helmreleases.md @@ -4,7 +4,7 @@ The [helm-controller](../components/helm/controller.md) allows you to declaratively manage Helm chart releases with Kubernetes manifests. It makes use of the artifacts produced by the [source-controller](../components/source/controller.md) from -`HelmRepository` and `HelmChart` resources. +`HelmRepository`, `GitRepository`, and `HelmChart` resources. The helm-controller is part of the default toolkit installation. ## Prerequisites @@ -63,25 +63,26 @@ metadata: spec: interval: 5m chart: - name: podinfo - version: '^4.0.0' - sourceRef: - kind: HelmRepository - name: podinfo - namespace: gitops-system - interval: 1m + spec: + chart: podinfo + version: '4.0.x' + sourceRef: + kind: HelmRepository + name: podinfo + namespace: gitops-system + interval: 1m values: replicaCount: 2 ``` -The `chart.name` is the name of the chart as made available by the Helm -repository, and may not include any aliases. +The `chart.spec.chart` is the name of the chart as made available by +the Helm repository, and may not include any aliases. -The `chart.version` can be a fixed semver, or any semver range (i.e. -`>=4.0.0 <4.0.2`). +The `chart.spec.version` can be a fixed semver, or any semver range +(i.e. `>=4.0.0 <5.0.0`). -The `chart` values are used by the helm-controller as a template to -create a new `HelmChart` resource in the same namespace as the +The `chart.spec` values are used by the helm-controller as a template +to create a new `HelmChart` resource in the same namespace as the `sourceRef`. The source-controller will then lookup the chart in the artifact of the referenced `HelmRepository`, fetch the chart, and make it available as a `HelmChart` artifact to be used by the diff --git a/docs/guides/sealed-secrets.md b/docs/guides/sealed-secrets.md index ded5df4d..bac5a319 100644 --- a/docs/guides/sealed-secrets.md +++ b/docs/guides/sealed-secrets.md @@ -136,11 +136,12 @@ metadata: namespace: gitops-system spec: chart: - name: sealed-secrets - sourceRef: - kind: HelmRepository - name: stable - version: "^1.10.0" + spec: + chart: sealed-secrets + sourceRef: + kind: HelmRepository + name: stable + version: "1.10.x" interval: 1h0m0s releaseName: sealed-secrets targetNamespace: gitops-system