Olivier Guandalini
ProjetsExpérienceContact

DevOps · SRE · Platform engineering

Olivier Guandalini

Ingénieur DevOps et SRE, je fais tourner une infrastructure critique à grande échelle : plus de 400 serveurs Linux on-prem et des clusters Kubernetes. Sur ce site, les plateformes que je construis sur mon temps libre, de bout en bout : de Terraform au GitOps, aux SLO et aux runbooks.

TLSwwwAWS · eu-north-1VPCSpot · 1aSpot · 1bNLBEKS 1.36Secrets ManagerBucket d'étatPod IdentityGitHubInternet
GitOps, depuis gitTraficSecrets

Projets

Deux projets, chacun terminé avant le suivant

Chaque dépôt se clone et se lance : un README pour démarrer en quelques minutes, les décisions écrites, les vérifications rejouées à chaque changement.

Survolez ou touchez un outil pour voir ce que c'est, et ce qu'il fait ici.

Terminé

platform-eks-gitops

Une plateforme Kubernetes développée sur un portable avec k3d, puis validée sur AWS EKS. Argo CD installe chaque composant depuis git, aucun secret n'est dans le dépôt, l'API de démo a ses SLO et ses alertes de burn rate, et une seule commande détruit la partie AWS.

  • KubernetesOrchestrationFait tourner des conteneurs sur un groupe de machines, les relance quand ils tombent et répartit le trafic entre eux.IciLa plateforme y tourne deux fois, sur k3d sur un portable et sur EKS, dans la même version.
  • TerraformInfrastructure en codeDécrit l'infrastructure en code : un plan montre ce qui va changer avant de créer ou de détruire quoi que ce soit.IciCrée le VPC, le cluster EKS, ses nœuds Spot et ses rôles IAM, 28 ressources, puis les détruit toutes.
  • AWS EKSCloudKubernetes géré par AWS : Amazon fait tourner le plan de contrôle, les nœuds font tourner les applications.IciDeux nœuds Spot et pas de NAT Gateway : environ 0,18 $ de l'heure, et make down ne laisse rien qui facture.
  • k3dOrchestrationUn cluster Kubernetes complet dans des conteneurs Docker, sur un portable : la même plateforme en local, gratuitement.IciToute la plateforme sur un portable, en moins de 5 minutes depuis un clone neuf.
  • Argo CDGitOpsMaintient le cluster conforme à ce que décrit git : pour changer la plateforme, on change le dépôt, pas le cluster.IciUn seul manifeste est appliqué à la main ; Argo CD installe tout le reste depuis le dépôt, vague par vague.
  • Envoy GatewayTraficLa porte d'entrée du cluster, avec la Gateway API : elle route le trafic HTTP et HTTPS vers le bon service.IciL'unique entrée, en HTTPS, vers Grafana et vers l'API de démo.
  • External SecretsSecretsRecopie les secrets d'un coffre comme Vault ou AWS Secrets Manager dans Kubernetes : aucun n'est écrit dans git.IciLit Vault sur k3d et AWS Secrets Manager sur EKS : seul le coffre change entre les deux.
  • VaultSecretsLe coffre à secrets de HashiCorp : mots de passe, clés et certificats gardés chiffrés, chaque accès contrôlé et tracé.IciLe coffre sur k3d, en mode dev, à la place d'AWS Secrets Manager.
  • PrometheusObservabilitéCollecte les métriques de chaque service dans le temps, et évalue dessus les règles d'alerte.IciCollecte les métriques de l'API de démo et évalue les règles de burn rate de ses SLO.
  • GrafanaObservabilitéDes tableaux de bord sur les métriques et les logs : ce que fait la plateforme, d'un coup d'œil.IciLe tableau de bord des SLO, livré avec l'application, derrière la gateway.
  • SlothObservabilitéTransforme un SLO écrit en quelques lignes en règles Prometheus et en alertes de burn rate.IciDeux SLO de l'API de démo, disponibilité et latence, deviennent 6 groupes de règles.
  • GitHub ActionsCI/CDLa CI de GitHub : à chaque pull request, elle lance les vérifications, construit et scanne ce qui part, et le déploie.IciLes 14 contrôles du dépôt à chaque pull request ; l'image construite, scannée par Trivy et publiée depuis main.
~/platform-eks-gitops
$ make local-verify
checking the local platform:
  ok    Argo CD applications                       all applications healthy
  ok    gateway, HTTP listener                     listener answers (HTTP 404)
  ok    gateway, HTTPS listener                    TLS terminated, issuer CN=platform-local-ca
  ok    secret synced from Vault                   "stored in Vault, never in git"
  ok    Grafana behind the gateway                 reachable over HTTPS (HTTP 200)
  ok    demo API behind the gateway                answers through the gateway
  ok    demo API scraped by Prometheus             ServiceMonitor in place
  ok    SLO rules from Sloth                       6 rule groups generated by Sloth
  ok    SLO dashboard in Grafana                   dashboard shipped with the application

Mesuré depuis un clone neuf : 4 minutes 33 secondes jusqu'à ce contrôle tout au vert.

Terminé

portfolio-site

Ce site. Des pages statiques en deux langues, lisibles sans script, vérifiées à chaque pull request (liens, types, Lighthouse à 90 ou plus), puis déployées sur GitHub Pages avec un jeton OIDC éphémère plutôt qu'une clé stockée.

  • AstroWebUn générateur de site : les pages sont construites une fois en HTML et CSS statiques, sans framework envoyé au navigateur.IciToutes les pages de ce site, en deux langues, lisibles sans script : il ne sert qu'à la visite guidée et à faire apparaître les blocs au défilement.
  • TypeScriptLangageDu JavaScript typé : une erreur, comme une traduction manquante, fait échouer le build au lieu d'arriver sur la page.IciLes textes de chaque page sont typés : une traduction manquante fait échouer le build.
  • GitHub ActionsCI/CDLa CI de GitHub : à chaque pull request, elle lance les vérifications, construit et scanne ce qui part, et le déploie.IciLiens, types, la visite cliquée dans Chrome et Lighthouse à chaque pull request, puis le déploiement.
  • GitHub PagesWebL'hébergement statique de GitHub : ce site y est publié à chaque merge, sans serveur à faire tourner.IciHéberge ce site, déployé avec un jeton OIDC éphémère plutôt qu'une clé stockée.
  • LighthouseTestsL'audit de page de Google : performance, accessibilité, bonnes pratiques et référencement, chacun noté sur 100.IciNote chaque page de chaque pull request, qui échoue si l'une passe sous 90.