flexway
FRENParler à un expert

Ligne de commande

Chaque commande des binaires flexway et flexway-console : options, codes de sortie, exemples, depuis le binaire ou l'image publiée.

RéférenceTous publicsDepuis la version 0.1.0

Markdown

Sur cette page

Le binaire flexway est à la fois le service et ses outils : sans argument, il sert ; suivi d'une commande, il vérifie, convertit ou écrit, hors ligne, sans démarrer d'écouteur. Les mêmes commandes sont dans chaque image publiée, dont le point d'entrée est le binaire :

docker run --rm -v "$PWD:/etc/flexway:ro" ghcr.io/flexwiz/flexway:<version> validate

Les options s'écrivent avec un ou deux tirets (-config ou --config). -h affiche l'aide d'une commande et sort en 0.

Sommaire

Commande Rôle Codes de sortie Depuis
flexway Servir - 0.1.0
flexway validate Valider une configuration et ses contrats 0, 1, 2 0.1.0
flexway import krakend Reprendre une configuration KrakenD 0, 1, 2, 3 1.2.0
flexway api-key Créer une clé d'API 0, 1 0.1.0
flexway schema Écrire les schémas publiés de la configuration 0, 1, 2 1.7.0
flexway fragment digest Calculer l'empreinte qui épingle un fragment de politique 0, 1, 2 1.7.0
flexway version Dire quelle version tourne 0 1.1.0
flexway-console users Gérer les comptes locaux de la console 0, 1, 2 1.0.0
flexway-console version Dire quelle version de la console tourne 0 1.1.0

flexway

Sert la configuration nommée par l'environnement. SIGTERM draine les requêtes en cours puis arrête, SIGHUP relit la configuration tout de suite.

Variable Défaut Rôle
FLEXWAY_CONFIG - (obligatoire ; /etc/flexway/flexway.yaml dans l'image) Le flexway.yaml à servir
FLEXWAY_ADDR :8080 Écouteur de trafic
FLEXWAY_ADMIN_ADDR :9090 Écouteur d'administration (API d'administration)
FLEXWAY_TLS_ADDR :8443 Écouteur TLS, quand server.tls est posé
FLEXWAY_CONFIG=/etc/flexway/flexway.yaml flexway

flexway validate

Charge la configuration et chaque contrat qu'elle nomme avec le chargeur du démarrage - mêmes contrôles, mêmes refus - sans réseau ni grappe. Une référence de secret (${VAR}, file:/...) est vérifiée dans sa forme, pas résolue.

flexway validate [--config flexway.yaml] [--contract openapi.yaml] [-v]
Option Défaut Rôle
--config $FLEXWAY_CONFIG, sinon flexway.yaml La configuration à valider ; les chemins qu'elle contient se lisent depuis son dossier
--contract - Un autre contrat OpenAPI, validé à la place de contracts.openapi
-v non Liste chaque opération résolue (méthode, gabarit, amont) et l'empreinte complète
Code Sens
0 Acceptée : valid: <n> operation(s) served from <n> contract(s), <n> upstream(s) puis config_digest <empreinte>
1 Refusée : le champ fautif et la raison
2 Ligne de commande mal formée
docker run --rm -v "$PWD:/w:ro" ghcr.io/flexwiz/flexway:<version> validate --config /w/flexway.yaml --contract /w/next.yaml -v

L'empreinte config_digest est celle que publie /config d'une réplique qui sert cette configuration. Guide : Servir sa première API.

flexway import krakend

Convertit une fois, hors ligne, un krakend.json : un flexway.yaml, le contrat annoté, le même ajout en JSON Patch (contract.patch.json) et un rapport coverage.md. Le résultat passe le chargeur du démarrage avant d'être écrit.

