flexway
FRENParler à un expert

Proposer un changement depuis la console

GuideExploitationDepuis la version 1.2.0

Markdown

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-app

Hors 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 :

  1. Un proposer (ou un reviewer, 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.
  2. La console lit flexway.yaml dans 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.
  3. L'auteur soumet en revue : le diff est figé (empreinte).
  4. Un reviewer ouvre la demande de tirage (ou la rejette, motif à l'appui) : une branche flexway/p-NNNN-..., un commit qui porte exactement le diff revu, une PR au corps généré.
  5. 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.
  6. Après la fusion, la console calcule le config_digest attendu 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 9e41b7c0d2aa

Dé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.

Étapes suivantes