This adds an observer which wraps around a Helm storage driver, to keep track of the release metadata as written to the storage. This enables you to work with, and compare release data as persisted by Helm. Without having to rely on the result as returned by the Helm SDK. Which at times of an error, may differ from last written state. The observer does at present expect to be watching a single namespace, and was designed without working with multiple releases simultianiously into account, although this should theoretically still work. The releases are at stored in a simple map by index storage key, which are unique to the namespace. The `ObservedRelease` objects the keys hold are overwritten on sequential writes to the same release object, and returned by getter methods as deep copies. This could theoretically be changed to observing e.g. all writes, I have left this as a refinement TODO while actually implementing it in the reconciler. The same goes for the included metadata, which might be not all relevant. Signed-off-by: Hidde Beydals <hello@hidde.co> |
||
|---|---|---|
| .github | ||
| api | ||
| config | ||
| docs | ||
| hack | ||
| internal | ||
| tests/fuzz | ||
| .gitignore | ||
| .goreleaser.yaml | ||
| CHANGELOG.md | ||
| CODE_OF_CONDUCT.md | ||
| DCO | ||
| DEVELOPMENT.md | ||
| Dockerfile | ||
| LICENSE | ||
| MAINTAINERS | ||
| Makefile | ||
| PROJECT | ||
| README.md | ||
| go.mod | ||
| go.sum | ||
| main.go | ||
README.md
helm-controller
The helm-controller is a Kubernetes operator, allowing one to declaratively manage Helm chart releases. It is part of a composable GitOps toolkit and depends on source-controller to acquire the Helm charts from Helm repositories.
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, Helm actions are performed by the
operator.
Features
- Watches for
HelmReleaseobjects and generatesHelmChartobjects - Supports
HelmChartartifacts produced fromHelmRepository,GitRepositoryandBucketsources - Fetches artifacts produced by source-controller from
HelmChartobjects - Watches
HelmChartobjects for revision changes (including semver ranges for charts fromHelmRepositorysources) - 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
HelmReleaseobjects - Reports Helm release statuses (alerting provided by notification-controller)
- Built-in Kustomize compatible Helm post renderer, providing support for strategic merge, JSON 6902 and images patches
