Skip to content

Implement Helm storage backend logic #650

@mszostok

Description

@mszostok

Description

Blocked By: #645

As the Helm backend storage and allow its discovery and consumption via dedicated TypeInstance.

Subtasks

AC

The Helm storage backend consists of two quite independent parts:

Helm release storage

Helm template storage

A storage backend that supports helm templating:

  • Implement as a part of the same binary of the Helm release storage
  • Create dedicated Type for a given Storage backend TypeInstance
    - In context: go template + helm release name + namespace
  • Implement templating support:
    • Template passed in context to the storage backend - it is specified and stored in Local Hub on create/update
    • The service renders the template against the manifests and values for the installed release, and returns the output
    • (Almost) the same logic that we have currently in Helm Runner

Common

  • Modify Helm runner:
    - Remove output.goTemplate. As discussed with @mszostok, we'll keep it to have it as a support for further workflow steps
    - Stop supporting usage of funcs from _helpers.tpl As discussed with @mszostok, we'll keep it to have it as a support for further workflow steps
    • Update JSON Schema for Type
    • Add another output from Helm Runner - create artifact, which puts context for Helm release backend
  • Add dedicated manifests (probably Action) to install Helm storage (same approach as in Configure Secret storage backend to be used with Local Hub #647)
    • Single Helm chart, one deployment, two containers and two separate services
    • The implementation produces two TypeInstances for two storage backends (helm release + helm template)
  • Update pipelines for releasing Helm charts and building image
  • Created dedicated documentation on our website under storage backend section:
    Screen Shot 2022-03-01 at 10 02 28
    • mention two separate modules of a given storage backend (actually, they are separate storage backends)
  • Create a new PostgreSQL and Mattermost Implementation revisions to showcase that the Helm storage works properly.
  • Out of scope: other manifests

Related issues

See epic #604 for the reason and use cases.

Metadata

Metadata

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions