bitnamicharts/clickhouse-operatorClickHouse 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 安全上下文manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务