|
| 1 | +# Helm Installation Support for StreamsHub Console |
| 2 | + |
| 3 | +This proposal outlines adding official Helm chart support for the StreamsHub Console operator and its Custom Resources (CRs). |
| 4 | +This would provide a standardized installation method and lay the foundation for a broader StreamsHub Helm ecosystem. |
| 5 | + |
| 6 | +## Current situation |
| 7 | + |
| 8 | +There is currently no official Helm chart for the StreamsHub Console operator or its associated Custom Resources. |
| 9 | +Among the broader StreamsHub stack, only Strimzi provides an official Helm chart. |
| 10 | +Components such as Strimzi, Prometheus, and other dependencies each maintain their own Helm charts through their respective upstream projects. |
| 11 | + |
| 12 | +## Motivation |
| 13 | + |
| 14 | +Helm is widely adopted as the standard packaging mechanism for k8s applications. |
| 15 | +A large portion of the k8s ecosystem — including GitOps platforms (e.g. Argo CD) and cloud provider marketplaces — relies on Helm as the primary installation mechanism. |
| 16 | + |
| 17 | +By introducing an official Helm chart for the Console operator and CRs, StreamsHub could: |
| 18 | + |
| 19 | +- **Lower the barrier to adoption** for teams already using Helm-based workflows and environments |
| 20 | +- **Enable fine-tuned configuration** with value overrides, environment-specific configuration, and lifecycle management via Helm |
| 21 | +- **Align with ecosystem standards**, making StreamsHub easier to discover and integrate |
| 22 | +- **Unlock the possibility for a future StreamsHub Helm chart** — once the Console operator has its own chart, it becomes easier to compose a top-level `streamshub` chart |
| 23 | +that depends on Console, Strimzi, Kafka, Prometheus, and other components, enabling full-stack deployment through a single `helm install` command |
| 24 | + |
| 25 | +## Proposal |
| 26 | + |
| 27 | +The proposal is to create and maintain an official Helm chart repo for: |
| 28 | + |
| 29 | +1. **The StreamsHub Console Operator** — managing its deployment, RBAC, service accounts, and associated configuration |
| 30 | +2. **The Console Custom Resource (CR)** — exposing the Console instance configuration as Helm values, allowing users to customise the Console without editing raw YAML manifests |
| 31 | + |
| 32 | +### Scope of initial chart(s) |
| 33 | + |
| 34 | +The initial implementation should be deliberately scoped and simple. It should cover: |
| 35 | + |
| 36 | +- Operator's `Deployment`, `ServiceAccount`, `ClusterRole`, and `ClusterRoleBinding` |
| 37 | +- CRD installation (either bundled or as a dependency) |
| 38 | +- A Console CR that can be optionally deployed alongside the operator by passing a Helm value (e.g. console.instance=true), allowing users who prefer to manage the CR separately to do so |
| 39 | + |
| 40 | +- The chart should **not** attempt to manage external dependencies such as Strimzi, Kafka, or Prometheus in this initial phase. |
| 41 | +Those components have already well-maintained charts and could be addressed in a follow-up effort. |
| 42 | + |
| 43 | +### Possible Future: StreamsHub Umbrella Chart |
| 44 | + |
| 45 | +Once official charts exist for the Console operator and operands, it becomes possible to introduce a `streamshub` |
| 46 | +umbrella Helm chart that composes the full stack. This chart would declare Helm dependencies on: |
| 47 | + |
| 48 | +- `streamshub-console` (this proposal) |
| 49 | +- `strimzi-kafka-operator` (official Strimzi chart) |
| 50 | +- `kafka` / `kraft` via Strimzi CRs |
| 51 | +- `prometheus` or equivalent monitoring |
| 52 | +- `apicurio` or equivalent schema registries |
| 53 | +- Any other components managed by StreamsHub |
| 54 | + |
| 55 | +This umbrella chart would give users an easy way to deploy the entire stack, significantly improving the onboarding experience and enabling catalogue listings on platforms like Artifact Hub. |
| 56 | + |
| 57 | +### Delivery |
| 58 | + |
| 59 | +- Charts to be hosted within the StreamsHub GitHub organisation, either in a dedicated `helm-charts` repository under a `${PROJECT_NAME}-charts/` directory |
| 60 | +- Charts published to a Helm repository (like GitHub Pages or `oci` variants like Quay / DockerHub) + Artifact Hub following each release |
| 61 | +- Chart versioning to follow the operator release cycle, with independent patch versioning where chart-only fixes are needed |
| 62 | +- A GitHub Actions workflow can be introduced to lint chart using helm lint on every pull request/release, catching templating errors and schema violations early |
| 63 | +- A minimal deployment test will run on each push, spinning up a light k8s cluster (kind or minikube might be the best options) and verifying that the operator and Console CR deploy and reach a healthy state |
| 64 | +- Chart releases will be automated using github action workflows, allowing the Console operator chart to be tested and published to the StreamsHub Helm repository |
| 65 | + |
| 66 | +## Affected/not affected projects |
| 67 | + |
| 68 | +**Affected:** |
| 69 | +- `streamshub/console` — primary subject of this proposal - the operator and Console CR chart will live in or alongside this repository |
| 70 | +- StreamsHub documentation — installation guides will need updating to include Helm-based instructions |
| 71 | + |
| 72 | +**Not affected (at this stage):** |
| 73 | +- Strimzi, Apicurio, Prometheus, and other stack components — remain independently managed and they will only be referenced if the future umbrella chart is taken forward |
| 74 | + |
| 75 | +## Compatibility |
| 76 | + |
| 77 | +- CRD management will follow Helm community best practices (CRDs in `crds/` directory) to avoid conflicts with existing CRD installations |
| 78 | +- The chart will declare a minimum supported k8s version consistent with the operator's existing requirements |
| 79 | +- Future versions of the chart will follow semantic versioning; breaking value changes will result in a major version bump and will be documented in a compatibility/migration guide |
| 80 | + |
| 81 | +## Rejected alternatives |
| 82 | + |
| 83 | +**Single monolithic StreamsHub chart (immediate)** |
| 84 | +Jumping directly to a full StreamsHub umbrella chart that includes Strimzi, Kafka, and Prometheus was considered but rejected for the initial phase. |
| 85 | +Managing other chart dependencies increases complexity and introduces coupling to third-party release cycles. |
| 86 | +Starting with a focused Console operator chart allows us to establish chart quality and release processes before taking on a broader scope. |
0 commit comments