Vai al contenuto principale
Versione: 2.0.2

Référence API ClickHouse

Cette référence détaille l’utilisation de ClickHouse sur Hikube, que ce soit en configuration simple ou distribuée avec shards et réplicas.


Structure de Base

Ressource Clickhouse

Exemple de configuration YAML

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

Paramètres

Paramètres Communs

ParamètreTypeDescriptionDéfautRequis
replicasintNumber of ClickHouse replicas2Oui
shardsintNumber of ClickHouse shards1Oui
resourcesobjectExplicit CPU and memory configuration for each replica. Si vide, resourcesPreset est appliqué{}Non
resources.cpuquantityCPU available to each replicanullNon
resources.memoryquantityMemory (RAM) available to each replicanullNon
resourcesPresetstringDefault sizing preset (nano, micro, small, medium, large, xlarge, 2xlarge)"small"Oui
sizequantityPersistent Volume Claim size, available for application data10GiOui
storageClassstringStorageClass used to store the data""Non

Exemple de configuration YAML

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

Paramètres d'application spécifique

ParamètreTypeDescriptionDéfautRequis
logStorageSizequantitySize of Persistent Volume for logs2GiNon
logTTLintTTL (expiration time) for query_log and query_thread_log15Non
usersmap[string]objectUsers configuration{...}Non
users[name].passwordstringPassword for the usernullOui
users[name].readonlyboolUser is readonly, default is falsenullNon

Exemple de configuration YAML

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

Paramètres de backup

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

Exemple de configuration 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>"

Paramètres de Clickhouse keeper

ParamètreTypeDescriptionDéfautRequis
clickhouseKeeperobjectClickHouse Keeper configuration{}Non
clickhouseKeeper.enabledboolDeploy ClickHouse Keeper for cluster coordinationtrueOui
clickhouseKeeper.sizequantityPersistent Volume Claim size, available for application data1GiOui
clickhouseKeeper.resourcesPresetstringDefault sizing preset (nano, micro, small, medium, large, xlarge, 2xlarge)microOui
clickhouseKeeper.replicasintNumber of Keeper replicas3Oui

Exemple de configuration YAML

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

resources et resourcesPreset

Le champ resources permet de définir explicitement la configuration CPU et mémoire de chaque réplique ClickHouse.
Si ce champ est laissé vide, la valeur du paramètre resourcesPreset est utilisée.

Exemple de configuration YAML

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

⚠️ Attention : si resources est défini, la valeur de resourcesPreset est ignorée.

Preset nameCPUMémoire
nano250m128Mi
micro500m256Mi
small1512Mi
medium11Gi
large22Gi
xlarge44Gi
2xlarge88Gi

Exemples Complets

Cluster de Production

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 de Développement

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

Bonnes Pratiques
  • Keeper en nombre impair : déployez toujours 3 ou 5 réplicas Keeper pour garantir le quorum (majorité nécessaire pour l'élection du leader)
  • logTTL : ajustez la durée de rétention des logs système (query_log, query_thread_log) pour éviter l'accumulation de données inutiles
  • Shards vs réplicas : utilisez les shards pour distribuer les données horizontalement (plus de capacité) et les réplicas pour la redondance (plus de disponibilité)
  • Utilisateur readonly : créez un utilisateur en lecture seule pour les outils d'analyse et de reporting
Attention
  • Les suppressions sont irréversibles : la suppression d'une ressource ClickHouse entraîne la perte définitive des données si aucune sauvegarde n'est configurée
  • Changement de shards : modifier le nombre de shards sur un cluster existant peut entraîner une redistribution complexe des données
  • Keeper et quorum : avec moins de 3 Keeper, le cluster ne peut pas maintenir le quorum en cas de panne d'un nœud