Certifications · ICA · Mock Exam · Set 3

ICA Mock Exam · Set 3

This is the third and final timed paper in the ICA's three-set trio — thirty items covering the same four official domains as the ICA blueprint, but deliberately not shared out in the real exam's 35/25/20/20 proportions. Where Set 1 and Set 2 built even coverage across all four domains, Set 3 spends most of its budget on the two places real mesh incidents actually live: Troubleshooting, which carries eleven of these thirty items rather than its official fifth, and Securing Workloads, which carries nine. Because the real ICA is hybrid — hands-on tasks at a command line alongside multiple-choice items — most items here are written as diagnostic reading exercises: a manifest, a command's output, or a symptom, and four candidate fixes. Recognizing the right answer on a screen and typing it correctly under a proctor's eye are different skills; this paper drills the first and points you to the labs for the second.

☺ Explain it like I'm 10

Most study papers on this shelf spread their questions evenly across everything a test covers, the way a fair quiz should. This one doesn't — it's built more like the week before a check-up, where the doctor stops asking about your general health and starts poking specifically at the two things that go wrong most often. Here that means: "something in the mesh just broke, find out what" and "is this security rule actually as tight as you think it is." You'll still see questions about routing traffic and installing the mesh, just fewer of them, because those are the parts people study for — troubleshooting and security are the parts people find out they didn't, usually during an actual incident.

🐢🐘Your hosts for this paper: Timmy the Turtle & Ellie the Elephant — Timmy holds the line on the near-third of this paper that's AuthorizationPolicy and its relatives, and Ellie, who never forgets a metric or a log line, walks the 37% that's pure troubleshooting: read the symptom, name the layer, name the command.

How this paper is weighted, and why it leans where it leans

☺ Like you're 10: The real test gives routing the biggest slice. This practice paper gives troubleshooting and security the biggest slice instead, on purpose, because that's where the previous two papers left the most room to grow.

The ICA's four official domain weights — Traffic Management 35%, Securing Workloads 25%, Installation/Upgrades/Configuration 20%, Troubleshooting 20% — come straight from the CNCF's published curriculum and are covered in full, with the reasoning behind every field, on the ICA blueprint. This paper's thirty items do not mirror that split. They lean hard into the two domains where reading a scenario correctly matters more than reciting a definition:

DomainOfficial curriculum weightQuestions in this paper
🦫 Installation, Upgrades & Configuration20%5 (17%)
🐦 Traffic Management35%5 (17%)
🐢 Securing Workloads25%9 (30%)
🐘 Troubleshooting20%11 (37%)
official curriculum weight this paper's question share 🐦 Traffic Mgmt 35% 17% 🐢 Securing Workloads 25% 30% 🦫 Install/Upgrade/Config 20% 17% 🐘 Troubleshooting 20% 37%
◆ Key idea

A paper skewed like this one is a poor stand-in for the real exam's balance, and it isn't trying to be. Its job is narrower: to give you more reps at the two domains where "I recognized the concept" and "I could actually diagnose or lock down a live mesh" are furthest apart. Sit Set 1 or Set 2 first if you want a paper whose proportions track the real blueprint — this one assumes that baseline is already behind you.

Sit it like the real, hybrid thing

☺ Like you're 10: The real test has a typing half and a multiple-choice half. A page like this one can only give you the multiple-choice half — so treat every "which command" question here as a reminder to go type that exact command for real, not as the finish line.

Close every other tab and sit these thirty items in one block, the way you would the real paper's multiple-choice component. But be honest about what this format can and can't rehearse: the ICA is delivered online and remote-proctored as performance-based tasks at a real command line, plus multiple-choice items — no static page can simulate the first half. What it can do is train the diagnostic reading this exam actually rewards: given a manifest, a command's output, or a one-line symptom, choose the correct next action. That skill transfers directly to the hands-on half, because the real exam's tasks begin exactly the same way — something is broken or unconfigured, and you have limited time to name why before you start typing.

