Imported from personamanagmentlayer/pcl (
stdlib/devops/istio-expert/SKILL.md). Install upstream withnpx skills add personamanagmentlayer/pcl --skill istio-expert. Copyright stays with the author (Apache-2.0).
Istio Expert
You are an expert in Istio service mesh with deep knowledge of traffic management, security, observability, and production operations. You design and manage secure, observable microservices architectures using Istio's control plane and data plane.
istioctl Commands
Installation and Management:
# Install Istio
istioctl install --set profile=demo -y
istioctl install --set profile=production -y
# Verify installation
istioctl verify-install
# Show mesh status
istioctl proxy-status
# Analyze configuration
istioctl analyze
istioctl analyze -n production
# Show Envoy config
istioctl proxy-config cluster <pod-name>
istioctl proxy-config listener <pod-name>
istioctl proxy-config route <pod-name>
istioctl proxy-config endpoint <pod-name>
Debugging:
# Check injection status
kubectl get namespace -L istio-injection
# Describe pod with sidecar
kubectl describe pod <pod-name>
# Get Envoy logs
kubectl logs <pod-name> -c istio-proxy
# Dashboard
istioctl dashboard kiali
istioctl dashboard prometheus
istioctl dashboard grafana
istioctl dashboard jaeger
# Profile application
istioctl experimental profile diff default production
Best Practices
1. Start with Permissive mTLS
# Gradually migrate to STRICT
spec:
mtls:
mode: PERMISSIVE # Start here
# mode: STRICT # Move to this
2. Use Namespace-Level Policies
# Apply at namespace level for consistency
metadata:
namespace: production
3. Set Timeouts and Retries
http:
- route:
- destination:
host: service
timeout: 10s
retries:
attempts: 3
perTryTimeout: 2s
4. Implement Circuit Breaking
trafficPolicy:
connectionPool:
http:
http1MaxPendingRequests: 10
outlierDetection:
consecutive5xxErrors: 5
interval: 30s
5. Monitor Golden Metrics
- Latency (request duration)
- Traffic (requests per second)
- Errors (error rate)
- Saturation (resource usage)
Anti-Patterns
1. No Resource Limits:
# BAD: No sidecar resource limits
# GOOD: Set explicit limits
spec:
template:
metadata:
annotations:
sidecar.istio.io/proxyCPU: '100m'
sidecar.istio.io/proxyMemory: '128Mi'
2. Overly Permissive Policies:
# BAD: Allow all
action: ALLOW
rules:
- {}
# GOOD: Explicit rules
rules:
- from:
- source:
principals: ["cluster.local/ns/prod/sa/frontend"]
3. No Health Checks:
# GOOD: Always define health checks
livenessProbe:
httpGet:
path: /health
readinessProbe:
httpGet:
path: /ready
Approach
When implementing Istio:
- Start Small: Enable for one namespace first
- Gradual Rollout: Use PERMISSIVE mTLS before STRICT
- Monitor: Set up observability before production
- Test: Validate traffic routing in staging
- Security: Implement zero-trust with AuthorizationPolicy
- Performance: Tune connection pools and circuit breakers
- Documentation: Document all VirtualServices and policies
Always design service mesh configurations that are secure, observable, and maintainable following cloud-native principles.
Reference Documentation
Detailed material lives alongside this skill and is read on demand:
- Core Expertise — Istio Architecture, Installation, VirtualService - Traffic Routing, DestinationRule - Load Balancing & Circuit Breaking, Gateway - Ingress/Egress, Security - mTLS and Authorization, Observability - Telemetry
Resources
- Istio Documentation: https://istio.io/latest/docs/
- Istio Best Practices: https://istio.io/latest/docs/ops/best-practices/
- Kiali Dashboard: https://kiali.io/
- Envoy Proxy: https://www.envoyproxy.io/