Skip to content
Release Radar

ClickHouse Operator

Databases

Official Kubernetes operator for ClickHouse

v0.0.867 days after v0.0.7
View on GitHub

Part of ClickHouse

Release history

v0.0.8

CompareGitHub

Install using the manifest (server-side apply)

kubectl apply --server-side --force-conflicts -f https://github.com/ClickHouse/clickhouse-operator/releases/download/v0.0.8/clickhouse-operator.yaml

For clusters restricted to client-side apply, use the description-stripped CRDs:

kubectl apply -f https://github.com/ClickHouse/clickhouse-operator/releases/download/v0.0.8/clickhouse-operator-stripped-crds.yaml

CRDs only

kubectl apply --server-side --force-conflicts -f https://github.com/ClickHouse/clickhouse-operator/releases/download/v0.0.8/clickhouse-operator-crds.yaml

Client-side apply variant: clickhouse-operator-crds-stripped.yaml

Install using helmchart

helm install clickhouse-operator oci://ghcr.io/clickhouse/clickhouse-operator-helm \
   --version=0.0.8 \
   --create-namespace \
   -n clickhouse-operator-system

Changelog

πŸš€ Features

  • feat: add internal Services for interserver and operator traffic
  • feat: gate client traffic until replica initialization completes
  • feat: support in-cluster network policies generation
  • feat: add periodic resync, bound ClickHouse calls, fix reconcile flow
  • feat: add topologyMinDomains opt-in field to force AZ spreading with Karpenter/Cluster Autoscaler
  • feat: add spec.settings.extraReloadableConfig
  • feat: support startupProbe configuration
  • feat: concurrent reconciles and pause-reconciliation annotation

πŸ› Fixes

  • fix: wrong defaulting of setting enableDatabaseSync to false
  • fix: probe job oom kill with transparent_hugepage=true
  • fix(helm): derive metrics Certificate dnsNames from resourceName helper
  • fix: skip reconcile while the cluster is being deleted
  • fix: Use the correct grants.query[] form over grants[].query
  • fix(webhook): warn when extraUsersConfig carries server-tree sections
  • fix: probe job with readonly rootfs, make it default
  • fix(sync): recover a replica whose Keeper registration outlived its volume
  • fix: bound log growth with saner logger and system log table defaults

πŸ§ͺ Tests

  • test: update ch version in tests, multiple changes for e2e stabilizat…
  • test: retain e2e failure diagnostics and reports
  • test: add e2e sharding planning step to equally distribute test spec between jobs
  • test: improve e2e failure diagnostics report
  • test: upgrade CH versions in tests, ensure e2e tests use pinned/prepulled images
  • test: unify e2e utils across e2e/deployment/openshift tests
  • test: add max CRD size check, add version probe job retries
  • test: enforce NetworkPolicies in e2e and deploy tests
  • test: add CR builders, unify suite bootstrap, gate waits on Healthy
  • test: verify that controllers do not change resource on a settled clusters
  • test: enable race detector for e2e, assert no leaked goroutines after suites
  • test(e2e): continuous database invariant checks

πŸ“š Docs

  • docs: systemLogsTTLDays defaults on new clusters only; Keeper raft_logs_level follows logger.level

🧹 Chores

  • ci: bump actions/setup-go from 6 to 7 in the github-actions group
  • chores: bump the go-modules group with 18 updates
  • chores: refactor replica state
  • chores: bump the go-modules group with 31 updates
  • ci: bump docker/login-action from 4.4.0 to 4.5.2 in the github-actions group
  • chores: bump the go-modules group with 5 updates
  • ci: bump the github-actions group with 4 updates
  • chores: bump the go-modules group with 16 updates
  • ci: bump the github-actions group with 4 updates
  • chores: bump the go-modules group with 10 updates
  • ci: bump the github-actions group with 2 updates
  • chores: bump google.golang.org/protobuf from 1.36.12-0.20260120151049-f2248ac996af to 1.36.12
  • chore: add role label to operator manager pods
  • chores: bump the go-modules group with 24 updates
  • ci: bump the github-actions group with 2 updates
  • chores: update dependencies, tooling and test versions
  • chores: modernize codebase with go fix (Go 1.26/1.27 idioms)
  • ci: bump the github-actions group with 4 updates
  • chores: bump the go-modules group with 11 updates
  • ci: auto-regenerate manifests on dependabot bumps
  • chores: bump the go-modules group across 1 directory with 38 updates
  • ci: bump the github-actions group across 1 directory with 3 updates
  • chores: bump the go-modules group with 8 updates
  • ci: bump the github-actions group with 3 updates
  • chores: extract app composition root and settings from cmd/main