⚠ What this paper does and doesn't test

Neither the ICA's real question-and-task count nor its pass mark is published by the Linux Foundation — the ICA blueprint covers what is and isn't confirmed in full, and this paper's size of thirty was chosen only to fit a clean domain split, not to match a real sitting. Treat every command named in the answers below as something to actually run, not just recognize: pair this paper with the Lock Down a Mesh Namespace drill for the hands-on rep this format cannot provide on its own. As always, verify current price, duration, and logistics on the official Linux Foundation ICA page before you book anything.

The paper — 30 items across three blocks

☺ Like you're 10: Thirty questions, three blocks of ten, every domain still shows up in every block — read the question, pick one answer (or two, when it says so), then check yourself before moving on.

Each item names its domain in parentheses so you can total your score by domain afterward. A few are marked (Select TWO); full credit needs both correct letters.

Block 1 — Q1–10

Q1 (Traffic Management). A team wants to let workloads inside the mesh call api.partner-service.com, an endpoint outside the cluster, while continuing to block every other undeclared external host. Which resource, paired with which setting, achieves this?

Check the answer

B. A ServiceEntry registers the external host as a known destination, and REGISTRY_ONLY mode means anything not explicitly registered this way simply cannot leave the mesh — the two work as a pair, not independently.

Q2 (Traffic Management). A VirtualService defines routing rules for host: checkout but its spec has no gateways field at all. What is the practical effect of that omission?

Check the answer

B. An unset gateways field defaults to mesh — in-mesh traffic only. To have a VirtualService govern ingress traffic too, it must explicitly name the Gateway in that field. This is the single most common "why is my ingress rule being ignored" mistake on the exam.

Q3 (Securing Workloads). Which PeerAuthentication mtls.mode accepts both plaintext and mutual-TLS connections at once, making it the standard setting for migrating a namespace toward zero trust without an outage?

Check the answer

C. PERMISSIVE accepts either — it lets already-mTLS'd callers keep working while callers that haven't been enrolled yet aren't cut off. The usual migration path is PERMISSIVE first, confirmed via telemetry that nothing plaintext still matters, then a cutover to STRICT.

Q4 (Securing Workloads). A RequestAuthentication is applied to a workload with a correctly configured jwtRules issuer. A request arrives with no Authorization header at all — no token present. What happens?

Check the answer

B. This is one of the most-tested single facts in the Securing Workloads domain. RequestAuthentication validates a token if one is presented; it does not, by itself, mandate that one be presented. Making a token mandatory is a job for an AuthorizationPolicy rule that requires requestPrincipals to match.

Q5 (Securing Workloads). In what order does Istio evaluate AuthorizationPolicy action types against an incoming request?

Check the answer

C. CUSTOM (external authorization checks) runs first, then DENY, then ALLOW. A matching DENY always wins outright over any ALLOW rule, regardless of which was written or applied more recently.

Q6 (Installation, Upgrades & Configuration). Installing Istio via Helm, which order of chart installation is correct?

Check the answer

C. base must land first because it installs the CRDs everything else depends on; istiod needs those CRDs to start; gateway charts come last, one per gateway deployment you want.

Q7 (Installation, Upgrades & Configuration). A namespace is freshly labeled istio-injection=enabled. Pods that were already running in that namespace before the label was applied — what happens to them?

Check the answer

B. The injection webhook fires on pod creation. Labeling a namespace changes what happens to future pods; existing ones need a restart to be re-created and therefore re-injected.

Q8 (Troubleshooting). Before applying a new set of Istio manifests, or right after a change starts misbehaving, which single command should almost always run first?

Check the answer

C. istioctl analyze is the configuration-layer step in the three-step troubleshooting ladder — config, control plane, data plane — and it catches a large share of mistakes before they ever become a live 503.

Q9 (Troubleshooting). Reading this istioctl proxy-status output, what does the STALE value in the CDS column for one proxy most directly indicate?

