Configuring Service Meshes
Overview
Configure service meshes (Istio, Linkerd, Consul Connect) for Kubernetes microservices architectures. Generate mTLS configurations, traffic management rules (routing, splitting, mirroring), observability integrations (distributed tracing, metrics), and resilience patterns (retries, circuit breakers, timeouts).
Prerequisites
- Kubernetes cluster accessible via
kubectl with admin permissions
- Service mesh CLI installed:
istioctl, linkerd, or consul
- Helm 3+ for service mesh installation charts
- Understanding of microservice communication patterns and dependencies
- Observability backend available (Jaeger, Zipkin, or Prometheus/Grafana) for tracing and metrics
Instructions
- Select the service mesh based on requirements: Istio for full-featured L7 control, Linkerd for lightweight simplicity, Consul Connect for multi-platform
- Install the control plane:
istioctl install --set profile=production or linkerd install | kubectl apply -f -
- Enable sidecar injection for target namespaces: label namespaces with
istio-injection=enabled or linkerd.io/inject=enabled
- Configure mTLS: set PeerAuthentication to STRICT mode for zero-trust inter-service communication
- Define traffic management rules: VirtualService for routing, DestinationRule for load balancing and circuit breaking
- Set up traffic splitting for canary deployments: route a percentage of traffic to the new version
- Configure retry policies and timeouts to improve resilience against transient failures
- Integrate observability: connect to Jaeger/Zipkin for distributed tracing, Prometheus for metrics, and Kiali for visualization
- Validate the mesh: verify sidecar injection, mTLS status, and traffic routing with
istioctl analyze or linkerd check
Output
- Service mesh installation manifests or Helm values
- PeerAuthentication and AuthorizationPolicy manifests for mTLS and RBAC
- VirtualService and DestinationRule manifests for traffic management
- ServiceEntry manifests for external service access
- Observability integration configuration (Jaeger, Prometheus, Kiali)
Error Handling
| Error |
Cause |
Solution |
sidecar not injected |
Namespace not labeled for injection or pod has annotation to skip |
Add istio-injection=enabled label to namespace; check pod annotations |
mTLS handshake failed |
Mismatched TLS settings between services or missing certificates |
Set PeerAuthentication to PERMISSIVE temporarily; check istioctl proxy-status |
503 Service Unavailable |
Circuit breaker tripped or upstream connection pool exhausted |
Review DestinationRule connection pool settings; increase maxConnections and http2MaxRequests |
traffic not splitting correctly |
VirtualService weight percentages misconfigured |
Verify weights sum to 100; check VirtualService is bound to the correct gateway/host |
high latency after mesh install |
Sidecar proxy adding overhead or misconfigured timeouts |
Tune proxy resources; review timeout settings; check if services are using HTTP/2 |
Examples
- "Install Istio with strict mTLS on a production cluster and configure a VirtualService for canary routing: 90% to v1, 10% to v2."
- "Set up Linkerd on a microservices cluster with automatic retries (3 attempts, 500ms timeout) and integrate with Prometheus for golden signal metrics."
- "Configure an Istio AuthorizationPolicy that allows only the frontend service to call the API gateway, blocking all other inter-service traffic."
Resources
Source: jeremylongshore/claude-code-plugins-plus-skills → skills/.curated/configuring-service-meshes/SKILL.md
Also appears in: jeremylongshore/claude-code-plugins-plus-skills/plugins/devops/service-mesh-configurator/skills/configuring-service-meshes/SKILL.md
1---2name: configuring-service-meshes3description: 'Configure this skill configures service meshes like istio and linkerd for microservices. it generates production-ready configurations, implements best practices, and ensures a security-first approach. use this skill when the user asks to "configure service ... Use when appropriate context detected. Trigger with relevant phrases based on skill purpose. '4---5
6# Configuring Service Meshes
7
8## Overview
9
10Configure service meshes (Istio, Linkerd, Consul Connect) for Kubernetes microservices architectures. Generate mTLS configurations, traffic management rules (routing, splitting, mirroring), observability integrations (distributed tracing, metrics), and resilience patterns (retries, circuit breakers, timeouts).
11
12## Prerequisites
13
14- Kubernetes cluster accessible via `kubectl` with admin permissions
15- Service mesh CLI installed: `istioctl`, `linkerd`, or `consul`
16- Helm 3+ for service mesh installation charts
17- Understanding of microservice communication patterns and dependencies
18- Observability backend available (Jaeger, Zipkin, or Prometheus/Grafana) for tracing and metrics
19
20## Instructions
21
221. Select the service mesh based on requirements: Istio for full-featured L7 control, Linkerd for lightweight simplicity, Consul Connect for multi-platform
232. Install the control plane: `istioctl install --set profile=production` or `linkerd install | kubectl apply -f -`
243. Enable sidecar injection for target namespaces: label namespaces with `istio-injection=enabled` or `linkerd.io/inject=enabled`
254. Configure mTLS: set PeerAuthentication to STRICT mode for zero-trust inter-service communication
265. Define traffic management rules: VirtualService for routing, DestinationRule for load balancing and circuit breaking
276. Set up traffic splitting for canary deployments: route a percentage of traffic to the new version
287. Configure retry policies and timeouts to improve resilience against transient failures
298. Integrate observability: connect to Jaeger/Zipkin for distributed tracing, Prometheus for metrics, and Kiali for visualization
309. Validate the mesh: verify sidecar injection, mTLS status, and traffic routing with `istioctl analyze` or `linkerd check`
31
32## Output
33
34- Service mesh installation manifests or Helm values
35- PeerAuthentication and AuthorizationPolicy manifests for mTLS and RBAC
36- VirtualService and DestinationRule manifests for traffic management
37- ServiceEntry manifests for external service access
38- Observability integration configuration (Jaeger, Prometheus, Kiali)
39
40## Error Handling
41
42| Error | Cause | Solution |
43|-------|-------|---------|
44| `sidecar not injected` | Namespace not labeled for injection or pod has annotation to skip | Add `istio-injection=enabled` label to namespace; check pod annotations |
45| `mTLS handshake failed` | Mismatched TLS settings between services or missing certificates | Set PeerAuthentication to PERMISSIVE temporarily; check `istioctl proxy-status` |
46| `503 Service Unavailable` | Circuit breaker tripped or upstream connection pool exhausted | Review DestinationRule connection pool settings; increase `maxConnections` and `http2MaxRequests` |
47| `traffic not splitting correctly` | VirtualService weight percentages misconfigured | Verify weights sum to 100; check VirtualService is bound to the correct gateway/host |
48| `high latency after mesh install` | Sidecar proxy adding overhead or misconfigured timeouts | Tune proxy resources; review timeout settings; check if services are using HTTP/2 |
49
50## Examples
51
52- "Install Istio with strict mTLS on a production cluster and configure a VirtualService for canary routing: 90% to v1, 10% to v2."
53- "Set up Linkerd on a microservices cluster with automatic retries (3 attempts, 500ms timeout) and integrate with Prometheus for golden signal metrics."
54- "Configure an Istio AuthorizationPolicy that allows only the frontend service to call the API gateway, blocking all other inter-service traffic."
55
56## Resources
57
58- Istio documentation: https://istio.io/latest/docs/
59- Linkerd documentation: https://linkerd.io/2/overview/
60- Consul Connect: https://developer.hashicorp.com/consul/docs/connect
61- Kiali (service mesh observability): https://kiali.io/docs/
62
63---
64
65**Source:** [`jeremylongshore/claude-code-plugins-plus-skills`](https://github.com/jeremylongshore/claude-code-plugins-plus-skills) → `skills/.curated/configuring-service-meshes/SKILL.md`
66
67**Also appears in:** `jeremylongshore/claude-code-plugins-plus-skills/plugins/devops/service-mesh-configurator/skills/configuring-service-meshes/SKILL.md`