clickhouse: Add S3 cold tier and additional replicas

This commit is contained in:
2026-07-06 09:52:15 +02:00
parent 5343526316
commit 35dd11d3a0
3 changed files with 49 additions and 35 deletions
@@ -1,2 +1,4 @@
clickhouse: clickhouse:
enabled: true enabled: true
s3:
enabled: true
+4 -2
View File
@@ -3,10 +3,11 @@ clickhouse:
autosync: true autosync: true
clusterName: clickhouse clusterName: clickhouse
keeperName: clickhouse-keeper keeperName: clickhouse-keeper
# Headless client service the operator creates: <clusterName>-clickhouse-headless
serviceName: clickhouse-clickhouse-headless serviceName: clickhouse-clickhouse-headless
storageClass: ceph-rbd
storage: 50Gi storage: 50Gi
keeperStorage: 5Gi keeperStorage: 5Gi
keeperReplicas: 3
resources: resources:
cpuRequest: "2" cpuRequest: "2"
memoryRequest: 4Gi memoryRequest: 4Gi
@@ -15,11 +16,12 @@ clickhouse:
user: default user: default
credentialsSecret: clickhouse-credentials credentialsSecret: clickhouse-credentials
credentialsKey: password credentialsKey: password
# Only used when S3-tiered storage is enabled in cluster.yaml.gotmpl (currently disabled).
s3: s3:
enabled: false
endpoint: "http://10.255.241.30:30080" endpoint: "http://10.255.241.30:30080"
bucket: clickhouse bucket: clickhouse
secret: clickhouse-s3 secret: clickhouse-s3
moveFactor: 0.2
ttl: ttl:
logs: 720h logs: 720h
traces: 336h traces: 336h
+43 -33
View File
@@ -7,53 +7,59 @@ clickhouse:
spec: spec:
shards: 1 shards: 1
replicas: 1 replicas: 1
podTemplate:
nodeHostnameKey: kubernetes.io/hostname
settings: settings:
defaultUserPassword: defaultUserPassword:
secret: secret:
name: {{ .Values.clickhouse.credentialsSecret }} name: {{ .Values.clickhouse.credentialsSecret }}
key: {{ .Values.clickhouse.credentialsKey }} key: {{ .Values.clickhouse.credentialsKey }}
# S3-tiered storage (hot on local PVC, cold on TOS). Disabled for now — re-enable # Single replica: no cross-replica database sync needed. The operator's sync also
# together with the containerTemplate.env block below and the s3 block in env.yaml.gotmpl. # breaks on the OTel-created (non-replicated) `otel` database. Revisit for multi-replica HA.
# extraConfig: enableDatabaseSync: false
# storage_configuration: {{- if .Values.clickhouse.s3.enabled }}
# disks: extraConfig:
# s3: storage_configuration:
# type: s3 disks:
# endpoint: {{ .Values.clickhouse.s3.endpoint }}/{{ .Values.clickhouse.s3.bucket }}/data/ s3:
# use_environment_credentials: true type: s3
# policies: endpoint: {{ .Values.clickhouse.s3.endpoint }}/{{ .Values.clickhouse.s3.bucket }}/data/
# tiered: use_environment_credentials: true
# volumes: policies:
# hot: tiered:
# disk: default volumes:
# cold: hot:
# disk: s3 disk: default
# move_factor: 0.2 cold:
# merge_tree: disk: s3
# storage_policy: tiered move_factor: {{ .Values.clickhouse.s3.moveFactor }}
merge_tree:
storage_policy: tiered
{{- end }}
containerTemplate: containerTemplate:
# Guarantee CPU via requests; no CPU limit so ClickHouse can burst across cores
# (a CPU limit throttles merges/queries).
resources: resources:
requests: requests:
cpu: {{ .Values.clickhouse.resources.cpuRequest }} cpu: {{ .Values.clickhouse.resources.cpuRequest }}
memory: {{ .Values.clickhouse.resources.memoryRequest }} memory: {{ .Values.clickhouse.resources.memoryRequest }}
limits: limits:
memory: {{ .Values.clickhouse.resources.memoryLimit }} memory: {{ .Values.clickhouse.resources.memoryLimit }}
# env: # S3 tiering credentials — re-enable with the storage_configuration block above. {{- if .Values.clickhouse.s3.enabled }}
# - name: AWS_ACCESS_KEY_ID env:
# valueFrom: - name: AWS_ACCESS_KEY_ID
# secretKeyRef: valueFrom:
# name: {{ .Values.clickhouse.s3.secret }} secretKeyRef:
# key: AWS_ACCESS_KEY_ID name: {{ .Values.clickhouse.s3.secret }}
# - name: AWS_SECRET_ACCESS_KEY key: AWS_ACCESS_KEY_ID
# valueFrom: - name: AWS_SECRET_ACCESS_KEY
# secretKeyRef: valueFrom:
# name: {{ .Values.clickhouse.s3.secret }} secretKeyRef:
# key: AWS_ACCESS_KEY_SECRET name: {{ .Values.clickhouse.s3.secret }}
key: AWS_SECRET_ACCESS_KEY
{{- end }}
dataVolumeClaimSpec: dataVolumeClaimSpec:
accessModes: accessModes:
- ReadWriteOnce - ReadWriteOnce
storageClassName: {{ .Values.clickhouse.storageClass }}
resources: resources:
requests: requests:
storage: {{ .Values.clickhouse.storage }} storage: {{ .Values.clickhouse.storage }}
@@ -63,10 +69,14 @@ keeper:
meta: meta:
name: {{ .Values.clickhouse.keeperName }} name: {{ .Values.clickhouse.keeperName }}
spec: spec:
replicas: 1 replicas: {{ .Values.clickhouse.keeperReplicas }}
podTemplate:
podDisruptionBudget:
maxUnavailable: 1
dataVolumeClaimSpec: dataVolumeClaimSpec:
accessModes: accessModes:
- ReadWriteOnce - ReadWriteOnce
storageClassName: {{ .Values.clickhouse.storageClass }}
resources: resources:
requests: requests:
storage: {{ .Values.clickhouse.keeperStorage }} storage: {{ .Values.clickhouse.keeperStorage }}