Créer une BDD ClickHouse¶
La création de bases ClickHouse est config-driven : on déclare la base dans la config Terraform de l'application, puis on applique le run qui crée bases, comptes et droits. Aucune commande SQL manuelle.
APPEND ONLY
La liste clickhouse_databases est à n'ajouter que par le bas. Renommer ou supprimer une entrée DROP la base (ClickHouse ne sait pas renommer une base). Pour « renommer », on ajoute une nouvelle entrée et on migre les données.
1. Déclarer la base¶
Éditer scw-init-config/002.config_applications/terraform.tfvars, bloc "fdld", et ajouter une entrée à la liste clickhouse_databases :
"fdld" = {
gitlab_group_name = "fdld"
project_name = "fdld"
clickhouse = true
clickhouse_databases = [
"referentiels_bronze",
# ... entrées existantes ...
"carto_gold",
"mon_produit_bronze", # <-- nouvelle base
]
}
Convention de nommage : <produit>_<couche> (couches bronze / silver / gold). Le nom est préfixé par environnement au moment de la création (run 043) :
| Déclaré | Bases réellement créées |
|---|---|
mon_produit_bronze |
int_mon_produit_bronze, rec_mon_produit_bronze, preprod_mon_produit_bronze |
2. Appliquer le run Terraform¶
L'instance ClickHouse elle-même (run 042.clickhouse) est déjà provisionnée. La création des bases / comptes / droits se fait par le run 043.clickhouse-account-creation :
VPN requis
Ce run utilise le provider ClickHouse (clickhousedbops), qui se connecte directement à l'IngressRoute ClickHouse — le provider Scaleway ne sait pas gérer les bases. Cet accès étant filtré par IP, le VPN doit être actif pour appliquer le run, sinon le provider ne peut pas joindre l'instance.
cd infrastructure/main-infra/scw-application/horsprod/terraform/043.clickhouse-account-creation
terraform init
terraform plan # vérifier que seul un ajout de clickhousedbops_database.app apparaît
terraform apply
Le plan ne doit montrer que des créations (+). Si une destruction (-) de base apparaît, c'est qu'une entrée a été renommée/supprimée par erreur → stop (cf. avertissement APPEND ONLY).
State volumineux
Le state de ce run contient beaucoup de ressources : pour chaque base, en plus de la création de la BDD, Terraform crée un grant par ressource (une ressource de privilège par couple compte × base). Le nombre de ressources croît donc vite avec le nombre de bases — c'est attendu, un plan un peu long n'est pas anormal.
3. Vérifier¶
Les bases sont visibles dans l'output du run et via l'UI ClickHouse :
terraform output clickhouse_databases
Ou directement (accès whitelisté) : https://clickhouse-fdld.horsprod.ademe-scw.fr/play → SHOW DATABASES.
La liste des bases accessibles par le compte applicatif est aussi exposée dans Vault : apps/fdld/<env> → clickhouse_app_databases (bases séparées par des virgules).
Rappel — connexion applicative¶
Le user/password ne change pas quand on ajoute une base (un compte par environnement possède toutes ses bases) :
apps/fdld/<env>→clickhouse_app_username/clickhouse_app_password
Voir la vue d'ensemble FDLD (section ClickHouse) pour la connexion TCP (port 9440).