Stop 08 · Kubernetes & OrchestrationProjects · 1/1

Deploy a Multi-Service App on Kubernetes

Part of the DevOps Roadmap

In short

This is where the separate pieces become one working system: a frontend, an API and a database on a cluster you control, reachable through one URL. It's the project interviewers love to ask about.

The practice project for this phase — deploy an application with multiple interconnected services (e.g. a frontend, backend, and database) onto a Kubernetes cluster, wiring together Deployments, Services, and Ingress.

The mascot passes a plate through a serving hatch between a front counter, a kitchen and a storeroom.

Think of it like this

Running a small restaurant

A restaurant has a front counter, a kitchen and a storeroom. Customers only see the counter, the kitchen never talks to the street, and the storeroom keeps stock safe overnight. Your frontend, API and database are the same three rooms, connected by Services.

Watch it happen

The build plan

Images
Database
API
Frontend
Ingress
Verify

1/6Write Dockerfiles for frontend and API, build them with pinned tags and push to a registry like GHCR.

The big ideas

What you need to know

Manifests in Git

Keep every YAML file (or a Helm chart) in the repo, so the whole app can be rebuilt from scratch with one command.

Secrets stay out of Git

Create Secrets from the CLI or a secrets tool. Your README explains how, without the real values.

Probes and resources

Readiness probes and CPU or memory requests on every container. They make rollouts and scheduling behave.

Document it

A README with an architecture diagram, setup steps and what you'd improve. Reviewers read this first.

See it in code

Walk through the code

yaml
1containers:2  - name: api3    image: ghcr.io/you/shop-api:1.0.04    ports: [{ containerPort: 3000 }]5    env:6      - name: DATABASE_URL7        valueFrom: { secretKeyRef: { name: db-creds, key: url } }8    readinessProbe:9      httpGet: { path: /healthz, port: 3000 }10      periodSeconds: 511    resources:12      requests: { cpu: 100m, memory: 128Mi }13      limits: { memory: 256Mi }

1/4A pinned image tag from your registry. Never latest in a project you want to roll back.

This is the container part of the API Deployment, the piece people most often get wrong. Your API needs a /healthz route that checks it can reach the database.

Save yourself the pain

Common mistakes

Oops

Exposing the database with a NodePort so you can 'check it from your laptop'.

Do this instead

Keep it ClusterIP only. Use kubectl port-forward svc/db 5432 when you need to look inside.

Oops

Shipping without probes, then seeing errors during every rollout.

Do this instead

Add readiness probes from day one, so new pods only get traffic once they're actually ready.

Your mission

First milestone: API plus database

~45 min

Quick check

Your API pods are Running but users get errors for 20 seconds during every rollout. What's the most likely fix?

Go deeper

  1. 1Choose a simple multi-service sample app to keep focus on the Kubernetes configuration itself.
  2. 2Write Deployments, Services, ConfigMaps, and an Ingress for the full application.
  3. 3Document your manifest structure in a README so someone else could deploy it themselves.

Stuck on this topic? Ask an Insider

Get 1:1 guidance from people who've walked this exact path — on the InsideEdge app.

Download
InsideEdge