ClickHouse Operator 是一个生产级的 Kubernetes Operator,用于管理 ClickHouse 数据库集群,提供经济高效的实时分析应用所需的稳健功能。Bitnami Helm Chart 为 ClickHouse Operator 提供了便捷的部署和配置方式,支持在 Kubernetes 集群中快速搭建生产就绪的 ClickHouse 管理环境。
使用 Helm 快速安装 ClickHouse Operator(默认配置):
consolehelm install my-release oci://registry-1.docker.io/bitnamicharts/clickhouse-operator
指定仓库和版本
替换仓库地址和版本标签(如使用私有仓库):
consolehelm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/clickhouse-operator --version 1.0.0
通过 values 文件配置
创建自定义 values.yaml 文件覆盖默认配置:
yaml# values.yaml 示例 resources: requests: cpu: 500m memory: 512Mi limits: cpu: 1000m memory: 1Gi metrics: enabled: true
安装时指定配置文件:
consolehelm install my-release oci://registry-1.docker.io/bitnamicharts/clickhouse-operator -f values.yaml
查看部署状态
检查 Deployment 和 Pod 状态:
consolekubectl get deployments kubectl get pods
卸载
卸载 Helm 发布:
consolehelm uninstall my-release
ClickHouse Operator 支持多种配置方式:
configuration、chiTemplate、chkTemplate 参数生成配置existingConfigmap、existingChiTemplatesConfigmap 或 existingChkTemplatesConfigmap 指定已存在的 ConfigMapoverrideConfiguration 参数覆盖默认配置值详细配置选项参考 ***文档。
添加额外环境变量:通过 extraEnvVars 注入环境变量:
yamlextraEnvVars: - name: LOG_LEVEL value: "error" - name: OPERATOR_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace
通过 ConfigMap/Secret 注入:使用 extraEnvVarsCM 或 extraEnvVarsSecret 指定包含环境变量的 ConfigMap/Secret 名称。
资源请求与限制:直接配置 resources 参数:
yamlresources: requests: cpu: 1000m memory: 2Gi limits: cpu: 2000m memory: 4Gi
资源预设:通过 resourcesPreset 使用预设配置(如 small、medium、large),预设定义参考 bitnami/common chart(生产环境建议自定义资源配置而非依赖预设)。
启用 Prometheus 监控:
yamlmetrics: enabled: true serviceMonitor: enabled: true # 如需集成 Prometheus Operator,启用此项 namespace: monitoring # 指定 Prometheus 所在命名空间 interval: 15s # 抓取间隔
监控集成要求集群中已部署 Prometheus 或 Prometheus Operator,推荐使用 Bitnami Prometheus Helm Chart。
添加 Sidecar 容器(如日志收集器):
yamlsidecars: - name: log-exporter image: busybox:latest command: ["/bin/sh", "-c", "tail -f /var/log/clickhouse-operator/*.log"] volumeMounts: - name: logs mountPath: /var/log/clickhouse-operator
添加 Init 容器(如配置初始化):
yamlinitContainers: - name: init-config image: busybox:latest command: ["/bin/sh", "-c", "echo 'init config' > /init/config.txt"] volumeMounts: - name: init-volume mountPath: /init
通过 affinity 参数自定义 Pod 亲和性:
yamlaffinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app.kubernetes.io/name operator: In values: - clickhouse-operator topologyKey: "kubernetes.io/hostname"
或使用预设亲和性配置:
yamlpodAntiAffinityPreset: "soft" # 软反亲和性,尽量避免同节点部署 nodeAffinityPreset: type: "required" key: "node-role.kubernetes.io/worker" values: ["true"]
通过 extraDeploy 参数部署 ClickHouse 集群和 Keeper 集群:
yamlextraDeploy: # ClickHouse Keeper 集群部署 - apiVersion: clickhouse-keeper.altinity.com/v1 kind: ClickHouseKeeperInstallation metadata: name: chk-cluster spec: defaults: storageManagement: provisioner: Operator templates: podTemplate: keeper-pod dataVolumeClaimTemplate: keeper-volume configuration: clusters: - name: main layout: replicasCount: 3 # 3副本高可用配置 templates: podTemplates: - name: keeper-pod spec: containers: - name: clickhouse-keeper image: docker.io/bitnami/clickhouse-keeper:latest volumeMounts: - name: keeper-volume mountPath: /bitnami/clickhouse-keeper volumeClaimTemplates: - name: keeper-volume spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 10Gi # ClickHouse 集群部署 - apiVersion: clickhouse.altinity.com/v1 kind: ClickHouseInstallation metadata: name: ch-cluster spec: defaults: storageManagement: provisioner: Operator templates: podTemplate: ch-pod dataVolumeClaimTemplate: ch-volume configuration: clusters: - name: analytics layout: replicasCount: 2 # 2副本集群 zookeeper: nodes: - host: chk-cluster-main # 关联 Keeper 集群服务 port: 2181 templates: podTemplates: - name: ch-pod spec: containers: - name: clickhouse image: docker.io/bitnami/clickhouse:latest volumeMounts: - name: ch-volume mountPath: /bitnami/clickhouse volumeClaimTemplates: - name: ch-volume spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 50Gi
| 参数名 | 描述 | 默认值 |
|---|---|---|
global.imageRegistry | 全局 Docker 镜像仓库地址 | "" |
global.imagePullSecrets | 全局镜像拉取密钥列表 | [] |
global.defaultStorageClass | 全局默认存储类 | "" |
global.security.allowInsecureImages | 是否允许不安全镜像(跳过校验) | false |
global.compatibility.openshift.adaptSecurityContext | 是否适配 OpenShift 安全上下文(auto/force/disabled) | auto |
global.compatibility.omitEmptySeLinuxOptions | 移除空的 seLinuxOptions 配置 | false |
| 参数名 | 描述 | 默认值 |
|---|---|---|
kubeVersion | 覆盖 Kubernetes 版本 | "" |
apiVersions | 覆盖 Kubernetes API 版本 | [] |
nameOverride | 覆盖资源名称前缀 | "" |
fullnameOverride | 完全覆盖资源全名 | "" |
namespaceOverride | 覆盖命名空间 | "" |
commonLabels | 全局标签 | {} |
commonAnnotations | 全局注解 | {} |
clusterDomain | Kubernetes 集群域名 | cluster.local |
extraDeploy | 额外部署的 Kubernetes 资源清单 | [] |
| 参数名 | 描述 | 默认值 |
|---|---|---|
image.registry | Operator 镜像仓库 | REGISTRY_NAME |
image.repository | Operator 镜像仓库路径 | REPOSITORY_NAME/clickhouse-operator |
image.digest | 镜像摘要(覆盖标签) | "" |
image.pullPolicy | 镜像拉取策略 | IfNotPresent |
image.pullSecrets | 镜像拉取密钥 | [] |
clickHouseImage.registry | ClickHouse 镜像仓库 | REGISTRY_NAME |
clickHouseImage.repository | ClickHouse 镜像路径 | REPOSITORY_NAME/clickhouse |
keeperImage.registry | ClickHouse Keeper 镜像仓库 | REGISTRY_NAME |
keeperImage.repository | ClickHouse Keeper 镜像路径 | REPOSITORY_NAME/clickhouse-keeper |
auth.username | Operator 认证用户名 | clickhouse_operator |
auth.password | Operator 认证密码 | "" |
auth.existingSecret | 包含认证信息的现有 Secret 名称 | "" |
ipFamily.enableIpv4 | 是否启用 IPv4 | true |
注:完整参数列表请参考 ***文档
自 2025 年 8 月 28 日起,Bitnami 将升级其公共镜像目录,推出 Bitnami Secure Images 计划,主要变更包括:
docker.io/bitnamilegacy 仓库,且不再更新更多详情请参考 Bitnami Secure Images 公告。
global.compatibility.openshift.adaptSecurityContext: force 强制适配 OpenShift 安全上下文来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429