Skip to content

feat(clickhouse): add standalone ClickHouse chart + Keeper (ENT-3986)#63

Open
ixxeL2097 wants to merge 3 commits into
mainfrom
fspiers/ENT-3986/clickhouse-standalone-chart
Open

feat(clickhouse): add standalone ClickHouse chart + Keeper (ENT-3986)#63
ixxeL2097 wants to merge 3 commits into
mainfrom
fspiers/ENT-3986/clickhouse-standalone-chart

Conversation

@ixxeL2097

Copy link
Copy Markdown
Collaborator

Supersedes #62 (same content — that PR was auto-closed when its branch was renamed to carry the ENT-3986 identifier).

Closes ENT-3986.

What

Adds a ClickHouse chart to the fork, in two commits:

  1. Replicate upstream CloudPirates-io/helm-charts#1199 — byte-identical standalone ClickHouse chart on the cloudpirates common lib (v0.1.0).
  2. ClickHouse Keeper support — the missing piece so clustering / ReplicatedMergeTree / ON CLUSTER is testable.

ClickHouse Keeper extension

  • templates/keeper/: dedicated Keeper StatefulSet (per-pod server_id from the pod ordinal), Raft config ConfigMap, headless service (stable member DNS), client service (9181), opt-in PDB.
  • When keeper.enabled=true: ClickHouse is wired with <zookeeper>, a single-shard <remote_servers> cluster across the replicas, per-pod <macros> (POD_NAME), and <interserver_http_credentials>.
  • app.kubernetes.io/component (server/keeper) isolates the two workloads' selectors.
  • Opt-in (keeper.enabled: false by default → standalone, identical to upstream); replicaCount: 3 Raft quorum when enabled. Chart bumped to v0.2.0.

Validation

helm lint --strict ✅ · helm unittest ✅ (35 tests) · helm template with keeper enabled renders the Keeper StatefulSet, Raft config (correct DNS/ids) and the cluster wiring.

…replicated cluster)

Extends the replicated CloudPirates chart (PR CloudPirates-io#1199, standalone) with an opt-in
ClickHouse Keeper quorum so ReplicatedMergeTree / ON CLUSTER are testable:

- templates/keeper/{statefulset,configmap,headless-service,service,pdb}.yaml:
  dedicated Keeper StatefulSet (per-pod server_id from the pod ordinal), Raft
  config ConfigMap, headless service for stable member DNS, client service (9181).
- When keeper.enabled, wire ClickHouse: <zookeeper>, single-shard <remote_servers>
  across the replicas, per-pod <macros> (replica from POD_NAME), and
  <interserver_http_credentials> for replication.
- app.kubernetes.io/component (server/keeper) to isolate the two workloads' selectors.
- values: keeper.* (opt-in, replicaCount 3), cluster.name, clusterDomain,
  config.interserverHttpPort; regenerated values.schema.json; keeper unittest; v0.2.0.
@linear

linear Bot commented Jun 18, 2026

Copy link
Copy Markdown

ENT-3986

Allows Helm template expressions (e.g. {{ "{{ .Release.Namespace }}" }}) inside the
extra config snippets — needed to set a per-release S3 prefix on the storage disk.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant