Aller au contenu principal

Gestion des Environnements

STOA implémente un modèle "Born GitOps" (ADR-040) où les environnements sont des citoyens de première classe avec des modes d'accès distincts, des indicateurs visuels et des requêtes limitées.

Trois Environnements​

EnvironnementModeCouleurObjectif
DevelopmentfullVertSans restriction — créer, modifier, supprimer librement
StagingfullAmbreValidation pré-production
Productionread-onlyRougeVerrouillé — modifications uniquement via promotion

Modes d'Environnement​

ModeCréerModifierSupprimerDéployerQui Peut Contourner
fullOuiOuiOuiOuiTous avec les permissions de rôle
read-onlyNonNonNonNoncpi-admin uniquement (correctifs d'urgence)
promote-onlyNonNonNonOuidevops et au-dessus

Récupérer les Environnements​

Configure your environment

The examples below use environment variables. Set them for your STOA instance:

export STOA_API_URL="https://api.gostoa.dev"       # Replace with your domain
export STOA_AUTH_URL="https://auth.gostoa.dev" # Keycloak OIDC provider
export STOA_GATEWAY_URL="https://mcp.gostoa.dev" # MCP Gateway endpoint

Self-hosted? Replace gostoa.dev with your domain.

curl "${STOA_API_URL}/v1/environments" \
-H "Authorization: Bearer ${TOKEN}"

Réponse :

{
"environments": [
{"name": "dev", "label": "Development", "mode": "full", "color": "green"},
{"name": "staging", "label": "Staging", "mode": "full", "color": "amber"},
{"name": "prod", "label": "Production", "mode": "read-only", "color": "red"}
]
}

Requêtes Limitées à l'Environnement​

Toutes les requêtes API peuvent être limitées à un environnement spécifique en utilisant le paramètre de requête environment :

# Lister les APIs en staging uniquement
curl "${STOA_API_URL}/v1/apis?environment=staging" \
-H "Authorization: Bearer ${TOKEN}"

# Lister les déploiements en production
curl "${STOA_API_URL}/v1/deployments?environment=prod" \
-H "Authorization: Bearer ${TOKEN}"

Sans le paramètre environment, l'API retourne les ressources de l'environnement actif (par défaut : dev).

Indicateurs de la Console​

La Console reflète l'environnement actif avec des repères visuels :

IndicateurSignification
Point vertDevelopment — toutes les actions disponibles
Point ambreStaging — toutes les actions disponibles
Point rouge + icône cadenasProduction — mode lecture seule actif

Changer d'Environnement​

Dans la Console, utilisez le menu déroulant du sélecteur d'environnement dans l'en-tête. L'environnement sélectionné :

  • Persiste lors des navigations entre pages (stocké dans localStorage)
  • Limite toutes les requêtes de données (APIs, déploiements, abonnements)
  • Active/désactive les boutons d'action en fonction du mode d'environnement

Production en Lecture Seule​

Lorsque l'environnement est prod, les opérations d'écriture sont bloquées à deux niveaux :

Application au Backend​

L'API utilise une protection require_writable_environment sur tous les endpoints d'écriture :

POST /v1/apis                → 403 Forbidden (prod est en lecture seule)
PUT /v1/apis/{id} → 403 Forbidden
DELETE /v1/apis/{id} → 403 Forbidden
GET /v1/apis → 200 OK (les lectures sont toujours autorisées)

Réponse d'erreur :

{
"detail": "Environment 'prod' is read-only. Write operations are not permitted."
}

Application au Frontend​

Le hook useEnvironmentMode désactive les boutons et formulaires :

  • Les boutons Créer sont masqués ou désactivés
  • Les formulaires Modifier sont en lecture seule
  • Les actions Supprimer sont masquées
  • Une bannière affiche : "Environnement de production — mode lecture seule"

Contournement CPI Admin​

Les administrateurs de plateforme (rôle cpi-admin) peuvent contourner les restrictions de lecture seule pour les correctifs d'urgence. Le contournement est journalisé dans la piste d'audit.

Workflow de Promotion​

Les modifications transitent du développement vers la production via un pipeline de promotion :

Étape 1 : Développer en Dev​

Créez et itérez librement dans l'environnement de développement :

  • Accès CRUD complet pour tous les rôles
  • Aucune approbation requise
  • Itération rapide

Étape 2 : Promouvoir en Staging​

Déplacez les modifications validées en staging pour les tests d'intégration :

  • Des tests automatisés s'exécutent contre staging
  • Validation d'intégration avec d'autres services
  • Revue pré-production

Étape 3 : Approuver pour la Production​

Les modifications de production nécessitent une approbation explicite :

  • Porte manuelle — approbation cpi-admin ou tenant-admin
  • L'application de lecture seule empêche les modifications directes
  • Toutes les modifications tracées dans Git (piste d'audit GitOps)

Intégration ArgoCD​

Lors de l'utilisation d'ArgoCD pour le déploiement GitOps, chaque environnement correspond à une Application ArgoCD avec sa propre politique de synchronisation :

EnvironnementComportement ArgoCD
DevAuto-sync, auto-correction, itération rapide
StagingAuto-sync, auto-correction, validation d'intégration
ProductionAuto-sync, auto-correction, promotion uniquement

La dérive en production est automatiquement corrigée par la fonction d'auto-correction d'ArgoCD. Les modifications manuelles via kubectl sont écrasées pour correspondre à l'état défini dans Git.

Voir Aussi​