< cd ../blog
May 12#kubernetes#architecture

The Cost of Premature Kubernetes Adoption

Kubernetes is the default answer to "how do we run our services?" for a lot of teams. But the default answer isn't always the right one — especially when you're small.

What you actually pay for

Running Kubernetes in production is not free, even when the control plane is managed:

  • Cognitive load. Every engineer now needs a mental model of pods, services, ingress, RBAC, and the YAML that glues them together.
  • On-call surface area. More moving parts means more ways to get paged.
  • Tooling sprawl. Helm, ArgoCD, cert-manager, external-dns... the list grows.
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
spec:
  replicas: 3
  template:
    spec:
      containers:
        - name: web
          image: ghcr.io/acme/web:1.4.2

That snippet looks innocent. The operational reality behind keeping it healthy is anything but.

When it's worth it

Reach for Kubernetes when you have multiple teams, multiple services, and a genuine need for self-service deployment. Until then, a couple of boring VMs behind a load balancer will outrun a cluster you have to babysit.

Boring infrastructure is a feature, not a failure.