πŸ“¦ Uncategorized

  • Reject non-positive version update intervals

Install using the manifest (server-side apply)

kubectl apply --server-side --force-conflicts -f https://github.com/ClickHouse/clickhouse-operator/releases/download/v0.0.7/clickhouse-operator.yaml

For clusters restricted to client-side apply, use the description-stripped CRDs:

kubectl apply -f https://github.com/ClickHouse/clickhouse-operator/releases/download/v0.0.7/clickhouse-operator-stripped-crds.yaml

CRDs only

kubectl apply --server-side --force-conflicts -f https://github.com/ClickHouse/clickhouse-operator/releases/download/v0.0.7/clickhouse-operator-crds.yaml

Client-side apply variant: clickhouse-operator-crds-stripped.yaml

Install using helmchart

helm install clickhouse-operator oci://ghcr.io/clickhouse/clickhouse-operator-helm \
   --version=0.0.7 \
   --create-namespace \
   -n clickhouse-operator-system

Changelog

πŸš€ Features

  • feat: support encrypted storage policy generation

πŸ› Fixes

  • fix: don't drop a non-empty Atomic default database during Replicated conversion
  • fix: reduce probe job memory footprint
  • fix: compare Keeper replica versions numerically, not lexicographically
  • fix: default probe ports and probe-failure rollout gating
  • fix: hide secrets from preprocessed config
  • fix: use resourceName helper for webhook-server-cert secret name

πŸ“š Docs

  • docs: extract storage related documentation as a dedicated guide
  • docs: network policies
  • docs: document Kubernetes events emitted by the operator
  • docs: clarify topologyZoneKey and nodeHostnameKey semantics

🧹 Chores

  • ci: fix changelog categories generation
  • chores: reduce amount of reconciles, cache CH connections between reconciles
  • ci: add Dependabot config for scheduled version updates
  • ci: bump the github-actions group with 3 updates
  • chores: bump the go-modules group with 50 updates
  • chores: bump the go-modules group with 22 updates
  • chores: bump the go-modules group with 5 updates
  • chores: bump the go-modules group with 15 updates
  • chores: bump github.com/go-openapi/jsonreference from 0.21.6 to 1.0.0
  • Fix markdown parsing error

Install using the manifest (server-side apply)

kubectl apply --server-side --force-conflicts -f https://github.com/ClickHouse/clickhouse-operator/releases/download/v0.0.6/clickhouse-operator.yaml

For clusters restricted to client-side apply, use the description-stripped CRDs:

kubectl apply -f https://github.com/ClickHouse/clickhouse-operator/releases/download/v0.0.6/clickhouse-operator-stripped-crds.yaml

CRDs only

kubectl apply --server-side --force-conflicts -f https://github.com/ClickHouse/clickhouse-operator/releases/download/v0.0.6/clickhouse-operator-crds.yaml

Client-side apply variant: clickhouse-operator-crds-stripped.yaml

Install using helmchart

helm install clickhouse-operator oci://ghcr.io/clickhouse/clickhouse-operator-helm \
   --version=0.0.6 \
   --create-namespace \
   -n clickhouse-operator-system

Changelog

πŸš€ Features

  • feat: add JBOD additional PVC support for ClickHouse replicas
  • feat(release): Create PR to community-operators
  • feat: allow exposing additional ports on ClickHouse service and pods
  • feat: reject additionalPorts that collide with operator-managed ports
  • feat: add ExternalSecret print column to ClickHouseCluster
  • feat(keeper): smart-default maxUnavailable=1 for single-replica PDB
  • feat: add prometheus port to the keeper headless service
  • feat: warnings as a kubernetes events
  • feat: add registry option to helm charts
  • feat: add crds as a separate release artifact, build stripped crds to fit client-side apply
  • feat: support distroless images in version probe
  • feat: do not set caBundle from certificate by default, only with explicit setting
  • Don't restart pods on some config changes

