Preuves et limites
Evidence and limits
Ce que le lab démontre, où le vérifier, et ce qu'il ne fait pas.
What the lab demonstrates, where to check it, and what it does not do.
Compétences et preuvesSkills and evidence
Chaque ligne renvoie à ce qui le prouve : un fichier du seul dépôt public (demo-app), une section de cette page, ou le cluster en direct. Les autres dépôts sont privés.
Each row links to what proves it: a file of the only public repository (demo-app), a section of this page, or the live cluster. The other repositories are private.
| Domaine | Area | Ce qui est fait | What is done | Preuve | Evidence |
|---|---|---|---|---|---|
| CI/CD | Pipelines GitLab validate → build (Kaniko) → scan (Trivy, bloquant) → promote → deploy → verify dans chaque projet qui construit une image ; merge requests sans publication, fusionnées seulement si le pipeline réussit ; déploiements sérialisés par resource_group ; demo-app synchronisé par Argo CD (GitOps, détails) | GitLab pipelines validate → build (Kaniko) → scan (Trivy, blocking) → promote → deploy → verify in every project that builds an image; merge requests without publishing, merged only when the pipeline passes; deployments serialised by resource_group; demo-app synced by Argo CD (GitOps, details) | demo-app/.gitlab-ci.yml · workflows | ||
| Kubernetes | Déploiement progressif sans coupure, PDB, sondes, requests et limits, ConfigMap de profil sans redéploiement | Zero-downtime rolling updates, PDBs, probes, requests and limits, profile ConfigMap without redeploying | manifestes en directlive manifests · demo-app/k8s | ||
| Kubernetes, de l'intérieur | Kubernetes, from the inside | Client de l'API sur le modèle des contrôleurs (LIST + WATCH, reprise après 410 Gone), logs en flux, sonde synthétique, chaque action du bac à sable racontée et chronométrée en direct | An API client built like the controllers (LIST + WATCH, resumption after 410 Gone), streamed logs, a synthetic probe, every sandbox action told and timed live | inside.hoortrend.com (dépôt privé)(private repository) | |
| Sécurité | Security | RBAC au moindre privilège, Pod Security « restricted », NetworkPolicy, pare-feu sur l'interface publique du worker, conteneurs non-root en lecture seule, CSP stricte, détection de secrets et scan d'images bloquant en CI | Least-privilege RBAC, Pod Security “restricted”, NetworkPolicy, a firewall on the worker's public interface, non-root read-only containers, strict CSP, secret detection and a blocking image scan in CI | demo-app/k8s/10-deployment.yaml · 00-namespace.yaml · manifestes du bac à sablesandbox manifests · sécuritésecurity | |
| Tests | Tests | Tests du moteur d'inside.hoortrend.com sur un enregistrement réel du bac à sable (dépôt privé) ; tests HTTP de demo-app ; tests unitaires et de bout en bout du service de contact contre un serveur SMTP jetable (dépôt privé) ; test de fumée après chaque déploiement | Tests of inside.hoortrend.com's engine on a real recording of the sandbox (private repository); demo-app's HTTP tests; unit and end-to-end tests of the contact service against a throwaway SMTP server (private repository); smoke test after each deployment | demo-app/tests · workflows | |
| Observabilité | Observability | kube-prometheus-stack, règles d'alerte écrites pour le lab, alertes envoyées par mail, tableaux de bord, alertes affichées en direct, retard de la supervision sur l'API mesuré | kube-prometheus-stack, alert rules written for the lab, alerts sent by mail, dashboards, alerts shown live, the monitoring's delay behind the API measured | Grafana · Observability · inside | |
| Fiabilité | Reliability | Sauvegardes vérifiées par restauration, procédures, retour arrière | Backups checked by restoring them, runbook, rollback | backups · runbook | |
| Réseau | Networking | Un seul point d'entrée HTTPS, services hors cluster en upstream, TLS automatique, redirections de domaine sans coupure | A single HTTPS entry point, off-cluster services as upstreams, automatic TLS, domain moves without downtime | external · TLS · how | |
| Identité et accès | Identity and access | Serveur OAuth 2.0 / OpenID Connect (PKCE, JWT RS256, JWKS, rotation de clé, TOTP), SSO entre quatre applications dont Grafana et GitLab, droits limités côté application | OAuth 2.0 / OpenID Connect server (PKCE, RS256 JWT, JWKS, key rotation, TOTP), SSO across four applications including Grafana and GitLab, rights limited on the application side | auth.hoortrend.com · identity | |
| Conteneurs | Containers | Images non-root, construites sans privilège par Kaniko dans un pod | Non-root images, built without privileges by Kaniko inside a pod | demo-app/Dockerfile · Dockerfiles du portfolioportfolio Dockerfiles |
Pas encore en place, donc pas revendiqué : agrégation de logs, traces, SLO formels, infrastructure du cluster décrite en code (l'inventaire Kubespray n'est pas versionné).
Not in place yet, so not claimed: log aggregation, tracing, formal SLOs, the cluster's infrastructure described as code (the Kubespray inventory is not versioned).
Limites connuesKnown limits
Ce lab est une démonstration, pas une production à haute disponibilité :
- Un seul worker. Les deux pods de chaque application tournent sur la même machine : elle protège d'un crash de pod, pas d'une panne de machine.
- Un seul plan de contrôle (pas de haute disponibilité de l'API ni d'etcd).
- Logs gardés 14 jours dans Loki, sur le disque d'un seul nœud : pas de copie ailleurs.
- Une seule version en ligne : pas d'environnement de préproduction, les merge requests construisent sans déployer.
- Le terminal k9s du lab est une émulation alimentée par l'API, pas un vrai terminal distant.
- Le serveur d'identité tourne en un seul exemplaire (SQLite) : quelques secondes d'indisponibilité à chaque déploiement, sessions de notes et notes de l'API perdues au redémarrage.
- inside.hoortrend.com tourne en un seul exemplaire et garde ses récits en mémoire : ils repartent de zéro à chaque déploiement.
- Argo CD ne gère que demo-app : les manifestes des autres applications sont encore appliqués à la main.
This lab is a demonstration, not a highly available production:
- One worker. Both pods of each application run on the same machine: that guards against a pod crash, not a machine failure.
- One control plane (no API or etcd high availability).
- Logs kept for 14 days in Loki, on the disk of a single node: no copy elsewhere.
- A single live version: no staging environment, merge requests build without deploying.
- The lab's k9s terminal is an emulation fed by the API, not a real remote terminal.
- The identity server runs as a single instance (SQLite): a few seconds of downtime at each deploy; notes sessions and the API's notes are lost on restart.
- inside.hoortrend.com runs as a single instance and keeps its stories in memory: they start from scratch at each deploy.
- Argo CD only manages demo-app: the other applications' manifests are still applied by hand.