Reprend l'amorce de la PR 164 et l'intègre à la stack : service `garage` (dxflrs/garage v2.4.1, `--single-node --default-bucket`) dans docker-compose.yml, garage.toml versionné sans secret, ports sur 127.0.0.1 décalés par environnement dans provision-host.sh, garde des six clés GARAGE_* dans le Makefile, cible Prometheus avec jeton, tests de fumée déplacés dans tests/garage et joués par le job compose d'infra.yml contre le vrai conteneur, SSE-C compris. Variables APP_S3_* et APP_READING_RETENTION_DAYS posées sur airflow-scheduler pour le DAG `retention`. ADR 0019. Closes #24
1.5 KiB
1.5 KiB
Garage
Stockage objet S3 de la stack, un conteneur par projet Compose (ADR 0019). Il ne sert qu'au DAG
retention, qui y archive les chunks de reading avant de les supprimer.
garage.toml: configuration versionnée, sans secret, montée en lecture seule. Les secrets arrivent par l'environnement :GARAGE_RPC_SECRET,GARAGE_ADMIN_TOKEN,GARAGE_METRICS_TOKEN.- Démarrage
--single-node --default-bucket: le premier démarrage crée le layout, la cléGARAGE_ACCESS_KEYet le bucketGARAGE_BUCKET. Rejouable tant que les volumesgarage_metaetgarage_datasont conservés. ChangerGARAGE_SECRET_KEYensuite fait refuser le démarrage. - Ports, sur
127.0.0.1seulement :GARAGE_S3_PORT(3900) pour l'API S3,GARAGE_ADMIN_PORT(3903) pour/health(sans jeton) et/metrics(jetonGARAGE_METRICS_TOKEN, scruté par Prometheus). Le RPC 3901 n'est pas publié. - Nœud unique,
replication_factor = 1, moteur sqlite : aucune redondance, le coffre LUKS de la VM (ADR 0020) et l'instantané des métadonnées toutes les six heures sont les seules protections.
docker compose exec garage /garage status
docker compose exec garage /garage bucket info enervision-archives
docker compose exec garage /garage key info --show-secret "$GARAGE_ACCESS_KEY"
Tests de fumée : tests/garage/test_smoke.py, joués par la CI contre le vrai conteneur (job
« Validation des fichiers Compose et de la supervision »). En local, stack démarrée et .env chargé :
uvx --with boto3 pytest tests/garage.