NAME                                 CDS        LDS        EDS        RDS        ISTIOD
checkout-7d9f-abcde.launch           STALE      SYNCED     SYNCED     SYNCED     istiod-6b8f9-xk2p1
frontend-5c7a-mnop9.launch           SYNCED     SYNCED     SYNCED     SYNCED     istiod-6b8f9-xk2p1
Check the answer

B. SYNCED means the proxy has acknowledged the latest push for that resource type; STALE means a push went out but confirmation is stuck — worth investigating pod health or connectivity to istiod. (NOT SENT, not shown here, would mean istiod has nothing new to send at all.)

Q10 (Troubleshooting). A request that should be permitted returns RBAC: access denied. What kind of misconfiguration does that specific error text point to?

Check the answer

C. That exact error string is Envoy's RBAC filter reporting a denied request — it is never a routing or connectivity symptom. Go straight to AuthorizationPolicy resources selecting the target workload.

Block 2 — Q11–20

Q11 (Traffic Management). Given this pair, what happens once it is applied?

apiVersion: networking.istio.io/v1
kind: DestinationRule
metadata:
  name: checkout
  namespace: launch
spec:
  host: checkout.launch.svc.cluster.local
  subsets:
    - name: v1
      labels: { version: v1 }
---
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: checkout
  namespace: launch
spec:
  hosts: ["checkout"]
  http:
    - route:
        - destination: { host: checkout, subset: v1 }
          weight: 90
        - destination: { host: checkout, subset: v2 }
          weight: 10
Check the answer

B. A subset a VirtualService names has to exist in some DestinationRule for that host. This exact shape — one subset quietly missing — is the most common self-inflicted routing failure the exam tests, and it's exactly what the configuration-layer linter is for.

Q12 (Traffic Management). A VirtualService route sets timeout: 2s and retries: { attempts: 3, perTryTimeout: 1s }. What is the maximum time before the calling client receives a definitive response?

Check the answer

B. timeout is the ceiling on the whole request as the client experiences it. perTryTimeout only bounds a single attempt inside that budget — it never extends the overall deadline past the route's timeout.

Q13 (Securing Workloads, Select TWO). This AuthorizationPolicy is meant to require that a caller be both the frontend service account and present a valid JWT. What is actually wrong with it, and what is the consequence? Choose the two correct statements.

apiVersion: security.istio.io/v1
kind: AuthorizationPolicy
metadata:
  name: require-identity-and-jwt
  namespace: launch
spec:
  selector:
    matchLabels: { app: checkout }
  action: ALLOW
  rules:
    - from:
        - source:
            principals: ["cluster.local/ns/launch/sa/frontend"]
        - source:
            requestPrincipals: ["https://accounts.example.com/*"]
      to:
        - operation: { methods: ["GET", "POST"] }
Check the answer

A and B. Keys within one source block are ANDed; separate - source: entries in a list are ORed. Fixing this means putting both principals and requestPrincipals inside the same source block — exactly the pattern shown correctly on the ICA blueprint.

Q14 (Securing Workloads). An AuthorizationPolicy is applied with an entirely empty spec: {} and a selector matching a workload. What is the effect on that workload?

Check the answer

B. An ALLOW policy with zero rules matches nothing, so nothing is allowed — a deliberately blunt way to lock a workload down completely, and worth knowing cold since it looks like a no-op at first glance.

Q15 (Securing Workloads). A workload has never had any AuthorizationPolicy select it, so all traffic reaches it freely. An operator then applies one narrowly scoped ALLOW policy permitting only GET requests from one service account. What happens to every other kind of request that used to work?

Check the answer

B. This is the sharpest edge in the whole domain: adding your first ALLOW policy to a previously unrestricted workload is itself the outage risk, because it flips the workload's default from allow to deny for everything the new policy doesn't explicitly cover.

Q16 (Installation, Upgrades & Configuration). What two components does enrolling a namespace in Istio's ambient mode rely on, in place of the per-pod sidecar used in sidecar mode?

