POC: Use Helm V3 SDK as a template base for OpenShift operator
Summary
In https://gitlab.com/gitlab-org/gl-openshift/operator/-/issues/1, @WarheadsSE proposed the option of having the OpenShift Operator consume the GitLab Helm chart by using the Helm V3 SDK. After discussing this proposal with RedHat's @ochienged and @jsenegal, we have decided to move forward with a Proof of Concept. This allows us to continue new feature work in the Helm charts rather than having a separate project to maintain, while using the Operator to manage Day 2 operations.
Concepts
Primary goal: Investigate if we can make use of the Helm v3 SDK (documented here) to consume and generate the objects to be managed by the Operator Framework, removing the need to replicate existing work through , and allowing greater flexibility and acceleration of the Operator work.
We don't want to incorporate the actual helm install
functionality, but rather create a programmatic version of our previous tiller-less
pattern familiarized by helm template ... | kustomize | kubectl apply
. We're interested on having the operator capable of consuming a chart artifact (they're basically tarballs with properly structured contents). We should be able to make use of the API provided by the SDK (above) to generate objects consumable by the OperatorFramework. This may require some transliteration / transformation between some object formats, but the effective contents should be close enough to make this simplistic.
The immediate output from pkg/engine.Render is a map[string]string
, so transformation from that into objects consumable as per our pkg/controller/gitlab/* will be needed.
Acceptance Criteria
-
Create a POC MR for review -
Create follow up issues for next steps