summaryrefslogtreecommitdiff
path: root/internal/orchestrator
diff options
context:
space:
mode:
authorexatombe <jeremy27.clara22@gmail.com>2025-11-03 00:15:46 +0100
committerexatombe <jeremy27.clara22@gmail.com>2025-11-03 00:15:46 +0100
commitb477fed6c0819c780c5eb1d782907f7ec84d2918 (patch)
tree63872780c45316a6acd7e776d28b8019f655b12a /internal/orchestrator
parentf232228974b12b1c2b5b07718532eec26a88841d (diff)
refactor: simplifier le Makefile et mettre à jour le README pour le démarrage avec DockerHEADmain
Diffstat (limited to 'internal/orchestrator')
-rw-r--r--internal/orchestrator/README.md235
1 files changed, 0 insertions, 235 deletions
diff --git a/internal/orchestrator/README.md b/internal/orchestrator/README.md
deleted file mode 100644
index d681bd1..0000000
--- a/internal/orchestrator/README.md
+++ /dev/null
@@ -1,235 +0,0 @@
-# Orchestrator - Gestionnaire de bases de données
-
-Le package `orchestrator` permet de gérer automatiquement des instances de bases de données PostgreSQL via Docker/Podman ou Kubernetes.
-
-## Fonctionnalités
-
-- ✅ Création automatique de conteneurs PostgreSQL par projet
-- ✅ Gestion des conflits et détection des bases existantes
-- ✅ Assignment automatique des ports
-- ✅ Génération sécurisée des mots de passe
-- ✅ Limites de ressources (CPU/Mémoire)
-- ✅ Attente automatique du démarrage de PostgreSQL
-- ✅ Suppression propre des conteneurs et volumes
-- ✅ Liste de toutes les bases gérées
-- ✅ Support Docker, Podman et Kubernetes (en cours)
-
-## Configuration
-
-Fichier `config.toml` :
-
-```toml
-[orchestrator]
-type = "docker"
-docker_host = "unix:///mnt/wsl/podman-sockets/podman-machine-default/podman-root.sock"
-
-# Pour Docker standard
-# docker_host = "unix:///var/run/docker.sock"
-
-# Pour Podman rootless
-# docker_host = "unix:///run/user/1000/podman/podman.sock"
-
-# Pour Kubernetes
-# type = "kubernetes"
-# kube_api = "https://kubernetes.default.svc"
-# kube_token = "your-token"
-# namespace = "sovrabase-databases"
-```
-
-## Utilisation
-
-### Création d'un orchestrateur
-
-```go
-import (
- "github.com/ketsuna-org/sovrabase/internal/config"
- "github.com/ketsuna-org/sovrabase/internal/orchestrator"
-)
-
-// Charger la configuration
-cfg, err := config.LoadConfig("config.toml")
-if err != nil {
- log.Fatal(err)
-}
-
-// Créer l'orchestrateur
-orch, err := orchestrator.NewOrchestrator(&cfg.Orchestrator)
-if err != nil {
- log.Fatal(err)
-}
-```
-
-### Créer une base de données
-
-```go
-ctx := context.Background()
-
-options := &orchestrator.DatabaseOptions{
- PostgresVersion: "16-alpine",
- Port: 5434, // Auto-assigné si 0
- Memory: "512m", // Optionnel
- CPUs: "0.5", // Optionnel
- Password: "", // Généré si vide
-}
-
-dbInfo, err := orch.CreateDatabase(ctx, "my-project", options)
-if err != nil {
- log.Fatal(err)
-}
-
-fmt.Printf("Connection: %s\n", dbInfo.ConnectionString)
-```
-
-### Récupérer les informations
-
-```go
-dbInfo, err := orch.GetDatabaseInfo(ctx, "my-project")
-if err != nil {
- log.Fatal(err)
-}
-
-fmt.Printf("Database: %s\n", dbInfo.Database)
-fmt.Printf("Port: %s\n", dbInfo.Port)
-fmt.Printf("Status: %s\n", dbInfo.Status)
-```
-
-### Lister toutes les bases
-
-```go
-databases, err := orch.ListDatabases(ctx)
-if err != nil {
- log.Fatal(err)
-}
-
-for _, db := range databases {
- fmt.Printf("%s - %s (port %s)\n", db.ProjectID, db.Status, db.Port)
-}
-```
-
-### Supprimer une base
-
-```go
-err := orch.DeleteDatabase(ctx, "my-project")
-if err != nil {
- log.Fatal(err)
-}
-```
-
-### Vérifier l'existence
-
-```go
-exists, err := orch.DatabaseExists(ctx, "my-project")
-if err != nil {
- log.Fatal(err)
-}
-```
-
-## Structure DatabaseInfo
-
-```go
-type DatabaseInfo struct {
- ProjectID string // ID du projet
- ContainerID string // ID du conteneur
- ContainerName string // Nom du conteneur
- Status string // "running" ou "stopped"
- PostgresVersion string // Version PostgreSQL
- Host string // Hôte (localhost)
- Port string // Port de connexion
- Database string // Nom de la DB
- User string // Utilisateur
- Password string // Mot de passe
- ConnectionString string // String de connexion complète
- CreatedAt time.Time // Date de création
-}
-```
-
-## Gestion des erreurs
-
-Le package gère automatiquement :
-
-- **Conflits** : Détecte si une base existe déjà
-- **Ports occupés** : Trouve automatiquement un port libre (5433-6000)
-- **Échec de démarrage** : Nettoie le conteneur si PostgreSQL ne démarre pas
-- **Timeout** : Attend max 30 secondes le démarrage de PostgreSQL
-- **Nettoyage** : Supprime les volumes lors de la suppression
-
-## Labels des conteneurs
-
-Tous les conteneurs créés ont les labels suivants :
-
-```
-sovrabase.managed=true
-sovrabase.project_id=<project-id>
-sovrabase.type=postgres
-sovrabase.version=<pg-version>
-sovrabase.created_at=<timestamp>
-```
-
-## Scripts de test
-
-### Test complet de l'API
-
-```bash
-cd scripts
-go run test_orchestrator_api.go
-```
-
-### Test simple de création
-
-```bash
-cd scripts
-go run test_orchestrator.go
-```
-
-### Nettoyage
-
-```bash
-cd scripts
-go run cleanup_test.go
-```
-
-## Commandes utiles
-
-```bash
-# Voir tous les conteneurs Sovrabase
-podman ps -a --filter "label=sovrabase.managed=true"
-
-# Logs d'un conteneur
-podman logs sovrabase-db-<project-id>
-
-# Se connecter à la DB
-podman exec -it sovrabase-db-<project-id> psql -U <user> -d <database>
-
-# Supprimer tous les conteneurs Sovrabase
-podman rm -f $(podman ps -aq --filter "label=sovrabase.managed=true")
-```
-
-## Architecture
-
-```
-orchestrator/
-├── orchestrator.go # Interface et implémentations
-├── docker.go # Logique Docker/Podman
-└── kubernetes.go # Logique Kubernetes (TODO)
-```
-
-## Roadmap
-
-- [x] Support Docker/Podman
-- [x] Gestion des conflits
-- [x] Assignment automatique des ports
-- [x] Limites de ressources
-- [x] Attente du démarrage
-- [ ] Support Kubernetes
-- [ ] Backup/Restore automatique
-- [ ] Métriques et monitoring
-- [ ] Mise à jour des versions PostgreSQL
-- [ ] Réplication et haute disponibilité
-
-## Contribution
-
-Les contributions sont les bienvenues ! Assurez-vous que tous les tests passent :
-
-```bash
-go test ./internal/orchestrator/...
-```