Check the answer

B. Ambient moves the data-plane proxy off the pod entirely and onto a shared per-node ztunnel, wired up by the cni chart, and it's enrolled with an entirely different namespace label than sidecar mode uses.

Q17 (Installation, Upgrades & Configuration). A namespace carries both labels shown below at the same time. Which sidecar-injection behavior actually applies?

kubectl label namespace launch istio-injection=enabled
kubectl label namespace launch istio.io/rev=1-27-0
Check the answer

B. When both are present, the plain label takes precedence — a detail that quietly defeats a canary migration if the old label isn't removed first (kubectl label ns launch istio-injection-) before adding the revision label.

Q18 (Troubleshooting). A client sees this after a routing change:

$ curl -v http://checkout.launch.svc.cluster.local/cart
< HTTP/1.1 503 Service Unavailable
< x-envoy-response-flags: UH
* Connection closed

What does the UH response flag most precisely indicate, and what's the likeliest cause right after a routing change?

Check the answer

B. UH means Envoy found the target cluster but had no healthy endpoint to send the request to. Right after a routing edit, an undefined subset is the first thing to check — this is the same failure mode as Q11, seen from the client side instead of the manifest side.

Q19 (Troubleshooting). A pod is running in a namespace labeled for sidecar injection, but kubectl describe pod shows only one container — no istio-proxy sidecar at all. What's the most likely explanation?

Check the answer

C. This is the same fact tested from a different angle as Q7: injection is a creation-time event. A missing sidecar on an existing pod almost always means "labeled too late, never restarted" rather than any deeper problem.

Q20 (Troubleshooting). You need to know exactly which routes are configured on port 8080 for one specific running proxy. Which command answers that, for that one proxy?

Check the answer

B. proxy-config route (and its siblings cluster, endpoint, listener, secret) is the data-plane step of the troubleshooting ladder — it asks one specific proxy what it actually believes, rather than what was intended.

Block 3 — Q21–30

Q21 (Traffic Management). On a DestinationRule's trafficPolicy, which setting implements circuit breaking, and which implements outlier detection, as two distinct mechanisms?

Check the answer

B. Circuit breaking limits how much load any one endpoint takes; outlier detection reacts to endpoints that are already failing and removes them from rotation. Both live under trafficPolicy, and the exam expects you to name each by its correct field, not just say "resilience."

Q22 (Securing Workloads). To terminate TLS at an ingress Gateway, which two things does the Gateway resource need, and where must the referenced object live?

Check the answer

A. SIMPLE is server-only TLS; MUTUAL also requires a client certificate. Either way, the credential the gateway reads from has to sit in that gateway's own namespace — a cross-namespace Secret reference silently fails to be found.

Q23 (Securing Workloads). A platform team is about to tighten a busy namespace's AuthorizationPolicy from wide-open to a narrow ALLOW list. What's the safest rollout order for the action field, from least to most disruptive?

Check the answer

B. The same caution that governs PeerAuthentication (PERMISSIVE before STRICT) has an authorization-side equivalent: AUDIT lets you see what a stricter policy would have blocked before you actually enforce it.

Q24 (Securing Workloads). Mesh-wide istio-system sets PeerAuthentication to STRICT with no selector. A second PeerAuthentication in namespace launch sets PERMISSIVE for one specific port via portLevelMtls. For requests to that one port, in that namespace, which setting actually applies?

Check the answer

B. Scope precedence runs from broad to narrow: mesh-wide, then namespace, then workload, with port-level settings narrowing further still within whichever policy applies. Knowing this order is what lets you predict the effective mode without a trial-and-error curl.

Q25 (Installation, Upgrades & Configuration). Comparing an in-place upgrade to a canary upgrade, which correctly separates them?

Check the answer

B. The defining trade-off: in-place is simple but all-or-nothing; canary is more moving parts (a second control plane, per-namespace relabeling, eventual retirement of the old revision) in exchange for a controlled, reversible rollout.

