INTERNAL TECHNICAL WALKTHROUGH
Inside the platform — a guided tour of the stack.
First the shape of a customer tenant. Then we follow one change all the way through — from a developer's laptop and a git push to an integration running in production.
What we'll cover
Follow one change from local development to prod
We'll dive into each link, then come back to this map. Next: local development→
Build and test on your laptop, then push
- Scaffold from a template repo (Camel Quarkus or .NET)
- Write the route — real code in your own repo
- Run & test locally — fast inner loop
- git push to main → triggers CI
Two runtimes, one workflow. The platform doesn't care which language — it cares about the contract.
The push landed. Next: continuous integration→
CI runs from one shared set of workflows
CI = on every change, automatically build, test, and package. A PR on a feature branch runs build + test for fast feedback; a merge to main also builds the image and bumps the catalog. The logic lives in one shared place.
One change to the shared workflow updates CI for every integration repo.
The test build gives fast PR feedback; container-build then produces the final, scanned image that ships.
The runner builds and pushes a digest; Harbor scans on push
Runners reach the internet only through Squid — proxy args are passed into the Docker build. No Docker-in-Docker.
The build runner has no kubeconfig. It can't touch a cluster — it only produces an artifact.
Harbor scans on push (Trivy is built in). The image lands first, then gets scanned in the registry.
Today self-hosted VMs per customer; we're exploring ephemeral Kubernetes runners spun up per job.
The catalog now says what should run. Next: how it gets deployed→
Three ways to get code onto a cluster
CI runs kubectl / helm straight at the cluster.
- CI needs cluster credentials
- Needs network opening from runner → cluster
- Manual changes drift from Git
- Hard across many repos
Each app repo declares its own deploy; Argo scans them.
- No single release truth
- Every repo reinvents deploy
- Governance scattered
One repo holds desired state for all integrations.
- Single, reviewed source of truth
- App repos = code; catalog = releases
- Argo generates apps from it
The catalog separates "what code exists" from "what should run where" — and makes the second one reviewable.
What it looks like in the Argo CD UI
What you see there
- Every integration is an app — Synced & Healthy, across dev/test/prod
- Sync status — is the cluster matching the catalog?
- Health — are the pods actually up?
- The resource tree — everything the chart generated (Deployment → ReplicaSet → Pods, Service, HTTPRoute, ESO → Secret)
- History & diff — what changed; roll back by reverting the catalog
We go deeper live at the end — drilling into one integration's tree and watching it self-heal.
Argo CD synced it. Next: what it looks like running in the cluster→
It runs in dev. Next: moving it to test and prod→
Promotion: copy the same digest, dev → test → prod
From a laptop to production
Plain code in Git · promotion is a reviewed change · the cluster converges. Now — the layer that makes it friendly.
The dashboard sits on top of all of it
Desired-state actions — onboard, promote, start/stop — become a catalog commit or PR. Argo CD does the rest.
Runtime actions — resend, pause/resume — go through a Cluster-agent in each cluster. Direct, but audited.
One view across dev / test / prod: health, messages, logs, metrics — the friendly face over Argo CD, the catalog, Harbor and the runtime.
Live demo: a change from push to running, promoted and operated — all from here.
How the dashboard is built — and where it's going
Roadmap: live updates to the browser via SSE / WebSocket (polling today) · a runtime command queue for pause · resume · resend, fully audited.
Reads desired & actual state and writes config back as Git PRs — one pane of glass, never in the data path.
Thanks
- Next runtime: prove the .NET template against the same contract
- Runtime adapter: a framework-specific Camel / .NET adapter for safe message handling and database writes — idempotency and resend
- CI as a feature: managed, autoscaling runners (ARC / GARM)
- Infra automation: look into automating deployment of the infra stack