flexway import krakend --config krakend.json --contract openapi.yaml --out <dossier vide>
Option Défaut Rôle
--config krakend.json La configuration KrakenD (rendue, si elle est flexible)
--contract - (obligatoire) Le contrat OpenAPI auquel les endpoints sont rapportés
--out - (obligatoire) Un dossier vide ou absent : l'import n'écrase jamais
Code Sens
0 Tout est repris
1 Refus, rien n'est écrit
2 Ligne de commande mal formée
3 Repris, avec des éléments sans équivalent listés dans coverage.md

Guide : Reprendre une passerelle existante.

flexway api-key

Crée une clé d'API. La commande demande son identifiant, son tenant, les opérations qu'elle ouvre (operationId séparés par des virgules) et sa fin (90d, 12w ou une date AAAA-MM-JJ ; 90d par défaut), puis affiche la clé une seule fois et l'entrée à ajouter au magasin de clés - son empreinte SHA-256, jamais la clé. Aucune option : les saisies sont interactives.

docker run --rm -it ghcr.io/flexwiz/flexway:<version> api-key
Code Sens
0 Clé créée
1 Refus : identifiant mal formé (2 à 64 caractères, minuscules, chiffres, ., _, -), tenant ou opérations absents, date passée

Guide : Clés d'API.

flexway schema

Écrit les schémas publiés de la configuration (JSON Schema 2020-12) depuis le modèle du binaire, hors ligne : flexway.schema.json, contract-extensions.schema.json et, depuis 1.7.0, policy-fragment.schema.json (fragments de politique) et architecture.schema.json (modèle flexway.architecture.v1 de l'écran Architecture de la console).

flexway schema [--out <dossier>]
Option Défaut Rôle
--out . Le dossier où les fichiers sont écrits ; chaque chemin écrit est affiché
Code Sens
0 Écrits
1 Échec d'écriture
2 Ligne de commande mal formée
docker run --rm -v "$PWD:/out" -u "$(id -u)" ghcr.io/flexwiz/flexway:<version> schema --out /out

Guide : Valider dans son éditeur.

flexway fragment digest

Lit un fichier de fragment de politique (kind: PolicyFragment) et affiche l'empreinte qui l'épingle dans policies.fragments.<import>.digest : sha256: suivi du sha256 de ses octets, la valeur de sha256sum. Un fichier qu'aucune passerelle ne chargerait (clé inconnue, hôte, import d'un autre fragment, secret en clair) est refusé sans empreinte. Depuis 1.7.0.

flexway fragment digest <fragment.yaml>
Code Sens
0 L'empreinte, seule sur sa ligne
1 Fichier illisible ou refusé : la raison
2 Ligne de commande mal formée
make fragment-digest FILE=security-baseline.yaml

Guide : Fragments de politique partagés.

flexway version

Affiche flexway <version> (<commit>) : le tag de la release, ou dev pour un build qui n'en est pas une. La même valeur est dans build de /config et au pied de la console.

docker run --rm ghcr.io/flexwiz/flexway:<version> version

flexway-console users

Gère les comptes locaux de la console, depuis son conteneur (FLEXWAY_CONSOLE_STORE doit désigner le magasin des comptes). Un lien d'invitation est valable 72 h et affiché une seule fois.

Sous-commande Rôle
list Les comptes locaux : identifiant, nom, rôle, tenant, statut, second facteur, dernière connexion
add [login] Un nouveau compte - demande son nom, son rôle (viewer ou admin) et, pour un lecteur, son tenant ; affiche son lien d'invitation
reset <login> Invalide le mot de passe et les sessions ; affiche un nouveau lien d'invitation
mfa-reset <login> Désactive le second facteur : le compte s'enrôle à nouveau à sa prochaine connexion
unlock <login> Lève tous les verrouillages du compte
disable <login> Désactive le compte (jamais le dernier admin actif)
Code Sens
0 Fait
1 Refus (compte inconnu, dernier admin...)
2 Sous-commande inconnue ou absente, magasin non configuré
kubectl exec deploy/<release>-flexway-console -- flexway-console users reset admin

Guide : Comptes de la console.

flexway-console version

Affiche flexway-console <version> (<commit>).

Étapes suivantes