The GitOps Toolkit Helm reconciler, for declarative Helming
Go to file
Sunny 59c577a924 Remove stale Ready=False conditions values
When the reconciliation begins, while fulfilling the prerequisites,
Ready=False condition for various reasons are added on the object. On
failure, this reason is persisted on the object. On a subsequent
reconciliation, when the failure is recovered, the Ready=False condition
is not updates until the atomic reconciliation reaches a conclusion.
During this period if the atomic reconciliation enters a retry loop due
to constant drift detection and correction, the stale Ready=False
condition with incorrect reason persists on the object. The Ready=False
message is also copied to Reconciling=True condition, resulting in an
incorrect depiction of what's actually happening.
For example, if previously the HelmRelease failed with dependency not
ready error, on a subsequent reconciliation, even after going past the
dependency check and returning from atomic reconciliation due to drift
detection and correction loop scenario, the Ready=False condition
continues to show the stale dependency not ready error.

In order to show more accurate status, the Ready=False conditions added
while fulfilling prerequisites can be removed once those checks have
succeeded, updating Ready=False to Ready=Unknown with "reconciliation in
progress" message. If the atomic reconciliation gets stuck in the drift
detection and correction loop with this, the Ready and Reconciling
conditons would show "reconciliation in progress". This should be a
better indicator of what's going on. The events and logs can be checked
to determine accurately what's causing the reconciliation to be
progressing for ever.

Signed-off-by: Sunny <github@darkowlzz.space>
2024-02-05 13:31:05 +05:30
.github build(deps): bump the ci group with 4 updates 2024-02-05 03:13:24 +00:00
api Update API to Kubernetes v1.28.6 2024-01-29 17:30:39 +02:00
config Release v0.37.3 2024-02-01 15:34:01 +00:00
docs docs/spec: address typo 2023-12-13 08:52:04 +01:00
hack api: introduce v2beta2 API 2023-11-20 12:02:42 +01:00
internal Remove stale Ready=False conditions values 2024-02-05 13:31:05 +05:30
tests/fuzz Update Go to 1.21 2024-01-22 18:03:20 +02: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.3 2024-02-01 15:34:01 +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 Update Go to 1.21 2024-01-22 18:03:20 +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 Update Go to 1.21 2024-01-22 18:03:20 +02:00
PROJECT api: make v2beta2 storage version 2023-11-20 12:06:33 +01:00
README.md docs: various doc nits 2023-12-11 18:51:58 +01:00
go.mod Remove stale Ready=False conditions values 2024-02-05 13:31:05 +05:30
go.sum Remove stale Ready=False conditions values 2024-02-05 13:31:05 +05:30
main.go Properly configure namespace selector 2023-12-19 16:52:50 +01: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 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