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