Apostolos Gerodimos · Platform Engineer

Kubernetes as the API.
Git as the source of truth.

I'm a Platform / DevOps engineer with 5+ years running AWS and Kubernetes in production. This is the Internal Developer Platform I designed and built on my own: developers onboard services, provision databases and ship deployments from a form, while Go operators and GitOps do the rest.

  • Self-service from a form. Services, databases and deployments, each ending in a reviewed pull request.
  • Kubernetes-native. A platform API of four custom resources, reconciled by Go operators I wrote.
  • GitOps end to end. One Argo CD hub delivers every change to dev and prod on EKS.
Watch the demo Two recorded runs, from the Backstage form to running software: onboard a service (97 s) and a database (3 min). Explore architecture How it fits together, then one page per area with its design choices, trade-offs and what isn't built yet. Live portal The live portal: Backstage on EKS, guest sign-in, read-only. It only runs while I'm working on it, so it may be offline. Checking whether the live platform is up… Live now. The real Backstage portal on running EKS clusters. Sign in as a guest: read-only. Offline right now. Its EKS clusters only run while I'm working on the platform, to keep AWS costs down. The golden-path videos show a real run; this turns green by itself when it's back.
  • Kubernetes
  • Go
  • Argo CD
  • Backstage
  • Crossplane
  • AWS
The reconciliation loop: developer intent enters Git; Argo CD syncs it into the Kubernetes platform API; controllers reconcile it and commit desired state back to Git; Argo CD delivers the running services.syncapplyreconcilecommitGitdesired stateArgo CDGitOps syncKubernetes APIplatform resourcesControllersGo operatorscontinuousreconciliationdeveloper intentrunning services

Golden paths

See the platform in action

Two real runs, edited for length. The developer fills in a form; everything after it is the platform.

Onboard a Service · 97 seconds

Goal
A new service, running in dev.
In Backstage
Name, owner and template. Review and merge the pull request it opens.
Automated
The repository is created and scaffolded with CI; the first build deploys to dev through GitOps.
Outcome
A healthy service on a public HTTPS URL, with its rollout and metrics in the portal.
How golden paths work →

Onboard a Database · 3 minutes

Goal
A Postgres database for an existing service.
In Backstage
Three short forms: request it, apply its schema, bind it. Each opens a pull request.
Automated
The database is provisioned on AWS, its credentials stored, its migrations applied forward-only.
Outcome
The service's pods start with the credentials mounted. No secret ever passes through Git.
How bindings work →

Architecture

The platform at a glance

A developer only ever talks to Backstage. Everything after that is Git, and the automation that reconciles it.

  1. 1 · Request

    Developer experience

    Backstage provides the self-service workflows. Every golden path ends in a reviewed pull request, and every result is read back into one page per service.

  2. 2 · Reconcile

    Platform API & operators

    Custom Kubernetes resources define the platform's abstractions. Go controllers reconcile them into repositories, deployments and infrastructure.

  3. 3 · Deliver

    GitOps delivery

    Argo CD delivers every reviewed change from one management cluster to dev and prod, and every environment reports back to one place.

Want every box and arrow? Open the full architecture diagram →

Code

Built end-to-end

Designed and implemented by one engineer, from the AWS infrastructure to the developer portal. Each repository owns one part of the platform and documents it in its README.

About me

Hi, I'm Apostolos

Tolis to most people. I'm a Platform / DevOps engineer based in Athens, Greece, with 5+ years running AWS and Kubernetes in production. The part of the job I enjoy most is turning repeated infrastructure work into something developers can serve themselves.

I built this platform in my own time to take that idea end to end: designing the APIs, writing the operators, and living with the trade-offs. Before infrastructure I studied Electrical and Computer Engineering, and wrote GPU code for research.

  • Self-service over tickets. A form and a reviewed pull request beat a queue of requests to the platform team.
  • Git as the record. If a change isn't in Git, it drifts, and nobody can review it.
  • Honest trade-offs. Every design page here says what it costs and what isn't built yet.