Zum Hauptinhalt springen
Version: 3.0.0-alpha (Diátaxis)

API-Referenz ClickHouse

Diese Referenz beschreibt die Verwendung von ClickHouse auf Hikube, sowohl in einfacher als auch in verteilter Konfiguration mit Shards und Replikas.


Grundstruktur

ClickHouse-Ressource

YAML-Konfigurationsbeispiel

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

Parameter

Allgemeine Parameter

ParameterTypBeschreibungStandardErforderlich
replicasintAnzahl der ClickHouse-Replikas2Ja
shardsintAnzahl der ClickHouse-Shards1Ja
resourcesobjectExplizite CPU- und Speicherkonfiguration pro Replika. Wenn leer, wird resourcesPreset angewendet{}Nein
resources.cpuquantityVerfügbare CPU pro ReplikanullNein
resources.memoryquantityVerfügbarer Speicher (RAM) pro ReplikanullNein
resourcesPresetstringStandard-Dimensionierungsprofil (nano, micro, small, medium, large, xlarge, 2xlarge)"small"Ja
sizequantityPersistent Volume Claim-Größe für Anwendungsdaten10GiJa
storageClassstringStorageClass zur Datenspeicherung""Nein

YAML-Konfigurationsbeispiel

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

Anwendungsspezifische Parameter

ParameterTypBeschreibungStandardErforderlich
logStorageSizequantityGröße des persistenten Volumes für Logs2GiNein
logTTLintTTL (Ablaufzeit) für query_log und query_thread_log15Nein
usersmap[string]objectBenutzerkonfiguration{...}Nein
users[name].passwordstringPasswort des BenutzersnullJa
users[name].readonlyboolBenutzer ist schreibgeschützt, Standard ist falsenullNein

YAML-Konfigurationsbeispiel

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

Backup-Parameter

ParameterTypBeschreibungStandardErforderlich
backupobjectBackup-Konfiguration{}Nein
backup.enabledboolRegelmäßige Sicherungen aktivierenfalseNein
backup.s3RegionstringAWS S3-Region der Sicherungenus-east-1Nein
backup.s3BucketstringS3-Bucket für Sicherungens3.example.org/clickhouse-backupsNein
backup.schedulestringCron-Zeitplan für automatische Sicherungen"0 2 * * *"Nein
backup.cleanupStrategystringAufbewahrungsstrategie für alte Sicherungen"--keep-last=3 --keep-daily=3 --keep-within-weekly=1m"Nein
backup.s3AccessKeystringS3-Zugriffsschlüssel zur Authentifizierung<your-access-key>Ja
backup.s3SecretKeystringS3-Geheimschlüssel zur Authentifizierung<your-secret-key>Ja
backup.resticPasswordstringPasswort für Restic-Backup-Verschlüsselung<password>Ja

YAML-Konfigurationsbeispiel

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>"

ClickHouse Keeper-Parameter

ParameterTypBeschreibungStandardErforderlich
clickhouseKeeperobjectClickHouse Keeper-Konfiguration{}Nein
clickhouseKeeper.enabledboolClickHouse Keeper für Cluster-Koordination bereitstellentrueJa
clickhouseKeeper.sizequantityPersistent Volume Claim-Größe für Anwendungsdaten1GiJa
clickhouseKeeper.resourcesPresetstringStandard-Dimensionierungsprofil (nano, micro, small, medium, large, xlarge, 2xlarge)microJa
clickhouseKeeper.replicasintAnzahl der Keeper-Replikas3Ja

YAML-Konfigurationsbeispiel

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

resources und resourcesPreset

Das Feld resources ermöglicht die explizite Definition der CPU- und Speicherkonfiguration jedes ClickHouse-Replikas. Wenn dieses Feld leer gelassen wird, wird der Wert des Parameters resourcesPreset verwendet.

YAML-Konfigurationsbeispiel

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

⚠️ Achtung: Wenn resources definiert ist, wird der Wert von resourcesPreset ignoriert.

Preset-NameCPUSpeicher
nano250m128Mi
micro500m256Mi
small1512Mi
medium11Gi
large22Gi
xlarge44Gi
2xlarge88Gi

Vollständige Beispiele

Produktionscluster

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

Entwicklungscluster

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

Bewährte Praktiken
  • Keeper in ungerader Anzahl: Stellen Sie immer 3 oder 5 Keeper-Replikas bereit, um das Quorum zu gewährleisten (Mehrheit erforderlich für die Leader-Wahl)
  • logTTL: Passen Sie die Aufbewahrungsdauer der Systemlogs (query_log, query_thread_log) an, um die Ansammlung unnötiger Daten zu vermeiden
  • Shards vs Replikas: Verwenden Sie Shards zur horizontalen Datenverteilung (mehr Kapazität) und Replikas für Redundanz (mehr Verfügbarkeit)
  • Benutzer readonly: Erstellen Sie einen schreibgeschützten Benutzer für Analyse- und Reporting-Tools
Achtung
  • Löschungen sind unwiderruflich: Das Löschen einer ClickHouse-Ressource führt zum endgültigen Datenverlust, wenn keine Sicherung konfiguriert ist
  • Änderung von Shards: Das Ändern der Shard-Anzahl auf einem bestehenden Cluster kann eine komplexe Datenumverteilung verursachen
  • Keeper und Quorum: Mit weniger als 3 Keeper kann der Cluster bei Ausfall eines Knotens das Quorum nicht aufrechterhalten