istio-debug
Skill0 starsChanged 41 days agoMITView on GitHub
Use when debugging Istio service mesh issues such as sidecar injection failures, mTLS errors, 503s, or VirtualService routing problems. Mention "istio", "envoy sidecar", "mtls error", "virtualservice not routing" as triggers.
In this repository45 other files it gives its agents.
- admission-policy-reviewSkill
- alert-rule-reviewSkill
- architecture-reviewSkill
- argocd-applicationsetSkill
- argocd-debugSkill
- argocdSkill
- cert-manager-debugSkill
- cicd-reviewSkill
- cilium-debugSkill
- ciliumSkill
- cluster-backupSkill
- dast-reviewSkill
- dockerfile-reviewSkill
- english-technical-messageSkill
- git-messageSkill
- gitops-reviewSkill
- go-bugfixSkill
- go-code-reviewSkill
- go-testing-reviewSkill
- grafana-dashboardsSkill
- helm-reviewSkill
- homelab-change-planSkill
- incident-analysisSkill
- ingressSkill
- interview-system-designSkill
- istioSkill
- kubernetes-autoscalingSkill
- kubernetes-debugSkill
- kubernetes-securitySkill
- kubernetes-yaml-reviewSkill
- migration-planSkill
- observability-reviewSkill
- observability-stackSkill
- production-readinessSkill
- pr-reviewSkill
- root-cause-analysisSkill
- runbook-writerSkill
- runtime-security-reviewSkill
- secrets-managementSkill
- storage-debugSkill
- supply-chain-securitySkill
- terraform-reviewSkill
- upgrade-readinessSkill
- vaultSkill
- vulnerability-triageSkill
The file
We split this skill into the rules it gives an agent
8 rules. About 0 are common, 6 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 18
Read istioctl proxy-status, pod injection state, route config, and relevant logs.
- Distinctive: line 22
Do not alter a VirtualService until the proxy received the expected config.
- Distinctive: line 26
Follow the Workflow, Safety rules, and Quality checklist below.
- Distinctive: line 36
Use when traffic in an Istio mesh misbehaves — 503s between services, mTLS handshake failures, VirtualService routes not taking effect, …
- Very specific: line 92
Read-only first, always: istioctl analyze/proxy-status/proxy-config/x describe, kubectl get/describe/logs.
- Distinctive: line 94
Do not apply, edit, or delete Istio resources (VirtualService, DestinationRule, PeerAuthentication, Gateway) on a live cluster — propose …
- Distinctive: line 97
Never suggest disabling mTLS mesh-wide as a diagnostic shortcut — narrow to the affected workload pair with evidence instead.
- Distinctive: line 99
Do not restart istiod or inject/eject sidecars without explicit confirmation.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Istio Debug
TL;DR checklist
- Run
istioctl analyzefor configuration errors. - Check injection and proxy sync before tracing traffic rules.
- Classify mTLS, routing, and upstream failures from exact proxy evidence.
Key read-only checks
- Read
istioctl proxy-status, pod injection state, route config, and relevant logs.
Common pitfalls
- Do not alter a VirtualService until the proxy received the expected config.
Agent procedure
Follow the Workflow, Safety rules, and Quality checklist below.
Quick references
- references/playbooks.md
Last verified: unverified
When to use
Use when traffic in an Istio mesh misbehaves — 503s between services, mTLS handshake failures, VirtualService routes not taking effect, sidecars missing or unready — and the cause needs to be found. Also covers reviewing Istio config (VirtualService/DestinationRule/Gateway) before apply.
Goal
Locate the failing hop (app → local sidecar → remote sidecar → app) and the config that breaks it, backed by istioctl/Envoy evidence, and propose a fix — without mutating live mesh config.
Workflow
- Run the analyzer first —
istioctl analyze -n <ns>catches a large share of config mistakes outright (missing DestinationRule subsets, gateway/host mismatches, deprecated fields). Cheap, read-only, always first. - Sidecar presence — is the sidecar actually there?
kubectl get pod -o jsonpathfor container count, namespace labelistio-injection=enabled(or revision label), pod-levelsidecar.istio.io/injectoverrides. Pods created before injection was enabled never get one — check pod age vs. label age. - Control-plane sync —
istioctl proxy-status: every proxy should beSYNCED. A proxy stuckSTALE/NOT SENTmeans the config you're staring at never reached Envoy — debug istiod connectivity/version skew before debugging routing rules. - mTLS mismatch — for connection resets /
upstream connect error ... TLS error:PeerAuthentication(namespace and mesh-wide) vs.DestinationRule.trafficPolicy.tls— the classic break is STRICT PeerAuthentication with a DestinationRule forcingDISABLE, or a mesh-external service addressed as if it were in the meshistioctl x describe pod <pod>summarizes effective mTLS per port- plaintext legacy clients hitting a STRICT namespace show as raw TCP resets on port 15006
- Routing rules — for "VirtualService ignored":
hostmust match how the client actually calls it (short name resolves within the namespace; FQDN elsewhere)- subset routes require a
DestinationRuledefining that subset, and pods must carry the subset's labels —istioctl analyzeflags missing ones,istioctl proxy-config routes <pod>shows what Envoy actually has - rule ordering: first match wins; a catch-all route above a specific one shadows it
- 503 taxonomy — read the Envoy response flags in sidecar access logs (
kubectl logs <pod> -c istio-proxy):UH= no healthy upstream (endpoints empty/unready),UF= upstream connect failure (mTLS or the app not listening),NR= no route (routing config),UO/URX= circuit breaker / retry budget exhausted (check DestinationRuleoutlierDetection/connectionPool— overly tight settings self-inflict 503s under load). - Gateway path — for ingress issues: Gateway
hosts/port/TLS config vs. VirtualServicehosts+gatewaysbinding, and whether the gateway pod's Envoy actually got a listener (istioctl proxy-config listeners <gw-pod> -n istio-system). - Correlate and conclude — name the failing hop and the exact config object; propose the minimal change and the command that verifies it.
References
references/playbooks.md — Envoy response-flag → cause table, the mTLS mismatch matrix,
sidecar-injection failure tree, gateway path checks, and the reading order for intermittent
503s. Route there as soon as you have a response flag or istioctl output.
For installing/operating the mesh itself (install, revision/canary upgrades, sidecar vs ambient,
traffic management, mTLS/authz design, telemetry) use the istio skill.
Safety rules
- Read-only first, always:
istioctl analyze/proxy-status/proxy-config/x describe,kubectl get/describe/logs. None of these mutate state. - Do not apply, edit, or delete Istio resources (VirtualService, DestinationRule, PeerAuthentication, Gateway) on a live cluster — propose the manifest; the user applies it. A bad mTLS or routing change can cut off every consumer of a service at once.
- Never suggest disabling mTLS mesh-wide as a diagnostic shortcut — narrow to the affected workload pair with evidence instead.
- Do not restart istiod or inject/eject sidecars without explicit confirmation.
Output format
## Observations
<analyzer output, proxy-status, sidecar presence>
## Evidence
<envoy response flags / istioctl output, quoted>
## Failing hop
<app → local sidecar → remote sidecar → app: which link, and why>
## Root cause
## Fix
<config diff, marked as requiring user confirmation to apply>
## VerificationQuality checklist
istioctl analyzewas run (or its unavailability noted) before manual digging- Proxy sync status was checked before debugging routing config
- 503s were classified by Envoy response flags, not guessed at
- mTLS was checked from both sides (PeerAuthentication and DestinationRule)
- Only read-only commands were run; no mesh config was applied
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

