Istio / Service Mesh — Installation Guide
Install the `istioctl` CLI
Install Istio — Demo Profile (Learning/Evaluation)
The demo profile enables every core feature for hands-on learning, matching Overview's own quick-start path:
Install Istio — Production Profile
For anything beyond local learning, the production profile applies more conservative, production-appropriate defaults:
Enable Sidecar Injection for a Namespace
Istio doesn't automatically inject the Envoy sidecar into every pod cluster-wide — it's opt-in per namespace:
Enable STRICT mTLS
The production-appropriate mTLS mode — rejecting any non-mTLS traffic, per Overview's STRICT/PERMISSIVE distinction:
Verify Everything Works
Common Installation Issues
Pods in a labeled namespace still show only the application container, no sidecar
Labeling the namespace only affects pods created after the label was applied — existing pods need kubectl rollout restart (or manual pod deletion/recreation) to actually receive the sidecar injection.
istioctl proxy-status shows a proxy as STALE
istioctl analyze reports configuration warnings after install
Run this immediately after every install and after every significant config change — it's specifically designed to catch issues (missing DestinationRule, conflicting VirtualService rules) before they manifest as a confusing runtime symptom.
Traffic fails after enabling STRICT mTLS
Confirm every service actually receiving traffic in that namespace has the sidecar injected — a service without the sidecar can't participate in mTLS at all, and STRICT mode will reject its traffic outright rather than falling back to plaintext.
What's Installed
After a successful installation:
VirtualService, DestinationRule, PeerAuthentication, and others, used to configure traffic management and security policy declarativelyNext Steps
Go to the Fundamentals section to configure mTLS and your first traffic-management rules.

