The GitOps Toolkit Helm reconciler, for declarative Helming
Go to file
Hidde Beydals e82d389107
helm/storage: add observator and implementation
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>
2023-11-20 12:02:39 +01:00
.github build(deps): bump the ci group with 2 updates 2023-11-20 03:25:15 +00:00
api build(deps): bump golang.org/x/net from 0.10.0 to 0.17.0 in /api 2023-10-12 06:48:32 +00:00
config Update kustomization.yaml 2023-10-13 09:50:54 +02:00
docs fix: Typo 2023-09-20 09:39:09 +01:00
hack Align docs structure with other controllers 2023-07-21 17:04:33 +02:00
internal helm/storage: add observator and implementation 2023-11-20 12:02:39 +01:00
tests/fuzz Align go.mod version with Kubernetes (Go 1.20) 2023-06-27 10:18:25 +03:00
.gitignore Refactor fuzzing 2022-01-17 20:45:16 +00:00
.goreleaser.yaml Disable goreleaser changelog 2023-06-22 14:59:51 +03:00
CHANGELOG.md Release v0.36.2 2023-10-11 13:34:56 +02:00
CODE_OF_CONDUCT.md Add DCO and code of conduct 2020-07-10 09:18:34 +03:00
DCO Add DCO and code of conduct 2020-07-10 09:18:34 +03:00
DEVELOPMENT.md Align go.mod version with Kubernetes (Go 1.20) 2023-06-27 10:18:25 +03:00
Dockerfile Remove the tini supervisor 2023-05-24 11:05:53 +02:00
LICENSE Support Helm install action 2020-07-08 16:23:38 +02:00
MAINTAINERS Update MAINTAINERS info 2022-08-31 16:55:05 +02:00
Makefile Align docs structure with other controllers 2023-07-21 17:04:33 +02:00
PROJECT Promote API to v2beta1 2020-09-30 19:37:23 +02:00
README.md update to new doc links structure 2022-08-30 14:52:13 +02:00
go.mod helm/storage: add observator and implementation 2023-11-20 12:02:39 +01:00
go.sum Update github.com/docker/docker to 24.0.7 2023-11-20 10:07:45 +01:00
main.go Delete stale metrics on object delete 2023-08-15 02:42:09 +05:30

README.md

helm-controller

CII Best Practices e2e report license release

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.

overview

Features

  • Watches for HelmRelease objects and generates HelmChart objects
  • Supports HelmChart artifacts produced from HelmRepository, GitRepository and Bucket sources
  • Fetches artifacts produced by source-controller from HelmChart objects
  • 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
  • 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

Guides

Specifications