Vai al contenuto principale
Versione: 3.0.0-alpha (Diátaxis)

Riferimento API ClickHouse

Questo riferimento descrive in dettaglio l'utilizzo di ClickHouse su Hikube, sia in configurazione semplice che distribuita con shard e repliche.


Struttura di Base

Risorsa Clickhouse

Esempio di configurazione YAML

apiVersion: apps.cozystack.io/v1alpha1
kind: ClickHouse
metadata:
name: clickhouse-name
spec:

Parametri

Parametri Comuni

ParametroTipoDescrizionePredefinitoRichiesto
replicasintNumber of ClickHouse replicas2Si
shardsintNumber of ClickHouse shards1Si
resourcesobjectExplicit CPU and memory configuration for each replica. Se vuoto, viene applicato resourcesPreset{}No
resources.cpuquantityCPU available to each replicanullNo
resources.memoryquantityMemory (RAM) available to each replicanullNo
resourcesPresetstringDefault sizing preset (nano, micro, small, medium, large, xlarge, 2xlarge)"small"Si
sizequantityPersistent Volume Claim size, available for application data10GiSi
storageClassstringStorageClass used to store the data""No

Esempio di configurazione YAML

clickhouse.yaml
replicas: 2
shards: 1
resources:
cpu: 4000m
memory: 4Gi
resourcesPreset: small
size: 20Gi
storageClass: replicated

Parametri specifici dell'applicazione

ParametroTipoDescrizionePredefinitoRichiesto
logStorageSizequantitySize of Persistent Volume for logs2GiNo
logTTLintTTL (expiration time) for query_log and query_thread_log15No
usersmap[string]objectUsers configuration{...}No
users[name].passwordstringPassword for the usernullSi
users[name].readonlyboolUser is readonly, default is falsenullNo

Esempio di configurazione YAML

clickhouse.yaml
logStorageSize: 5Gi
logTTL: 30
users:
analyst:
password: analyst123
readonly: true
admin:
password: adminStrongPwd

Parametri di backup

ParametroTipoDescrizionePredefinitoRichiesto
backupobjectBackup configuration{}No
backup.enabledboolEnable regular backupsfalseNo
backup.s3RegionstringAWS S3 region where backups are storedus-east-1No
backup.s3BucketstringS3 bucket used for storing backupss3.example.org/clickhouse-backupsNo
backup.schedulestringCron schedule for automated backups"0 2 * * *"No
backup.cleanupStrategystringRetention strategy for cleaning up old backups"--keep-last=3 --keep-daily=3 --keep-within-weekly=1m"No
backup.s3AccessKeystringAccess key for S3, used for authentication<your-access-key>Si
backup.s3SecretKeystringSecret key for S3, used for authentication<your-secret-key>Si
backup.resticPasswordstringPassword for Restic backup encryption<password>Si

Esempio di configurazione YAML

clickhouse.yaml
backup:
enabled: true
s3Region: eu-central-1
s3Bucket: backups.hikube.clickhouse
schedule: "0 3 * * *"
cleanupStrategy: "--keep-last=5 --keep-daily=7 --keep-weekly=4"
s3AccessKey: "<your-access-key>"
s3SecretKey: "<your-secret-key>"
resticPassword: "<password>"

Parametri di ClickHouse Keeper

ParametroTipoDescrizionePredefinitoRichiesto
clickhouseKeeperobjectClickHouse Keeper configuration{}No
clickhouseKeeper.enabledboolDeploy ClickHouse Keeper for cluster coordinationtrueSi
clickhouseKeeper.sizequantityPersistent Volume Claim size, available for application data1GiSi
clickhouseKeeper.resourcesPresetstringDefault sizing preset (nano, micro, small, medium, large, xlarge, 2xlarge)microSi
clickhouseKeeper.replicasintNumber of Keeper replicas3Si

Esempio di configurazione YAML

clickhouse.yaml
clickhouseKeeper:
enabled: true
replicas: 3
resourcesPreset: medium
size: 5Gi

resources e resourcesPreset

Il campo resources permette di definire esplicitamente la configurazione CPU e memoria di ogni replica ClickHouse. Se questo campo e lasciato vuoto, viene utilizzato il valore del parametro resourcesPreset.

Esempio di configurazione YAML

clickhouse.yaml
resources:
cpu: 4000m
memory: 4Gi

⚠️ Attenzione: se resources e definito, il valore di resourcesPreset viene ignorato.

Preset nameCPUMemoria
nano250m128Mi
micro500m256Mi
small1512Mi
medium11Gi
large22Gi
xlarge44Gi
2xlarge88Gi

Esempi Completi

Cluster di Produzione

clickhouse-production.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: ClickHouse
metadata:
name: production
spec:
replicas: 3
shards: 2
resources:
cpu: 4000m
memory: 8Gi
size: 100Gi
storageClass: replicated

logStorageSize: 10Gi
logTTL: 30

clickhouseKeeper:
enabled: true
replicas: 3
resourcesPreset: small
size: 5Gi

users:
admin:
password: SecureAdminPassword
analyst:
password: SecureAnalystPassword
readonly: true

backup:
enabled: true
schedule: "0 3 * * *"
cleanupStrategy: "--keep-last=7 --keep-daily=7 --keep-weekly=4"
s3Region: eu-central-1
s3Bucket: s3.hikube.cloud/clickhouse-backups
s3AccessKey: your-access-key
s3SecretKey: your-secret-key
resticPassword: SecureResticPassword

Cluster di Sviluppo

clickhouse-development.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: ClickHouse
metadata:
name: development
spec:
replicas: 1
shards: 1
resourcesPreset: nano
size: 10Gi

logStorageSize: 2Gi
logTTL: 7

clickhouseKeeper:
enabled: true
replicas: 1
resourcesPreset: nano
size: 1Gi

users:
dev:
password: devpassword

Buone Pratiche
  • Keeper in numero dispari: distribuite sempre 3 o 5 repliche Keeper per garantire il quorum (maggioranza necessaria per l'elezione del leader)
  • logTTL: regolate la durata di retention dei log di sistema (query_log, query_thread_log) per evitare l'accumulo di dati inutili
  • Shard vs repliche: usate gli shard per distribuire i dati orizzontalmente (più capacità) e le repliche per la ridondanza (più disponibilità)
  • Utente readonly: create un utente in sola lettura per gli strumenti di analisi e reporting
Attenzione
  • Le cancellazioni sono irreversibili: la cancellazione di una risorsa ClickHouse comporta la perdita definitiva dei dati se nessun backup è configurato
  • Modifica degli shard: modificare il numero di shard su un cluster esistente può comportare una ridistribuzione complessa dei dati
  • Keeper e quorum: con meno di 3 Keeper, il cluster non può mantenere il quorum in caso di guasto di un nodo