operator-framework / helm-operator-plugins

Experimental refactoring of the operator-framework's helm operator
Apache License 2.0
48 stars 48 forks source link

helm-operator

Build Status Coverage Status

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 of a Helm chart exactly to a CustomResourceDefinition and defining its watched resources in a watches.yaml configuration file.

For creating a Level II+ operator that reuses an already existing Helm chart, a hybrid between the Go and Helm operator types is necessary.

The hybrid approach allows adding customizations to the Helm operator, such as:

Quick start

Creating a Helm reconciler

// 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))
}