Aller au contenu
EdgeServers
Blog

FastAPI sur Kubernetes — le déploiement production que nous livrons par défaut

15 mai 2026 · 1 min de lecture · par Sudhanshu K.

FastAPI a atteint l'ubiquité en production autour de 2023. Le framework lui-même est excellent. La story de déploiement qui l'entoure est pleine de patterns qui presque marchent — un seul processus uvicorn sous PID 1, shutdown gracieux manquant, pas de vérification OpenAPI en CI, Pydantic v1 qui traîne encore. Chacun a été un incident client à un moment donné.

Voici le template de déploiement FastAPI que nous appliquons à chaque nouveau service que nous gérons sur Kubernetes.

Dockerfile + endpoints de healthcheck

FROM python:3.12-slim
WORKDIR /app
COPY requirements.lock.txt ./
RUN pip install --no-cache-dir --require-hashes -r requirements.lock.txt
COPY . .
USER 1000
EXPOSE 8000
CMD ["gunicorn", "app.main:app", "--worker-class", "uvicorn.workers.UvicornWorker", \
     "--workers", "4", "--bind", "0.0.0.0:8000", "--timeout", "30"]
@app.get("/healthz", include_in_schema=False)
async def liveness(): return {"ok": True}
 
@app.get("/ready", include_in_schema=False)
async def readiness(): return {"ok": await db.is_connected()}

Liveness c'est « le processus est up ». Readiness c'est « le processus peut servir du trafic ». Ne les confondez pas — une base de données lente devrait sortir un pod de la rotation, pas le redémarrer.

L'article complet couvre :

  • Pydantic v2 (model_config, computed_field, model_validator) — l'histoire de migration
  • Choix du serveur ASGI : Gunicorn + UvicornWorker (défaut), Hypercorn (HTTP/2), Granian (plus récent)
  • Vérification du schéma OpenAPI en CI — faire échouer le build si le schéma a dérivé
  • Logging structuré avec le request ID propagé à travers les dépendances
  • Patterns de tâches en arrière-plan — fastapi.BackgroundTasks vs Celery vs Arq
  • Manifestes Kubernetes : resource requests, readinessProbe, terminationGracePeriodSeconds

Nous livrons ce template sur chaque service FastAPI managé.

Article complet disponible

Lire l'article complet