À propos du projet
OpenEverest Plugin Bench est un plugin en cours de développement dans le cadre du MVP de benchmarking PostgreSQL d'OpenEverest. Il permet aux utilisateurs d'exécuter des benchmarks pgbench depuis la vue du cluster de bases de données OpenEverest, chaque benchmark s'exécutant dans un Job Kubernetes temporaire. Le projet est explicitement marqué comme un MVP en cours et n'est pas encore destiné à un usage en production.
Fonctionnement : le backend du plugin coordonne une exécution de benchmark en résolvant les détails de connexion pour l'instance PostgreSQL sélectionnée via l'API OpenEverest, en créant un Secret temporaire contenant les identifiants de la base de données, en créant un Job Kubernetes utilisant l'image du runner pgbench, en attendant le Job et en collectant les logs du runner, puis en supprimant le Job et le Secret temporaire. Le frontend apparaît actuellement comme un onglet de détail du cluster PostgreSQL ; d'autres technologies de bases de données pourraient être ajoutées ultérieurement grâce à une conception basée sur des drivers.
Le développement local nécessite Docker, kubectl, Helm, k3d, Tilt, Go, et Node.js avec npm. L'exécution du plugin dans un cluster nécessite également une installation d'OpenEverest et un fournisseur PostgreSQL pris en charge. Un cluster de développement et un environnement Tilt peuvent être démarrés avec make dev-up, ou tilt up -f dev/Tiltfile si le cluster existe déjà. Tilt construit le frontend, l'image du coordinateur et l'image du runner pgbench ; l'image du runner n'est utilisée que lorsque le coordinateur démarre un Job de benchmark.
Le runner reçoit les détails de connexion PostgreSQL via PGHOST, PGDATABASE, PGUSER, et PGPASSWORD ou PGPASSFILE. Les options de benchmark incluent BENCH_INITIALIZE (par défaut false), BENCH_DURATION (par défaut 60 secondes), BENCH_CLIENTS (par défaut 1), BENCH_THREADS (par défaut 1), et BENCH_SCALE (par défaut 1). Définir BENCH_INITIALIZE=true supprime et recrée les tables pgbench, il ne doit donc être utilisé qu'avec une base de données jetable.
Les commandes utiles incluent npm ci et npm run build pour le frontend, go test ./... et go vet ./... dans le backend, helm lint charts/plugin-bench/, et docker build pour l'image du runner pgbench. Le dépôt est organisé en src/ pour le frontend React, backend/ pour le backend Go (avec internal/everest pour le client de l'API OpenEverest et internal/coordinator pour l'orchestration des Jobs et Secrets Kubernetes), runners/pgbench/ pour l'image du runner, charts/plugin-bench/ pour le chart Helm et la ressource Plugin, dev/ pour la configuration Tilt et k3d, et spec.md pour les exigences du MVP.
Limitations actuelles : le MVP cible les instances PostgreSQL gérées par OpenEverest, la sortie des benchmarks est collectée depuis le runner et n'est pas encore persistée dans une base de données externe, et l'historique des exécutions, une analyse plus riche des résultats, et la prise en charge de technologies de bases de données supplémentaires sont prévus pour des itérations ultérieures. Le projet est sous licence Apache License 2.0.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.