Skip to content
EN DE
Back to Work
Case studyRole started

Making a bare-metal Kubernetes platform operable

Build an on-premise platform for enterprise applications and reduce manual work in the deployment process.

  • Kubernetes
  • FluxCD
  • GitHub Actions
  • Ceph
  • Grafana
  • Grafana Alloy
  • Prometheus
  • Loki
  • Flannel
  • Cilium
  • Keycloak
  • SonarQube
  • HashiCorp Vault
  • cert-manager
  • Let’s Encrypt
  • Trivy
Bare-metal nodes
12
Enterprise applications
10+
Less manual deployment time
40%

Reported project outcomes

The problem I was working through

At jaraco, the platform work started with a practical question: how do you make a bare-metal Kubernetes environment predictable enough for enterprise applications, without hiding the operational details that matter when something fails?

I worked as a Working Student, Platform & Data from February 2025 in Münster. My role covered the cluster foundation and the surrounding services that make a platform usable in practice: storage, observability, networking, identity, secrets, certificates, quality checks, scanning, and deployment automation.

What had to work together

The cluster itself is only one part of the system. A workload also depends on the storage layer, network reachability, certificates, secrets, identity, logs, metrics, and the path from source control to the running application.

That is why the work was not simply “set up Kubernetes.” I contributed to a 12-node on-premise bare-metal Kubernetes platform that hosts 10+ enterprise applications, and I connected it with the services needed to operate those applications:

  • Ceph for storage.
  • Grafana, Grafana Alloy, Prometheus, and Loki for observability.
  • Flannel and Cilium as part of the networking integrations.
  • Keycloak, SonarQube, HashiCorp Vault, cert-manager with Let’s Encrypt, and Trivy for identity, quality, secrets, certificates, and scanning.
  • FluxCD and GitHub Actions to make delivery more repeatable and reduce manual deployment work.

Platform overview

This diagram is a logical view of platform responsibilities. It is not a physical network diagram or an internal security topology.

GitHub Actions and FluxCD support delivery to a 12-node Kubernetes platform. Enterprise applications are supported by Ceph storage, observability, networking, and security integrations.

What the metrics mean

The useful part of the 12-node figure is not the number by itself. It shows the platform was large enough that manual, one-off handling would become hard to reason about. The platform also hosts 10+ enterprise applications, so delivery and operational checks had to be repeatable across more than one workload.

The reported outcomes include 99% uptime and a 40% reduction in manual deployment time from the automated workflows. I treat those as project outcomes, not live status indicators. The deployment metric refers to manual deployment effort; it is not a claim about total lead time, release frequency, or application-level performance.

The engineering habit this reinforced

GitOps is useful because it gives the platform a desired state, but it also changes how failures are investigated. A successful CI run is only part of the story. The source revision has to be fetched, the controller has to reconcile it, the workload has to become ready, and the application still needs healthy signals.

That habit now shapes how I think about platform work: make the deployment path inspectable, avoid relying on manual memory, and close an investigation only when the intended revision and the runtime state agree.

Current work around the platform

Alongside the platform work, I am developing an AI-integrated data mesh system. That work is ongoing and is not included in the completed deployment metrics above.

Further reading