ARCHITECTURE DE LA PLATEFORME

Comment tout s'assemble

Chaque couche — de Talos Linux au tableau de bord Homepage — conçue comme un système cohérent sur infrastructure bare-metal.

SPÉCIFICATIONS DU CLUSTER

Cluster

edgit-k8s

Kubernetes

v1.35.3

OS

Talos Linux v1.12.6

CNI

Cilium 1.19.1

Control Planes

3 (192.168.0.100-102)

Workers

5 (103-104, 150-151, gx10)

Pod CIDR

10.244.0.0/16

Service CIDR

10.96.0.0/12

Gateway IP

192.168.0.200

LB Pool

192.168.0.200-210

DNS

10.96.0.10 (CoreDNS)

Domain

*.apps.edgeprime.io

Topologie réseau

Tout le trafic entre par une Gateway Cilium unique avec routage accéléré eBPF vers plus de 20 services backend.

EXTERNE

☁ Trafic Internet

RÉSOLUTION DNS

CoreDNS

*.exitthecloud.eu → 192.168.0.200

COUCHE D'INGRESS

Cilium Gateway API

HTTP:80 → HTTPS:443 · TLS termination · Let's Encrypt wildcard

IP: 192.168.0.200 (L2 ARP)

COUCHE DE ROUTAGE

HTTPRoutes (par service)

Routage par hôte · Correspondance de chemin · Injection d'en-têtes

COUCHE DE SERVICE

Services ClusterIP Kubernetes

28 services across 35 namespaces

Pipeline GitOps

Chaque modification passe par Git. Le pattern App-of-Apps d'ArgoCD auto-découvre et réconcilie plus de 43 applications.

⟨⟩

Git Push

GitHub

🔄

ArgoCD

Kubernetes

Reconciled

4 PATTERNS DE DÉPLOIEMENT

Pattern A Helm + Configs

Chart Helm externe avec valeurs locales et manifestes compagnons

Keycloak, Cilium, ESO, Longhorn

Pattern B Helm + Inline

Application ArgoCD unique avec exclusion de répertoire

SurrealDB, Qdrant, Garage, Supabase

Pattern C Chart Wrapper

Chart.yaml local englobant la dépendance externe

Homepage, Harbor, Backstage, Falco

Pattern D Manifestes bruts

YAML Kubernetes simple sans Helm

ArgoCD, Dragonfly, AIBrix, Matomo

Flux de gestion des secrets

Zéro secret dans Git. Tout passe par Vault avec External Secrets Operator comme pont.

graph TD
  TF["Terraform"]:::terraform
  VAULT["Vault 
 kv/v2"]:::vault
  CSS["ClusterSecretStore
vault-backend"]:::store
  ES["ExternalSecret
per-app, per-namespace"]:::external
  KS["Kubernetes Secret"]:::k8s
  POD["Pod
env / volume mount"]:::pod

  TF -->|provision| VAULT
  VAULT --> CSS
  CSS --> ES
  ES --> KS
  KS --> POD

  classDef terraform fill:#0e3a3a,stroke:#06b6d4,color:#67e8f9,stroke-width:2px
  classDef vault fill:#2e2a0e,stroke:#facc15,color:#fde68a,stroke-width:2px
  classDef store fill:#14332a,stroke:#4ade80,color:#86efac,stroke-width:2px
  classDef external fill:#2e1a47,stroke:#a78bfa,color:#c4b5fd,stroke-width:2px
  classDef k8s fill:#1e3a5f,stroke:#60a5fa,color:#93c5fd,stroke-width:2px
  classDef pod fill:#2e1a0e,stroke:#f97316,color:#fdba74,stroke-width:2px

architecture.imageProxyTitle

architecture.imageProxyDesc

graph TD
  POD["Pod Spec
image: docker.io/nginx"]:::pod
  MW["Kyverno Mutating
Webhook"]:::kyverno
  PROXY["Harbor Proxy Cache
proxy-dockerhub / proxy-ghcr
proxy-quay / proxy-gcr"]:::harbor
  VAL["Kyverno Validate
Webhook"]:::kyverno
  SECRET["ESO: harbor-registry
secret per namespace"]:::eso
  RUN["Pod runs with
rewritten image"]:::pod

  POD -->|"Pod creation"| MW
  MW -->|"rewrite: harbor.../proxy-dockerhub/nginx"| PROXY
  VAL -->|"only proxy-* registries allowed"| PROXY
  SECRET -->|"pull credentials"| RUN
  PROXY -->|"pulls from cache"| RUN

  classDef pod fill:#2e1a0e,stroke:#f97316,color:#fdba74,stroke-width:2px
  classDef kyverno fill:#2e1a47,stroke:#a78bfa,color:#c4b5fd,stroke-width:2px
  classDef harbor fill:#14332a,stroke:#06b6d4,color:#67e8f9,stroke-width:2px
  classDef eso fill:#1e3a5f,stroke:#60a5fa,color:#93c5fd,stroke-width:2px

Services exposés

28 services accessibles via la Gateway Cilium partagée sur *.exitthecloud.eu

ArgoCD

argo.exitthecloud.eu

Vault

vault.exitthecloud.eu

Grafana

grafana.exitthecloud.eu

Harbor

harbor.exitthecloud.eu

Keycloak

keycloak.exitthecloud.eu

Homepage

homepage.exitthecloud.eu

Supabase

supabase.exitthecloud.eu

Longhorn

longhorn.exitthecloud.eu

Hubble UI

hubble-ui.exitthecloud.eu

OneDev

onedev.exitthecloud.eu

Matomo

matomo.exitthecloud.eu

n8n

n8n.exitthecloud.eu

SurrealDB

surrealdb.exitthecloud.eu

Qdrant

qdrant.exitthecloud.eu

Garage

garage.exitthecloud.eu

RustFS

rustfs.apps.edgeprime.io

OpenCost

opencost.exitthecloud.eu

AI Platform

ai.exitthecloud.eu

Policy Reporter

policy-reporter.exitthecloud.eu

Firecrawl

firecrawl.exitthecloud.eu

IT-Tools

it-tools.exitthecloud.eu

Paperless-ngx

paperless.exitthecloud.eu

Stirling-PDF

stirling-pdf.exitthecloud.eu

Devtron

devtron.exitthecloud.eu

Honcho

honcho.exitthecloud.eu

Hindsight

hindsight.apps.edgeprime.io

Rclone

rclone.exitthecloud.eu

Mailpit

mailpit.exitthecloud.eu

Infrastructure as Code

Terraform gère tout ce qui ne peut pas être exprimé en manifestes Kubernetes.

terraform/vault

hashicorp/vault

ESO policies, tokens, app secrets, DNS credentials

terraform/keycloak

mrparkers/keycloak

OIDC realm + 10+ clients (ArgoCD, Vault, Grafana, Harbor…)

terraform/harbor

goharbor/harbor

Registry OIDC auth + proxy cache projects (proxy-dockerhub, proxy-ghcr, proxy-quay, proxy-gcr)

terraform/grafana

grafana/grafana

Dashboard provisioning (JSON), data sources