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 downne 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.
$ 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.