PLATFORM ARCHITECTURE

How It All Fits Together

Every layer — from Talos Linux to the Homepage dashboard — designed as a cohesive system on bare-metal infrastructure.

CLUSTER SPECIFICATIONS

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

Network Topology

All traffic enters through a single Cilium Gateway with eBPF-accelerated routing to 20+ backend services.

EXTERNAL

☁ Internet Traffic

DNS RESOLUTION

CoreDNS

*.exitthecloud.eu → 192.168.0.200

INGRESS LAYER

Cilium Gateway API

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

IP: 192.168.0.200 (L2 ARP)

ROUTING LAYER

HTTPRoutes (per service)

Host-based routing · Path matching · Header injection

SERVICE LAYER

Kubernetes ClusterIP Services

28 services across 35 namespaces

GitOps Pipeline

Every change flows through Git. ArgoCD's App-of-Apps pattern auto-discovers and reconciles 43+ applications.

⟨⟩

Git Push

GitHub

🔄

ArgoCD

Kubernetes

Reconciled

4 DEPLOYMENT PATTERNS

Pattern A Helm + Configs

External Helm chart with local values and companion manifests

Keycloak, Cilium, ESO, Longhorn

Pattern B Helm + Inline

Single ArgoCD Application with directory exclusion

SurrealDB, Qdrant, Garage, Supabase

Pattern C Wrapper Chart

Local Chart.yaml wrapping external dependency

Homepage, Harbor, Backstage, Falco

Pattern D Raw Manifests

Plain Kubernetes YAML without Helm

ArgoCD, Dragonfly, AIBrix, Matomo

Secrets Management Flow

Zero secrets in Git. Everything flows through Vault with External Secrets Operator as the bridge.

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

Exposed Services

28 services accessible through the shared Cilium Gateway at *.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 manages everything that can't be expressed as Kubernetes manifests.

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