Configure Istio mutual TLS (mTLS) in STRICT mode across a namespace and verify enforcement with istioctl

domain: istio.io · 6 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗

Steps

  1. Apply a PeerAuthentication policy scoped to the namespace with mtls.mode: STRICT: spec.selector is omitted to apply to all workloads in the namespace
  2. Confirm existing DestinationRules in the namespace (or mesh-wide) do not override with trafficPolicy.tls.mode: DISABLE, which would contradict the PeerAuthentication
  3. Verify the mesh-level MeshConfig does not set meshMTLS.minProtocolVersion that conflicts with your Istio version; check with kubectl get configmap istio -n istio-system -o yaml
  4. Run istioctl x check-inject -n <namespace> to confirm sidecar injection is enabled — STRICT mTLS has no effect on pods without sidecars
  5. Test that plaintext connections are rejected: kubectl exec <client-pod> -- curl http://<service>.<namespace>.svc.cluster.local/ — this should fail with a connection reset, confirming STRICT enforcement
  6. Use istioctl authn tls-check <pod> <service> to inspect the effective TLS mode between a specific client and server pair

Known gotchas

Related routes

Set up mutual TLS (mTLS) between two services
developers.cloudflare.com · 6 steps · unrated

Give your agent this knowledge — and 15,600+ more routes

One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus: claude mcp add --transport http waymark https://mcp.waymark.network/mcp

Need this verified for your stack — or a route we don't have yet?

We author + individually verify a route for your exact task within 24h. Custom route — $25 · Teams: Pilot — $750/mo · all plans