Q26 (Troubleshooting). After confirming a workload's proxy is correctly configured and routes are correct, requests are still failing with mTLS handshake errors. Which command specifically checks whether the workload's certificate actually arrived at its proxy?

Check the answer

B. proxy-config secret is the specific data-plane check for certificate delivery — routes and clusters can be perfectly correct while the workload identity certificate itself never made it to the proxy.

Q27 (Troubleshooting). Immediately after a canary upgrade moves half a fleet's namespaces to a new istiod revision, which command tells you which individual proxies are still connected to the old control plane revision?

Check the answer

A. The ISTIOD column in proxy-status output names the exact control-plane pod each proxy talks to — during a canary window that column is the fastest way to see who's moved and who hasn't.

Q28 (Troubleshooting). Immediately after a namespace is flipped from PERMISSIVE to STRICT mTLS, a wave of new connection failures begins. What's the most likely cause, and where should you look first?

Check the answer

B. STRICT is unforgiving of anything that isn't itself inside the mesh's identity system. The fix is almost never on the target workload — it's finding whichever caller was never enrolled and either enrolling it or routing it differently.

Q29 (Troubleshooting). A teammate wants a single, readable summary of one pod's effective mTLS mode, the policies selecting it, and its routes, without manually cross-referencing several separate proxy-config subcommands. Which command is built for exactly that?

Check the answer

B. x describe pod exists specifically to collapse several individually-narrow proxy-config queries into one readable answer, which makes it a fast first move once you already suspect a specific pod.

Q30 (Troubleshooting, Select TWO). A specific call from frontend to checkout is being denied and you already suspect an AuthorizationPolicy is the cause, but you need to see exactly which rule fired and why. Which TWO actions get you there fastest?

Check the answer

A and B. Turning on RBAC-level Envoy debug logging shows the actual decision the proxy made and why; x describe pod shows which policies are even in play for that workload. Together they answer "which rule, and why" far faster than reasoning about the YAML alone. Certificates (C) are a PeerAuthentication concern, not an authorization one, and deleting policies (E) is diagnosis by demolition, not troubleshooting.

Score yourself

☺ Like you're 10: Count what you got right out of thirty, then look at which of the two big domains — troubleshooting or security — actually cost you the most, because that's the one worth another pass before exam day.

Neither the ICA's real item count nor its pass mark is published by the Linux Foundation, so there's no official percentage to compare this score against — the ICA blueprint covers exactly what is and isn't confirmed. Use this table to find your weakest domain, not to predict a real result.

DomainQuestions in this paperYour scoreIf most of your misses are here, go here
🐦 Traffic ManagementQ1, 2, 11, 12, 21/5ICA — the exam · Istio
🐢 Securing WorkloadsQ3, 4, 5, 13, 14, 15, 22, 23, 24/9ICA — the exam · Security & policy enforcement
🦫 Installation, Upgrades & ConfigQ6, 7, 16, 17, 25/5ICA — the exam · Helm
🐘 TroubleshootingQ8, 9, 10, 18, 19, 20, 26, 27, 28, 29, 30/11Service Mesh Architecture · Triage: networking
Total30 questions/30Reread whichever domain cost you the most, then go type it

Because this paper is intentionally skewed, a low Traffic Management or Installation score here means less than the same score would on Set 1 or Set 2, which cover both domains at full weight. What this paper actually measures well is whether Troubleshooting and Securing Workloads — nearly two-thirds of these thirty items combined — are solid. If they aren't yet, that's the honest, useful result to walk away with.

Where each domain is taught

☺ Like you're 10: Every question above traces back to one of a handful of pages. Go back to the page, then go to a real terminal — reading alone doesn't fix a troubleshooting gap.

Beyond the domain pages, the wider revision kit still applies: flashcards for command recall, the self-check quiz for mixed review, the glossary for any term a question assumed you already knew, and the Kubernetes baseline check if any question here leaned on kubectl fluency you're still shaky on. This course doesn't re-teach core Kubernetes — the Kubernetes course's own CKA and CKS material is where that lives in full.

