-
Notifications
You must be signed in to change notification settings - Fork 4
Description
Summary
The storagebox application depends on the Bitnami Cassandra Helm chart, which is transitioning to a paid Broadcom subscription model after September 29, 2025. This chart dependency must be replaced with a community-maintained or operator-based alternative.
Current Bitnami Dependencies
Helm Chart Dependency
- Chart:
cassandra - Version:
~12.3.11 - Repository:
https://charts.bitnami.com/bitnami - File:
applications/storagebox/charts/storagebox/Chart.yaml(lines 12-15)
Bitnami Container Images
| Image | Tag | Usage |
|---|---|---|
bitnami/cassandra |
4.1.6-debian-12-r3 |
Main Cassandra database |
bitnami/os-shell |
12-debian-12-r28 |
Init container for volume permissions |
bitnami/cassandra-exporter |
2.3.8-debian-12-r28 |
Metrics/monitoring exporter |
Affected Files
applications/storagebox/charts/storagebox/Chart.yaml- chart dependencyapplications/storagebox/charts/storagebox/Chart.lock- lock fileapplications/storagebox/charts/storagebox/values.yaml- extensive Cassandra configuration (~900 lines)applications/storagebox/kots/storagebox-chart.yaml- KOTS HelmChart CR with template functionsapplications/storagebox/kots/kots-config.yaml- Admin console config items for Cassandraapplications/storagebox/development-values.yaml- Development config values
Recommended Replacement: K8ssandra Operator
k8ssandra-operator is the recommended replacement:
- The Apache Cassandra community has coalesced around K8ssandra as the standard Kubernetes operator
- Provides automated repairs (Reaper), backups (Medusa), and monitoring out of the box
- Supports multi-region/multi-cluster deployments
- Actively maintained (latest release: v1.29.0, November 2025)
- Uses CassandraDatacenter CRDs for declarative management
- The underlying cass-operator is the community-endorsed operator for Cassandra on K8s
Alternative Options
| Alternative | Pros | Cons |
|---|---|---|
| K8ssandra Operator (recommended) | Full-featured, community standard, repairs/backups/monitoring | Operator installation required |
| ScyllaDB Operator | C++ rewrite of Cassandra, much better performance | Different database engine, CQL-compatible but not identical |
| DataStax cass-operator (standalone) | Simpler, single-DC focused | Development migrated to K8ssandra; less features |
Migration Considerations
Four-Way Contract (CRITICAL)
The storagebox app maintains a strict contract between development-values.yaml, kots-config.yaml, storagebox-chart.yaml, and charts/storagebox/values.yaml. All four files must be updated in sync. See applications/storagebox/CLAUDE.md for the full contract specification.
Architecture Change
- The current approach uses Cassandra as a subchart dependency in Chart.yaml
- K8ssandra would shift to an operator pattern where:
- The k8ssandra-operator is installed as an EC extension (similar to how CNPG and MinIO operators are already installed in
kots/ec.yaml) - A
K8ssandraClusterCR is created via a Helm template (similar totemplates/postgres-db.yaml) - This aligns with the existing pattern in storagebox for PostgreSQL (CNPG) and MinIO (operator)
- The k8ssandra-operator is installed as an EC extension (similar to how CNPG and MinIO operators are already installed in
Container Image Replacements
| Current Bitnami Image | Replacement |
|---|---|
bitnami/cassandra |
docker.io/cassandra (official Apache Cassandra image) |
bitnami/os-shell |
docker.io/busybox or remove if K8ssandra handles init |
bitnami/cassandra-exporter |
Integrated with K8ssandra monitoring or docker.io/criteord/cassandra_exporter |
TLS Configuration
Storagebox supports three Cassandra TLS modes. K8ssandra also supports TLS via cert-manager integration (cert-manager is already deployed as an EC extension in storagebox). This should simplify the TLS configuration.
Scope of Work
- Add k8ssandra-operator to
kots/ec.yamlas an EC extension - Replace Cassandra subchart dependency with a
K8ssandraClusterCR template - Update
values.yamlwith K8ssandra-compatible configuration structure - Update KOTS config (
kots-config.yaml) for any changed user-facing options - Update
storagebox-chart.yamlHelmChart CR to match new values structure - Update
development-values.yamlto match - Replace Bitnami container image references
- Update README and CLAUDE.md documentation
- Test with
make test-cycle