Aller au contenu principal

Installer ClickHouse

Pour savoir ce qu'est ClickHouse et ce qu'exige un déploiement en production, consultez la présentation de ClickHouse.

Prérequis​

Avant l'installation, le mot de passe administrateur de ClickHouse et le mot de passe de l'API locale du backup sidecar doivent être transmis via un secret Kubernetes plutôt que définis directement dans les values, selon le même modèle utilisé dans tout GitGuardian Self-Hosted. Il peut être créé directement ou synchronisé depuis votre propre coffre de secrets. Consultez Gestion des informations sensibles Helm pour savoir comment le renseigner.

Si vous le créez directement :

kubectl create secret generic clickhouse-credentials \
--namespace <namespace> \
--from-literal=admin-password=<a-strong-password> \
--from-literal=api-password=<a-strong-password> \
--from-literal=api-username=<a-username>
Les trois clés sont requises : n'en renommez et n'en omettez aucune

clickhouse-credentials, admin-password, api-password et api-username sont câblés dans les valeurs par défaut du chart sous ces noms exacts : admin-password via clickhouse.auth.existingSecret/existingSecretKey (GitGuardian dérive son propre CLICKHOUSE_PASSWORD du même secret), et api-password/api-username consommés directement par le backup sidecar et son ServiceMonitor. Omettre ou renommer l'un de ces trois éléments casse l'authentification propre à ClickHouse, le backup sidecar ou la connexion de GitGuardian à celui-ci, sauf si vous remplacez également les valeurs correspondantes.

Activer ClickHouse​

Une fois le secret en place, activez ClickHouse lui-même :

clickhouse:
enabled: true

Cela seul ne suffit pas pour un déploiement fonctionnel : le backend de stockage objet de ClickHouse n'a pas de valeur par défaut et doit être configuré pour votre fournisseur (voir Stockage ClickHouse), et la destination de sauvegarde nécessite la même chose avant que les sauvegardes puissent s'exécuter (voir Sauvegarde et restauration). Suivez ces deux pages avant de considérer ClickHouse comme installé.

Exemple de configuration complet​

Les exemples ci-dessous assemblent les éléments de chaque page de configuration de cette section en un seul bloc de valeurs clickhouse.

Tous les fournisseurs nécessitent également le secret clickhouse-credentials décrit dans Prérequis ci-dessus.

Suppose la configuration IRSA de Stockage → Configuration : un fournisseur OIDC IAM sur le cluster, et un rôle IAM approuvé pour le ServiceAccount clickhouse avec une politique couvrant les deux buckets.

clickhouse:
enabled: true

# Sizing and hardening (see Sizing → Hardware recommendations)
resources: # Large tier shown; match your own tier, requests = limits
requests:
cpu: 8
memory: 32Gi
limits:
cpu: 8
memory: 32Gi
podAnnotations:
karpenter.sh/do-not-disrupt: 'true' # adjust for your cluster autoscaler
nodeSelector: # assumes a dedicated on-demand node pool (see Sizing → Node stability)
workload: clickhouse
tolerations:
- key: workload
operator: Equal
value: clickhouse
effect: NoSchedule

# Local volumes (see Storage → Local persistent volumes)
persistence:
storageClass: gp3
cache:
storageClass: gp3
size: 100Gi # Large tier shown (see Sizing → Filesystem cache)

# Data bucket, authenticated through IRSA (see Storage → Configuration)
serviceAccount:
annotations:
eks.amazonaws.com/role-arn: 'arn:aws:iam::<account-id>:role/<role-name>'
objectStorage:
provider: s3
s3:
endpoint: 'https://<bucket-name>.s3.<region>.amazonaws.com'
bucket: '<bucket-name>'
region: '<region>'
credentialless: true

# Backup destination, a separate bucket (see Backup and restore → Object storage destination)
backup:
objectStorage:
provider: s3
s3:
bucket: '<backup-bucket-name>'
region: '<region>'
prefix: 'backups'
credentialless: true