Proposer un changement depuis la console
GuideExploitationDepuis la version 1.2.0
Guide d'exploitation : configurer, déployer et observer la passerelle. Ce que fait la capacité côté produit : guide produit ; l'appeler : guide développeur.
Objectif : changer le délai d'un amont, le budget d'un tenant ou la configuration d'une politique depuis la console, sans jamais écrire vers la passerelle : le changement devient une demande de tirage dans le dépôt GitOps, revue et fusionnée sous ses règles ; GitOps le réconcilie ensuite.
Configuration - une fois, par l'exploitant :
| Étape | Ce qu'il fait |
|---|---|
| 1. Créer l'application GitHub | Permissions Contents et Pull requests en écriture, Checks, Commit statuses et Metadata en lecture ; ni Administration ni Workflows ; aucun webhook. L'installer sur le seul dépôt GitOps ; ne pas l'ajouter aux acteurs qui contournent les règles |
| 2. Poser la clé par référence | La clé privée dans le gestionnaire de secrets, synchronisée en Secret (ESO), montée en fichier : repo.existingSecret (clé private-key par défaut) - jamais une valeur du chart |
| 3. Protéger la branche cible | Une règle (ruleset) exigeant une PR et au moins une approbation, lisible par l'application ; une protection classique (illisible sans Administration) se déclare : repo.protection: declared, affichée « non vérifiée » |
| 4. Renseigner le dépôt | repo.url, repo.branch, repo.path (le répertoire de flexway.yaml), repo.appId, repo.installationId |
repo:
url: https://github.com/acme-platform/gateway-config
branch: main
path: deploy/flexway
appId: "123456"
installationId: "7890123"
existingSecret: console-github-appHors Kubernetes (Docker, VM) : FLEXWAY_CONSOLE_REPO_URL, _REPO_BRANCH, _REPO_PATH, _REPO_APP_ID,
_REPO_INSTALLATION_ID, _REPO_APP_KEY=file:/run/secrets/github-app/private-key et
FLEXWAY_CONSOLE_PROPOSALS_STORE=file:/var/lib/flexway-console/proposals sur un volume, une seule
réplique. Les rôles : flexway-proposer et flexway-reviewer côté fournisseur (avec ou sans tenant),
ou choisis dans Utilisateurs pour un compte local.
Parcours d'une proposition :
- Un
proposer(ou unreviewer, un admin) ouvre l'étape d'une politique, le détail d'un amont ou la consommation d'un tenant et clique « Proposer ce changement » : nouvelle valeur, titre, motif. - La console lit
flexway.yamldans le dépôt, remplace le nœud en gardant commentaires et ordre, montre le diff, le fait charger par le chargeur de la passerelle et simule les requêtes décrites. Rien n'est écrit au dépôt. - L'auteur soumet en revue : le diff est figé (empreinte).
- Un
reviewerouvre la demande de tirage (ou la rejette, motif à l'appui) : une brancheflexway/p-NNNN-..., un commit qui porte exactement le diff revu, une PR au corps généré. - Revue et fusion se font dans le dépôt, sous ses règles ; la console lit revues, vérifications et fusion toutes les 30 s.
- Après la fusion, la console calcule le
config_digestattendu sur le commit de fusion ; la proposition est appliquée quand toutes les répliques le servent (flexway_config_info).
| Statut | Sens |
|---|---|
| Brouillon | À son auteur ; refusée par le chargeur, elle ne peut pas être soumise |
| En revue | Diff figé ; un relecteur ouvre la PR ou rejette |
| PR ouverte | Dans le dépôt ; « modifiée dans le dépôt » si la branche ne porte plus seulement le diff revu |
| Fusionnée | En attente du rechargement ; « fusionnée avec écart » si le contenu fusionné diffère du revu |
| Appliquée | Toutes les répliques servent l'empreinte attendue |
| Périmée | flexway.yaml a changé sur la branche cible : Régénérer rejoue l'édition sur la nouvelle tête |
| Rejetée, retirée | Terminée ; gardée 400 jours, son journal avec elle |
Vérif : flexway validate sur le dépôt après la fusion imprime le même config_digest que la
console attend ; /config de chaque réplique le publie.
docker run --rm -v "$PWD/deploy/flexway:/cfg" ghcr.io/flexwiz/flexway:<version> validate --config /cfg/flexway.yaml
# valid: 12 operation(s) served from 1 contract(s), 2 upstream(s)
# config_digest 9e41b7c0d2aaDépannage
| Symptôme | Cause et remède |
|---|---|
503 repo_unprotected, bandeau « branche non protégée » |
Aucune règle lisible n'exige PR et approbation : ajouter un ruleset, ou déclarer la protection (repo.protection: declared) |
502 repo_refused |
La clé est révoquée, l'installation ne couvre pas le dépôt, ou une permission manque : vérifier l'application, puis attendre la relecture de la clé (sans redémarrage) |
| « Modifiée dans le dépôt » | Quelqu'un a poussé sur la branche flexway/* : relire la PR dans le dépôt ; la console garde les deux empreintes au journal |
| « Fusionnée avec écart » | La fusion porte un autre contenu que celui revu : le journal le dit ; l'empreinte attendue est celle du commit de fusion |
| « Rechargement attendu » au-delà de 15 min | GitOps n'a pas synchronisé, ou la passerelle a refusé le rechargement (last_reload de /config) |
Disponible depuis 1.2.0 ; règles automatiques et IA d'exploitation prévues en 1.10.0. Vérifiée contre une doublure de GitHub ; un essai contre un dépôt de démonstration reste à
faire avant de promettre la compatibilité GitHub Enterprise Server et les commits signés.