πŸ› Fixes

  • fix: strip owned resources names to fit in limits
  • fix: override resources as whole, use the same req/limit for memory in default
  • fix: track users reload separetely of server config
  • fix: paginate all tags to build olm catalog

πŸ§ͺ Tests

  • test: automatic e2e tests split between parallel jobs
  • test: fix docs linting CI jobs
  • test: add openshift e2e smoke test
  • test: add upgrade tests to verify operator forward compatibility
  • test: fix flaky operator-upgrade keeper writes
  • test: use latest supported ClickHouse versions in tests

πŸ“š Docs

  • docs: add monitoring & observability guide
  • docs: prefix internal ClickHouse doc links with /core
  • docs: document spec.additionalPorts and reserved-port validation
  • docs: document upgradeChannel and version probe
  • docs: document Pod disruption budget configuration
  • docs: document spec.settings.logger server logging configuration
  • docs: scaling guide
  • docs: tls configuration
  • docs: fix docs links and CI, fetch mintlify changes, actualize some docs and comments
  • docs: update AGENTS.md, do not run tests on pure documentation changes
  • docs: document spec.clusterDomain in configuration guide
  • docs: expand default user password configuration
  • Docs/external secret config
  • Docs: add Mintlify frontmatter to docs pages

🧹 Chores

  • chore: bump dependencies, enable clickhouse client linter, fix new linters issues
  • build: publish per-commit bundle + catalog on 'fast' channel
  • ci: fix paths-filter so docs-only changes actually skip CI
  • chores: update dependencies, actions, linter config, generate helm chart with latest kubebuilder
  • ci: bypass v1 registries.conf in opm catalog render

Install using the manifest

kubectl apply -f https://github.com/ClickHouse/clickhouse-operator/releases/download/v0.0.5/clickhouse-operator.yaml

Install using helmchart

helm install clickhouse-operator oci://ghcr.io/clickhouse/clickhouse-operator-helm \
   --version=0.0.5 \
   --create-namespace \
   -n clickhouse-operator-system

Changelog

πŸš€ Features

  • Added metrics logs so the built-in dashboard displays proper values. Otherwise, it feels broken at cluster installation.
  • feat: support keeper on a different namespace
  • feat: add clickhouse-cluster helm chart
  • feat: correctly handle IPv4-only envs
  • feat(helm): Regenerate helm chart with latest kubebuilder
  • feat: drop all capabilities by default, remove restricted security settings in OpenShift installations

πŸ› Fixes

  • fix: cache version probe result to prevent reconciliation deadlock
  • fix: respect user-provided container capabilities under PodSecurity restricted
  • fix: set Healthy/Ready to Unknown if pods are running, but the operator can't connect to the server
  • fix: requeue reconciliation after replica update

πŸ“¦ Uncategorized

  • test: support suppressing crd-comptat-check
  • Docs: restructure for Mintlify sync workflow

Install using the manifest

kubectl apply -f https://github.com/ClickHouse/clickhouse-operator/releases/download/v0.0.4/clickhouse-operator.yaml

Install using helmchart

helm install clickhouse-operator oci://ghcr.io/clickhouse/clickhouse-operator-helm \
   --version=0.0.4 \
   --create-namespace \
   -n clickhouse-operator-system

Changelog

πŸš€ Features

  • feat: allow to disable PDB management
  • feat(helm): allow specifying operator image digest
  • feat: apply pod/container overrides via strategic merge patch
  • feat: support more container/pod fields overrides, enchance default security context and probes
  • feat: add default resource for version probe job, recreate it only on significant changes
  • feat: add version probe job overrides
  • feat: named collections in keeper with key encryption
  • feat: support externally managed secret

