Kubernetes is Like a Swiss Army Knife — You'll Mostly Use the Corkscrew
Everyone deploys Kubernetes like they’re Google. Then they spend six months figuring out why their three-service app needs 15 YAML files.
Kubernetes has 50+ components, 20+ resource types, and a learning curve that looks like a cliff. And 90% of the time, you just need a corkscrew.
The corkscrew, in Kubernetes terms, is: a Deployment, a Service, and an Ingress. That’s it. Three YAML files. That covers most small-to-medium applications. Everything else — StatefulSets, DaemonSets, CRDs, Operators, Service Meshes — is the tiny scissors, the nail file, and the thing you’ve never figured out what it does.
Why Everyone Over-Engineers Kubernetes
When you first learn Kubernetes, every feature looks essential. “Horizontal Pod Autoscaling? I need that!” No, you don’t. Your app gets 200 requests a day. Two replicas are plenty. “Service Mesh? Absolutely essential for observability!” No. Your app has three services. You can trace requests with a spreadsheet.
The drive to over-engineer Kubernetes is driven by a deep fear: what if we need this later? The answer is: you can add it later. Kubernetes was designed to be extended. Start with the corkscrew. Add the bottle opener when you actually need to open a bottle.
The Minimum Viable Cluster
Here’s what you actually need to run a real app in Kubernetes:
- A Deployment — tells Kubernetes which container image to run and how many copies
- A Service — exposes those containers internally so other services can talk to them
- An Ingress — routes external traffic to the right Service based on URL
- A ConfigMap — for non-sensitive config (environment variables, config files)
- A Secret — for sensitive config (API keys, passwords — base64 is not encryption, but it’s better than hardcoding)
Five resources. That’s it. You can run a production app on this for months. When you outgrow it, you’ll know because you’ll feel the pain of not having the feature. Not before.
The Tool Trap
Before you adopt any Kubernetes tool, ask: “Does this solve a problem I actually have right now?” If the answer is no, don’t use it. “But everyone uses Helm!” Great. Do you need templating for your three microservices? Probably not. “But ArgoCD is the gold standard for GitOps!” Fantastic. Do you have a team that can manage an ArgoCD instance? If not, kubectl apply is fine.
Kubernetes is an incredibly powerful Swiss Army knife. But if you’re opening a bottle of wine, just use the corkscrew. Nobody ever said “I wish I had the fish scaler attachment for this wine.”
Stop over-engineering your cluster: Our Kubernetes for the Impatient course teaches you the minimum viable Kubernetes. No fish scaler included.