The GitOps Toolkit Helm reconciler, for declarative Helming
Go to file
Sunny e0629b7967 PostRenderersDigest observation improvements
Move the post renderers digest set/update code from summarize() to
atomic release reconciler in order to update the observation only at the
end of a successful reconciliation. summarize() is for summarizing the
status conditions and is also called by all the other action
sub-reconcilers, which can update the post renderers digest observation
too early.
Updating the observed post renderers digest at the very end of a
reconciliation introduces an issue where a digest mismatch in
DetermineReleaseState() could result in the release to get stuck in a
loop as even after running an upgrade due to post renderers value, the
new observation isn't reflected immediately in the middle of atomic
reconciliation. This can be solved by checking post renderers digest
value only for new configurations where the object generation and the
ready status condition observed generations don't match, in other words
when the generation of a configuration has not be processed. This
assumes that an upgrade due to any other reason also takes into account
the post renderers value and need not be checked separately for the same
config generation.

Signed-off-by: Sunny <github@darkowlzz.space>
(cherry picked from commit 63f7a76319)
2024-05-09 12:21:35 +00:00
.github build(deps): bump the ci group across 1 directory with 2 updates 2024-05-08 03:34:21 +00:00
api Add test cases for Summarize() and DetermineReleaseState() 2024-05-07 23:13:47 +02:00
config Add test cases for Summarize() and DetermineReleaseState() 2024-05-07 23:13:47 +02:00
docs Add test cases for Summarize() and DetermineReleaseState() 2024-05-07 23:13:47 +02:00
hack Update copyright year (GA API) 2024-05-03 17:35:01 +03:00
internal PostRenderersDigest observation improvements 2024-05-09 12:21:35 +00:00
tests/fuzz Build with Go 1.22 2024-04-02 13:53:40 +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.37.4 2024-02-05 08:19:18 +00: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 Build with Go 1.22 2024-04-02 13:53:40 +03: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 Promote `HelmRelease` API to v2 (GA) 2024-05-03 16:25:14 +03:00
PROJECT Promote `HelmRelease` API to v2 (GA) 2024-05-03 16:25:14 +03:00
README.md Add API docs for `HelmRelease` v2 2024-05-03 16:30:58 +03:00
go.mod build(deps): bump golang.org/x/text in the go-deps group 2024-05-07 23:41:54 +02:00
go.sum build(deps): bump golang.org/x/text in the go-deps group 2024-05-07 23:41:54 +02:00
main.go Update samples to GA APIs 2024-05-03 17:12:22 +03:00

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 and OCIRepository 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
  • Supports detecting and correcting in-cluster changes compared to the desired state of the Helm release

Guides

Specifications