← Accueil · Stacks & langages · Toute la doc
Quarkus sur OKS + PostgreSQL + Kafka
Quarkus démarre en millisecondes et consomme peu de mémoire : sur Kubernetes, ça veut dire plus de pods par nœud et un HPA qui réagit vite. Avec Kafka pour les événements et PostgreSQL pour les données, c’est une base cloud-native solide ; bige-ops la pose sur OKS et la chiffre.
oks : control plane cp.3.masters.small, nodepool de 3 nœuds tinav6.c4r8p2. API Quarkus (512 MiB, HPA de 2 à 8), consumers Kafka, Kafka et PostgreSQL en Deployments. Estimation bige-ops : 523,35 € HT par mois, plus le LBU de l’API.
flowchart TB
U["Internet"] -->|"HTTPS"| L1["LBU · api"]
subgraph OKS ["OKS · cp.3.masters.small · 3 × tinav6.c4r8p2"]
API["api · Quarkus
HPA 2 → 8"]
WK["worker · Quarkus
consumers Kafka"]
KF[("Kafka 4.3 · KRaft")]
PG[("PostgreSQL 17")]
end
L1 --> API
API --> PG
API --> KF
KF --> WK
WK --> PG
PG -.->|"pg_dump"| OOS[("OOS · backups")]
Pourquoi cette stack tourne bien sur Outscale
- Kubernetes managé, rien qu’à toi : OKS te donne un cluster dédié, avec son control plane isolé et sans partage de ressources. Tu déploies tes services, Outscale opère le cluster. OKS
- Des bases rapides et stables : Les volumes io1 garantissent jusqu’à 13 000 IOPS par volume : tes requêtes gardent des temps de réponse réguliers, même sous charge. Volumes
- Un réseau privé et des sauvegardes sûres : Tes bases restent dans le réseau privé de ton projet, jamais exposées à Internet. Les sauvegardes partent vers l’Object Storage, compatible S3 et répliqué entre plusieurs zones.
- Prêt pour les clients exigeants : Régions qualifiées SecNumCloud 3.2 pour le secteur public, certification HDS pour la santé. Pourquoi Outscale · SecNumCloud 3.2
Architecture sur Outscale
- Control plane
cp.3.masters.small(HA) et nodepool de 3 nœudstinav6.c4r8p2(12 vCPU, 24 GiB) : l’empreinte réduite de Quarkus laisse de la place à l’HPA. - api : Quarkus en runtime
java, 512 MiB par réplica, HPA de 2 à 8 sur 70 % de CPU. worker : consumers Kafka (SmallRye Reactive Messaging). - Kafka en service
custom(apache/kafka:4.3.1, KRaft), PostgreSQL 17 du catalogue, Services internes ; backup PostgreSQL vers OOS.
Coût mensuel estimé
Calculé avec bige-ops estimate --json sur le catalogue public Outscale synchronisé le 17 septembre 2026, Région eu-west-2, en € HT par mois (730 heures). Estimation indicative, sur la grille publique ; le trafic sortant est à 0 € HT au catalogue public de cette Région.
| Ligne bige-ops | Ce que c’est | € HT / mois |
|---|---|---|
| OOS quarkus-backups — 50 GiB | sauvegardes PostgreSQL | 1,25 € |
| OKS control plane — cp.3.masters.small | control plane HA (3 masters) | 94,90 € |
| Nodepool default — tinav6.c4r8p2 × 3 | 3 nœuds : 12 vCPU, 24 GiB, disques inclus | 427,20 € |
| Total estimé | 523,35 € |
LBU de l’API. Le Service api crée un LBU à 21,90 € HT par mois au même catalogue : 545,25 € HT par mois au total.
Le projet utilisé, à reproduire chez toi :
bige-ops init -n stack-quarkus-oks-postgresql-kafka bige-ops add layout custom --name quarkus --runtime java --web none --worker \ --db postgres --topology oks --lbu # puis project.yaml ajusté comme ci-dessous bige-ops validate bige-ops estimate --json
name: stack-quarkus-oks-postgresql-kafka
region: eu-west-2
components:
- type: stack
name: quarkus
topology: oks
services: [api, worker, postgres, kafka]
images: {postgres: 'postgres:17'}
control_plane: cp.3.masters.small
nodepools:
- {name: default, type: tinav6.c4r8p2, count: 3}
service_config:
postgres:
backup: {enabled: true, oos_bucket: quarkus-backups}
api:
hpa: {enabled: true, min: 2, max: 8, target_cpu: 70}
kafka: {kind: custom, image: 'apache/kafka:4.3.1', port: 9092, memory_mb: 2048}
- {type: oos_bucket, name: quarkus-backups, bucket: quarkus-backups, size: 50, purpose: backups}
Données et messagerie : versions, backups, failles connues
| Base | Image épinglée | Backup vers OOS | Failles connues |
|---|---|---|---|
| PostgreSQL | postgres:17 | pg_dump → gzip → bucket OOS | fiche OpenCVE |
| Apache Kafka | apache/kafka:4.3.1 | réplication et rétention Kafka | fiche OpenCVE |
PostgreSQL. PostgreSQL 18 (supporté jusqu’en novembre 2030), 17 (novembre 2029), 16 (défaut bige-ops, novembre 2028) et 15 (novembre 2027) sont maintenus ; 14 sort du support le 12 novembre 2026. La simulation épingle postgres:17. Source : politique de versions PostgreSQL. Côté durcissement : un rôle applicatif dédié (jamais le superutilisateur), des règles pg_hba.conf limitées au CIDR du Net en scram-sha-256, et des mises à jour mineures régulières (la majeure reste celle que tu épingles).
Kafka. Mode KRaft (sans ZooKeeper depuis Kafka 4), SASL/SCRAM ou mTLS, ACL par topic. Guide Quarkus : Apache Kafka avec Quarkus · image apache/kafka.
Le backup est activé dans la simulation (backup.enabled + bucket OOS) : bige-ops crée le bucket, protégé contre la destruction, et prépare backup.sh (bucket, endpoint, planning) où tu branches le dump. Sans backup, Visual, preflight et plan te le signalent. Détail : OOS & backups.
Exposition : ce qui est ouvert, et à qui
- Entrées publiques : l’API Quarkus (
api). Chacune est un ServiceLoadBalancer, donc un LBU Outscale ; le HTTPS se branche avecexpose.tls.server_certificate_id(ORN d’un certificat EIM) et le LBU termine le TLS, sans Ingress ni cert-manager à maintenir. - Bases et brokers : Services internes (ClusterIP), joignables seulement depuis le cluster. Jamais de
type: LoadBalancerni de NodePort vers une base. - API Kubernetes : à l’apply, l’accès admin du cluster est restreint à ton IP publique (
/32) ou au CIDR deOKS_ADMIN_CIDR. - Nœuds : workers jetables gérés par OKS ; ne fonde aucune règle sur leurs IP.
Détail : OKS & pods, réseau · ouvrir ou non, load balancers dans OKS.
Vulnérabilités : ce que bige-ops vérifie
Des failles, il y en aura toujours : l’important est de voir d’abord celles qui sont exposées. Avec ta clé OpenCVE, bige-ops compare les composants de ta stack, y compris les images de tes Dockerfile et docker-compose, au registre mondial des vulnérabilités (CVE), puis classe tout par urgence : ce qui est exposé à Internet d’abord. Pourquoi le refaire toi-même ? C’est chez toi, sur ton poste, et c’est gratuit. La méthode complète : ce que bige-ops vérifie.
Avec ta clé API OpenCVE (Settings), l’onglet Vulnérabilités lit ta simulation : chaque composant reconnu, image Docker ou paquet installé, est rapproché de sa fiche éditeur / produit, à raison d’une requête par produit. Les failles connues qui remontent sont classées par risque :
- Gravité : chaque faille a une note sur 10 (CVSS) ; critique dès 9, haute dès 7, moyenne dès 4. Une faille déjà exploitée par des attaquants (elle figure sur la liste KEV de la CISA, l’agence américaine de cybersécurité) compte au moins comme haute.
- Exposition dans ta simulation : un composant joignable depuis Internet, directement ou derrière le LBU, garde sa gravité ; un composant en subnet privé descend d’un cran, sauf si la faille est déjà exploitée.
- Départage : à risque égal, les failles déjà exploitées d’abord, puis la note sur 10, puis la probabilité d’être exploitée prochainement (EPSS). Le filtre « important » ne garde que les failles déjà exploitées ou notées 7 et plus.
Le rapprochement se fait au niveau du produit, pas de la version : à toi de recouper
avec la version que tu as épinglée. Une image en latest ressort en plus
comme « version non épinglée ». Le résultat est mis en cache dans la simulation et se
rafraîchit à la demande.
| Composant | Fiche OpenCVE | Dans bige-ops |
|---|---|---|
| PostgreSQL | PostgreSQL | reconnu automatiquement depuis l’image postgres:17 · exposition : privée (pod interne) |
| Kubernetes (OKS) | Kubernetes | reconnu automatiquement (topologie oks) · exposé par les LBU |
| Apache Kafka | Apache Kafka | fiche de référence (pas encore reconnu automatiquement) |
| Quarkus, Hibernate ORM | Quarkus · Hibernate ORM | fiche de référence (pas encore reconnu automatiquement) |
| JDK | OpenJDK | fiche de référence (pas encore reconnu automatiquement) |
L’analyse du code Java arrive ; ta stack est déjà couverte : composants et images comparés aux failles connues avec OpenCVE, exposition sur OKS et coût sur Outscale. Détail : Java sur Outscale.
Ce que bige-ops vérifie avant le deploy
bige-ops validate: structure du projet, services custom (une image est requise pour un pod), HTTPS parexpose.tls.server_certificate_id(ORN EIM).bige-ops preflight: clés Outscale présentes, OMI résolue, stack déclarée, IP des hôtes après l’apply, Dockerfile trouvé, secrets de build et d’exécution présents dans le coffre, jeton GitHub pour les dépôts privés, et alerte si une base n’a pas de backup vers OOS. Une erreur bloque le deploy.bige-ops plan: le plan Terraform et les specs OKS avant tout apply, avec les risques de perte de données signalés ; les buckets OOS sont protégés contre la destruction.- Vulnérabilités : composants de la stack comparés aux failles connues avec OpenCVE et classés selon leur exposition, images en
latestsignalées, dépôts relus sur ton poste, sans clé ni IA.
OpenCVE, la source des failles connues
Pour savoir quelles failles connues touchent les briques de ta stack, bige-ops s’appuie sur OpenCVE. OpenCVE rassemble les failles publiées dans le registre mondial des vulnérabilités (CVE) et ses sources officielles (NVD, MITRE, liste KEV des failles déjà exploitées tenue par la CISA, l’agence américaine de cybersécurité…), donne à chacune sa note de gravité sur 10 (CVSS) et sa probabilité d’être exploitée (EPSS), et les range par éditeur et par produit, consultables dans son explorateur. Le projet est open source : son code, ses issues et les contributions de sa communauté vivent sur GitHub, et il s’installe aussi chez toi. Merci à ses mainteneurs et à tous ceux qui font vivre ce référentiel : c’est grâce à eux que chaque composant de ta simulation a sa fiche de failles à jour.
Docs officielles
Langages : Java · Kotlin · Scala.
Pour aller plus loin : layouts & topologies, VMs, OKS, volumes BSU, OOS, LBU, réseau, régions, bases de données, catalogue de prix. Toutes les stacks : stacks & langages.