https://github.com/operator-framework/helm-operator-plugins
Experimental refactoring of the operator-framework's helm operator
https://github.com/operator-framework/helm-operator-plugins
Last synced: about 1 month ago
JSON representation
Experimental refactoring of the operator-framework's helm operator
- Host: GitHub
- URL: https://github.com/operator-framework/helm-operator-plugins
- Owner: operator-framework
- License: apache-2.0
- Created: 2020-02-11T01:45:14.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2025-04-28T10:45:56.000Z (about 2 months ago)
- Last Synced: 2025-04-28T11:35:59.198Z (about 2 months ago)
- Language: Go
- Size: 1.74 MB
- Stars: 55
- Watchers: 11
- Forks: 52
- Open Issues: 26
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# helm-operator

[](https://coveralls.io/github/operator-framework/helm-operator-plugins?branch=main)Reimplementation of the helm operator to enrich the Helm operator's reconciliation with custom Go code to create a
hybrid operator.## Introduction
The Helm operator type automates Helm chart operations
by mapping the [values](https://helm.sh/docs/chart_template_guide/values_files/) of a Helm chart exactly to a
`CustomResourceDefinition` and defining its watched resources in a `watches.yaml`
[configuration](https://sdk.operatorframework.io/docs/building-operators/helm/tutorial/#watch-the-nginx-cr) file.For creating a [Level II+](https://sdk.operatorframework.io/docs/advanced-topics/operator-capabilities/operator-capabilities/) operator
that reuses an already existing Helm chart, a [hybrid](https://github.com/operator-framework/operator-sdk/issues/670)
between the Go and Helm operator types is necessary.The hybrid approach allows adding customizations to the Helm operator, such as:
- value mapping based on cluster state, or
- executing code in specific events.## Quick start
### Creating a Helm reconciler
```go
// Operator's main.go
chart, err := loader.Load("path/to/chart")
if err != nil {
panic(err)
}reconciler := reconciler.New(
reconciler.WithChart(*chart),
reconciler.WithGroupVersionKind(gvk),
)if err := reconciler.SetupWithManager(mgr); err != nil {
panic(fmt.Sprintf("unable to create reconciler: %s", err))
}
```