Skip to content

Repository files navigation

helm-operator

Build 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.yamlconfiguration 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:

  • value mapping based on cluster state, or
  • executing code in specific events.

Quick start

Creating a Helm reconciler

// Operator's main.gochart, err:=loader.Load("path/to/chart")
iferr!=nil {
panic(err)
}
reconciler:=reconciler.New(
reconciler.WithChart(*chart),
reconciler.WithGroupVersionKind(gvk),
)
iferr:=reconciler.SetupWithManager(mgr); err!=nil {
panic(fmt.Sprintf("unable to create reconciler: %s", err))
}

Why a fork?

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.yamlconfiguration file.

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

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

  • value mapping based on cluster state, or
  • executing code in specific events.

Quickstart

  • Add this module as a replace directive to your go.mod:

    go mod edit -replace=github.com/joelanford/helm-operator=github.com/stackrox/helm-operator@main
    

    For example:

    chart, err:=loader.Load("path/to/chart")
    iferr!=nil {
    panic(err)
    }
    reconciler:=reconciler.New(
    reconciler.WithChart(*chart),
    reconciler.WithGroupVersionKind(gvk),
    )
    iferr:=reconciler.SetupWithManager(mgr); err!=nil {
    panic(fmt.Sprintf("unable to create reconciler: %s", err))
    }

Releases

Packages

Used by

Contributors

Languages