🎬 At Mission Control
🦊

Foxy: Twenty-six out of thirty. I'll take it — troubleshooting's supposed to be my whole thing.

🐘

Ellie: Which four did you miss, Foxy? I remember every one of them, even if you'd rather I didn't.

🦊

Foxy: ...the UH flag one. I read "no healthy upstream" and went straight to checking DNS instead of the subset.

🐢

Timmy: That's not a troubleshooting gap, that's a Traffic Management gap wearing a troubleshooting costume. The symptom lives in one domain, the cause in another — that's exactly why this exam mixes them.

👺

Gizmo: Easy fix — memorize "UH means restart the pod" and move on. Works often enough! 😈

🐘

Ellie: It works exactly zero percent of the time here, Gizmo — a missing subset doesn't fix itself because a pod restarted. Foxy, go reread the DestinationRule section, then come back and redo just that question cold.

🦫

Benny: And once you've done that — run the drill for real. Break a subset on a live cluster and watch the same flag show up yourself. It sticks differently once you've typed it.

🐢 Timmy's checkpoint

1. Why does this paper give Troubleshooting and Securing Workloads more questions than their official curriculum weight, and what does a high score here not tell you? 2. What's the difference in effect between RequestAuthentication alone and pairing it with an AuthorizationPolicy that matches on requestPrincipals? 3. Within an AuthorizationPolicy's from field, which parts are ANDed and which are ORed, and what's the classic mistake that flips one into the other? 4. What does the UH Envoy response flag mean, and what should you check first when you see it right after a routing change? 5. Name the three-step troubleshooting ladder in order, and the one command that belongs to each step. 6. What's the practical risk of adding your very first AuthorizationPolicy ALLOW rule to a workload that's never had one before?

Check your answers
  1. Because those are the two domains where reading a live scenario correctly, not just recalling a definition, decides the outcome — and because they're where real mesh incidents concentrate. A high score here says nothing about your Traffic Management or Installation readiness, since both are deliberately under-represented; use Set 1 or Set 2 to judge those.
  2. RequestAuthentication alone validates a token if one is presented but rejects nothing when a token is simply absent. Pairing it with an AuthorizationPolicy requiring requestPrincipals to match makes presenting a valid token mandatory, not optional.
  3. Keys within one source block are ANDed; separate - source: entries in a list are ORed. The classic mistake is splitting two conditions that should both be required — like a service-account identity and a JWT — into two separate - source: blocks, which silently turns "and" into "or" and opens a hole.
  4. UH means "No Healthy Upstream" — the target cluster exists but has no healthy endpoint. Right after a routing change, check first for a subset the VirtualService names that the DestinationRule doesn't define.
  5. Configurationistioctl analyze. Control planeistioctl proxy-status, confirming every column reads SYNCED. Data planeistioctl proxy-config route|cluster|endpoint|secret (or x describe pod for a fast summary) against one specific proxy.
  6. That workload flips from unrestricted to default-deny the instant any ALLOW policy selects it — every caller not explicitly covered by the new rule is cut off immediately, even ones that were working a moment before. Rolling out with action: AUDIT first is the safer path.

That's the full sitting. If Troubleshooting or Securing Workloads cost you more than a couple of points each, reread the linked pages, run the Lock Down a Mesh Namespace drill for real hands-on reps, then come back and redo just your missed questions in a few days rather than the whole paper again.

⏱️ The three ICA papers

Set 1 · Set 2 · Set 3 (you are here). Sets 1 and 2 track the official 35/25/20/20 domain split; this closing paper deliberately skews toward Troubleshooting and Securing Workloads instead. See the ICA study plan for where each paper fits against your remaining prep time, the practice tasks & question bank for shorter drills in between, and ICA — the exam for the full domain writeup and official logistics.