Back to path
MediumWorking system ~17h· 5 milestones

Add a service mesh: traffic, mTLS, and observability

Two services talk over the network and you have no control or visibility, you can’t shift traffic for a release, can’t prove the connection is encrypted, and can’t see where latency comes from. You add Istio, and suddenly you can route, secure, and observe everything between them without touching the application code.

IstioTraffic managementmTLSRetries & timeoutsMesh observabilityCanary releasesMesh cost/overhead analysisIncident runbooks

What you'll build

Your services running under Istio with sidecar injection, a canary release driven by weighted traffic routing, strict mutual TLS enforced between workloads, retries and timeouts for resilience, and mesh telemetry (Kiali + Grafana) showing the traffic split, success rates, and mTLS status.

See how we teach, before you sign up

You don't just get code dumped on you. Every starter file and every solution is explained line-by-line, in plain English. Here's one real file from this project:

mesh/destinationrule.yamlyaml
apiVersion: networking.istio.io/v1
kind: DestinationRule
metadata:
  name: backend
spec:
  host: backend
  subsets:
    - name: v1
      labels:
        version: v1
    - name: v2
      labels:
        version: v2

Reading this file

  • kind: DestinationRuleDefines named groups of pods (subsets) that the VirtualService can then send weighted traffic to.
  • host: backendThe Service this rule applies to, all traffic to that Service is governed by these subsets.
  • subsets: name v1 / v2Splits the pods into named versions, this is what makes a canary between v1 and v2 possible.
  • labels: version: v1A subset only includes pods carrying this label, it must match the pod labels exactly or the split silently fails.

Declares the subsets the VirtualService weights will reference. Labels MUST match the pods.

That's 1 of 9 explained code blocks in this single project.

The build, milestone by milestone

  1. 1

    Mesh the services

    5 guided steps

    Everything else, routing, mTLS, telemetry, rides on the sidecar proxy. If injection isn’t working, nothing downstream will, so you confirm it cleanly first.

  2. 2

    Route deliberately for a canary release

    5 guided steps

    Routing in the mesh decouples “deployed” from “receiving traffic”, the foundation of safe releases. A canary lets you expose a new version to a small slice and roll forward or back on evidence.

  3. 3

    Enforce mTLS and add resilience

    5 guided steps

    mTLS gives you encrypted, authenticated service-to-service traffic with zero app changes, a baseline security control. Retries and timeouts keep one slow or flaky dependency from taking the whole call chain down.

  4. 4

    See the traffic

    5 guided steps

    A mesh you can’t observe is just overhead. The telemetry is what makes routing and security decisions evidence-based, and what you’ll screenshot to prove the whole thing works.

  5. 5

    Price the mesh and write the runbook

    5 guided steps

    A mesh is never free, every pod now carries an Envoy sidecar and the control plane runs continuously, and the team that operates it needs to know what to do when routing or mTLS silently breaks at 2am.

What's inside when you start

4 starter files, ready to clone
5 guided milestones
5 full reference solutions
9 code blocks explained line-by-line
5 "is it working?" checks
4 interview questions it prepares you for

You'll walk away with

A meshed app with a working, weight-controlled canary release
Kiali/Grafana screenshots showing the traffic split, mTLS status, and per-version latency/error rates
A note on your mTLS rollout strategy and your retry/timeout choices
A mesh cost/overhead report (sidecar tax, control-plane usage, added latency, rough monthly figure)
A one-page incident runbook for the mesh’s common failure modes

This is portfolio-grade. Build it free.

Sign up to unlock every milestone step-by-step, the code skeletons, full reference solutions, and checkable tasks, with your progress saved as you build.

Start building