πŸ“¦ Uncategorized

  • test: added functional tests for ClickHouse commander
  • fix: image tag in installer, changelog categories, main build images versions
  • fix(docs): .containerTemplate.resources docstring
  • fix(helm): support not secure metrics in helmchart servicemonitor, fix serverName
  • Bump google.golang.org/grpc from 1.79.1 to 1.79.3
  • fix(reconcile): refactor pvc reconcillation, add conflict retries
  • test: update CH test versions to the latest supported releases
  • fix: calcucation of the supported versions
  • test(e2e):Run controller in e2e tests process, dump namespace obejcts and pod logs on failure.
  • chores: update dependecies, fix new linting issues, apply new golang syntax everywhere, regenerate helmchart with new generator
  • Bump go.opentelemetry.io/otel/sdk from 1.42.0 to 1.43.0
  • chores: unify extra config behaviour, mount keeper extra config as separate cofile
  • chore: add CI runner disk space cleanup, fix flaky tests
  • ci: package and push helm chart in release-main workflow
  • chores: add AGENTS.md
  • build: version local dependencies in Makefile
  • chores: split reconcilerBase on more specialized helpers
  • chores: refactor reconcillation pipeline supporting blocking without error
  • test: pre pull clickhouse images in e2e test, test campatible versions only with manifests installation
  • chores: update dependencies

Install using the manifest

kubectl apply -f https://github.com/ClickHouse/clickhouse-operator/releases/download/v0.0.3/clickhouse-operator.yaml

Install using helmchart

helm install clickhouse-operator oci://ghcr.io/clickhouse/clickhouse-operator-helm \
   --version=0.0.3 \
   --create-namespace \
   -n clickhouse-operator-system

Changelog

πŸ“¦ Uncategorized

  • Fix WATCH_NAMESPACE typo in helm chart
  • Set default bundle channel to stable. Set correct image annotation in bundle.
  • Add explicit default cluster defenition with internal_replication=1 and generated cluster secret
  • fix wrong value key and bad spacing
  • Helmchart enhancements
  • Collect all e2e test runs in single report
  • Fix bool defaulting logic, make logToFile pointer to distinguish false and not set
  • Add crd-schema-checker to prevent backward incompatible changes
  • Generate api reference
  • fix rows.Err handling in commands
  • chore add rows.Err check in tests
  • Bump go.opentelemetry.io/otel/sdk from 1.39.0 to 1.40.0
  • Add grant option to default user
  • feat: Add configurable PodDisruptionBudget to ClickHouseCluster CRD
  • Fix spec modification issue, add spec fuzzing tests. Relax default anti-affinity rules.
  • support pre-release kubeversion
  • Add server version in the Status. Add warnings on replica version divergence.
  • Unify replica resources logic. Delete Pod in error state if STS stuck
  • chore: make error and log messages more consistent, use query parameters, bump ch version for tests, pin e2e k8s version, add action linter
  • feat: Add version upgrade availability checks

Install using the manifest

kubectl apply -f https://github.com/ClickHouse/clickhouse-operator/releases/download/v0.0.2/clickhouse-operator.yaml

Install using helmchart

helm install clickhouse-operator oci://ghcr.io/clickhouse/clickhouse-operator-helm \
   --version=0.0.2 \
   --create-namespace \
   -n clickhouse-operator-system

Changelog

πŸ“¦ Uncategorized

  • Lower kubernetes version to v1.30+
  • chore: Fix Go mod to be correct
  • Remove commit status checks and minor README changes
  • fix: correct array index in logger toFields to prevent panic
  • fix: use correct separator for container image digest references
  • fix: add nil checks before dereferencing Shards pointers in webhook
  • Bump github.com/cert-manager/cert-manager from 1.19.2 to 1.19.3
  • Add Pod and Container security context overrides
  • feat: add clusterDomain field to support custom Kubernetes DNS domains
  • Adjust default health probes paramenters. Fix clickhouse liveness probe
  • Add default AccessModes to data disk. Allow custom data disk mounts.
  • fix: helm chart use wrong values field for manager container security…
  • Add build information to manger
  • Support all installModes, selection of watched namespaces
  • Upgrade go version to 1.26, upgrade dependecies and fix usage of recently deprecated APIs
  • Minimal k8s version

Install using the manifest

kubectl apply -f https://github.com/ClickHouse/clickhouse-operator/releases/download/v0.0.1/clickhouse-operator.yaml

Install using helmchart

helm install clickhouse-operator oci://ghcr.io/clickhouse/clickhouse-operator-helm \
   --version=0.0.1 \
   --create-namespace \
   -n clickhouse-operator-system

Changelog

  • no changes, initial release