hoortrend.com

Documentation

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.

DomaineAreaCe qui est faitWhat is donePreuveEvidence
CI/CDPipelines 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
KubernetesDéploiement progressif sans coupure, PDB, sondes, requests et limits, ConfigMap de profil sans redéploiementZero-downtime rolling updates, PDBs, probes, requests and limits, profile ConfigMap without redeployingmanifestes en directlive manifests · demo-app/k8s
Kubernetes, de l'intérieurKubernetes, from the insideClient 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 directAn API client built like the controllers (LIST + WATCH, resumption after 410 Gone), streamed logs, a synthetic probe, every sandbox action told and timed liveinside.hoortrend.com (dépôt privé)(private repository)
SécuritéSecurityRBAC 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 CILeast-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 CIdemo-app/k8s/10-deployment.yaml · 00-namespace.yaml · manifestes du bac à sablesandbox manifests · sécuritésecurity
TestsTestsTests 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éploiementTests 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 deploymentdemo-app/tests · workflows
ObservabilitéObservabilitykube-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 measuredGrafana · Observability · inside
FiabilitéReliabilitySauvegardes vérifiées par restauration, procédures, retour arrièreBackups checked by restoring them, runbook, rollbackbackups · runbook
RéseauNetworkingUn seul point d'entrée HTTPS, services hors cluster en upstream, TLS automatique, redirections de domaine sans coupureA single HTTPS entry point, off-cluster services as upstreams, automatic TLS, domain moves without downtimeexternal · TLS · how
Identité et accèsIdentity and accessServeur 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é applicationOAuth 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 sideauth.hoortrend.com · identity
ConteneursContainersImages non-root, construites sans privilège par Kaniko dans un podNon-root images, built without privileges by Kaniko inside a poddemo-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.