flexway
FRENParler à un expert

Choisir son déploiement

Binaire, conteneur, Kubernetes à plusieurs répliques, derrière un maillage ou sans sortie réseau : quelle topologie pour quel besoin.

ConceptExploitationDepuis la version 0.1.0

Markdown

Sur cette page

Guide d'exploitation : configurer, déployer et observer la passerelle. Ce que fait la fonctionnalité côté produit : guide produit ; l'appeler : guide développeur.

Ce que c'est

Flexway est un seul binaire, sans base de données ni plan de contrôle. Le même flexway.yaml et les mêmes contrats tournent partout ; d'une topologie à l'autre ne changent que trois choses : comment le processus est lancé, où vivent les compteurs partagés, et qui peut joindre le port d'administration.

Comment choisir

%%{init: {'theme':'base','themeVariables':{'fontSize':'14px','lineColor':'#94a3b8'}}}%%
flowchart TD
  Q1{"Une seule instance suffit ?"}:::hub
  Q1 -->|"oui"| Q2{"Un moteur de conteneurs ?"}:::hub
  Q2 -->|"oui"| C["Conteneur"]:::spoke
  Q2 -->|"non"| B["Binaire seul"]:::spoke
  Q1 -->|"non"| K["Kubernetes,<br/>plusieurs répliques"]:::spoke
  K --> Q3{"Quotas de tenant ou<br/>débits partagés ?"}:::hub
  Q3 -->|"oui"| S["+ cache partagé"]:::data
  K --> Q4{"Un maillage chiffre<br/>déjà le trafic ?"}:::hub
  Q4 -->|"oui"| M["Derrière le maillage"]:::private
  K --> Q5{"Aucune sortie réseau<br/>hors du déclaré ?"}:::hub
  Q5 -->|"oui"| E["Souverain :<br/>sortie limitée au déclaré"]:::private

  classDef hub     fill:#4f46e5,stroke:#3730a3,color:#fff,font-weight:bold
  classDef spoke   fill:#0891b2,stroke:#155e75,color:#fff,font-weight:bold
  classDef data    fill:#3b82f6,stroke:#1d4ed8,color:#fff,font-weight:bold
  classDef private fill:#10b981,stroke:#047857,color:#fff,font-weight:bold

Les trois dernières questions se cumulent : une grappe peut avoir un cache partagé compatible Redis, un maillage et une sortie limitée à la fois.

Les topologies

Topologie Pour qui Ce qu'il faut Guide
Binaire seul (VM, bare métal) Une instance sous systemd ou tout superviseur L'archive de la release pour amd64 ou arm64 et FLEXWAY_CONFIG ; SIGHUP recharge, SIGTERM draine Configurer et exploiter
Conteneur Un poste, une VM avec Docker ou Podman L'image ghcr.io/flexwiz/flexway:<version> (amd64 et arm64, sans shell, utilisateur non root), la configuration montée en lecture seule Servir sa première API
Kubernetes, plusieurs répliques La production : disponibilité, montée en charge Le chart oci://ghcr.io/flexwiz/charts/flexway ; replicaCount, autoscaling (2 à 10 répliques par défaut quand il est activé), pdb Passer en Kubernetes
+ cache partagé Des débits partagés entre répliques, des quotas de tenant au jour ou au mois Un Redis, Dragonfly ou Valkey dans server.counters Poser des quotas
Derrière un maillage (Linkerd, Istio) Une grappe où le maillage chiffre et authentifie déjà les pods Aucun TLS propre à la passerelle ; les anonymes comptés par identité de pair (server.trusted_proxies: [local] et server.peer_identity_header) ; l'identité d'un ingress de confiance par auth.trusted_headers Poser des quotas, Exemples : inférence
Souverain, sortie limitée Un environnement sans accès à internet, ou dont chaque flux sortant est déclaré La liste des destinations ci-dessous, et la NetworkPolicy de sortie du chart (egress.enabled, egress.rules) Passer en Kubernetes

Sans cache partagé, chaque réplique compte pour elle-même et aucun quota de tenant ne se déclare. Cache partagé perdu, la passerelle continue de servir en compteurs locaux et le dit (flexway_counters_store_up à 0).

Ce que la passerelle appelle

La passerelle n'ouvre de connexion que vers ce que sa configuration déclare : les amonts, les émetteurs OIDC (découverte, clés, introspection, échange de jeton), les courtiers, le registre de schémas, le KMS, les cibles de webhook, le cache partagé, et le collecteur OTLP s'il est renseigné - sans observability.otlp_endpoint ni OTEL_EXPORTER_OTLP_ENDPOINT, rien n'est poussé. Aucun appel vers l'éditeur du produit. Pour un environnement isolé : recopier les images dans votre registre après les avoir vérifiées avec cosign, et écrire les schémas de l'éditeur depuis l'image avec flexway schema (ligne de commande).

Limites

Sujet État
État partagé Le cache partagé des compteurs seul. Le cache de réponses, /events et /errors sont par réplique
Port d'administration Jamais exposé, quelle que soit la topologie (API d'administration)
Plusieurs passerelles, une console Pas encore construit : aujourd'hui une console par déploiement de passerelle (installer la console). Une console partagée entre passerelles est cadrée, sans version fixée
Mode edge Prévu en 1.12.0 : le même binaire sur un site distant, une configuration signée tirée, des décisions locales

Aller plus loin

Étapes suivantes