Certifications · CKAD

CKAD — the exam

The CKAD — Certified Kubernetes Application Developer — is a two-hour, performance-based exam about one thing: can you make an application run correctly inside a namespace somebody else administers? No multiple choice, no essay questions about theory. You are dropped into a browser terminal in front of several live, disposable clusters with a list of tasks — build this, deploy that, expose the other, fix why it's broken — and graded purely on the cluster state you leave behind. This page is the CKAD hub for this course: what the exam tests and deliberately doesn't, an honest read on when to sit it before or after the CKA, the full official domain breakdown from CNCF curriculum v1.35 — five domains, 24 competencies, summing to exactly 100% — and a single worked manifest that touches four of those five domains at once.

☺ Explain it like I'm 10

Imagine you're handed a half-built birdhouse kit: some pre-cut wood, a bag of screws, a picture of what it should look like when it's done. Someone hands you the tools, points at a workbench that already exists, and says "build three of these, make sure the door actually opens, and don't use the wrong screws." That's the CKAD — you don't build the workbench, you don't wire the shed's electricity, you just have to actually assemble working birdhouses, correctly, while someone checks your work at the end. It's different from being asked to keep the whole workshop running for a hundred other kids building birdhouses at the same time — that's a different, harder badge, and it's called the CKA.

🦫🐢Your hosts for this topic: Benny the Beaver & Timmy the Turtle — Benny builds and ships the workloads this exam is entirely about; Timmy owns the single biggest domain on the blueprint, config and security, and keeps you from shipping something that runs but isn't safe.

What the CKAD actually tests

☺ Like you're 10: It's a two-hour test on a real computer where you make actual apps run — nobody asks you to describe how you'd do it, they just watch you do it.

CKAD is one of the CNCF's three performance-based Kubernetes exams, alongside CKA and CKS. There is no question bank to memorize — you're given real tasks against real clusters, and the grading script inspects the resulting objects after time runs out. An elegant approach earns nothing extra; a working Deployment with the right probe on it earns full marks whether you got there by hand-writing YAML or by editing a generated skeleton.

Its scope sits entirely inside a namespace. Where the CKA is about operating the cluster itself — bootstrapping nodes, backing up etcd, running RBAC across the whole thing — CKAD assumes a cluster already exists and someone else keeps it alive. Your job is everything a workload author touches: Pods and their controllers, config and secrets, volumes, probes, Services, Ingress, and the debugging loop when any of it misbehaves.

Who should sit it

What it deliberately does not test

Not cluster installation, kubeadm, etcd backup and restore, node lifecycle, or control-plane troubleshooting — that's the CKA's territory, covered in this course's five-part Exam Blueprint. Not threat modeling, runtime detection, or supply-chain signing — that's CKS, which additionally requires an active, non-expired CKA before you're even allowed to register. CKAD asks a narrower question: can you make an application run correctly, safely and observably in a namespace you were handed, not one you built.

◆ Key idea

CKAD certifies the consumer of a Kubernetes platform — the person whose Deployment actually runs on top of everything the CKA and CKS material covers. Every one of the twenty-four competencies below is something a developer does inside a namespace, never something done to the cluster around it.

CKAD versus CKA — which to sit, and when

☺ Like you're 10: One badge is for the person who cooks in the kitchen, the other is for the person who keeps the kitchen itself running. Pick the one closest to what you actually do all day.

Neither exam has a formal prerequisite of its own, so nothing stops you from sitting either first — but "can" and "should" aren't the same question. The two exams share an exam environment and a similar clock, but almost no curriculum overlap:

DimensionCKADCKA
Centre of gravityAuthoring and running workloads inside a namespaceBootstrapping, operating and troubleshooting the cluster itself
Largest domainApplication Environment, Configuration and Security — 25%Troubleshooting — 30%
Competencies24, across 5 domains27, across 5 domains
PrerequisiteNone publishedNone published
Natural next stepCKA, to pick up cluster operationsCKS (requires an active CKA) or CKAD for workload-layer depth

If you already write and debug workload manifests daily and have done so for a year, CKAD will mostly confirm what you know — your study time is probably better spent on the CKA, the half of Kubernetes an application developer genuinely hasn't touched. If you're new to Kubernetes entirely, or you ship applications and want the exam that maps most directly onto your day job, CKAD is the gentler on-ramp and a fine place to start; this course's Certifications hub lays out three full starting paths depending on where you're coming from. Either order gets you toward the same place: hold all five core-Kubernetes certifications at once and you qualify for Kubestronaut.

🦫 Benny's-eye view

"I sat CKAD before I'd ever touched kubeadm. What it actually taught me wasn't YAML syntax — it was exactly how much of it there is, and how many of the fields I'd normally skip are the ones the exam grades hardest. A readiness probe I used to leave out 'for now' became a field I now write first, not last. That habit outlasted the exam by years."

The official domains and weights — CNCF curriculum v1.35

☺ Like you're 10: The test is split into five topics, and one of them — config and security — is worth a whole quarter of your score by itself.

Transcribed from the CNCF's published CKAD Exam Curriculum, version 1.35: five domains and 24 competencies. The weights are 20 + 20 + 15 + 25 + 20 = 100% — if a study guide you're reading doesn't add up to exactly 100, it's out of date or misquoting. Bars below are sorted by weight so you can see where the marks actually live; the domain sections that follow keep the curriculum's own order and wording.

🔑Application Environment, Configuration and Security
25%
🧩Application Design and Build
20%
🚢Application Deployment
20%
🐦Services and Networking
20%
🔭Application Observability and Maintenance
15%
Domain (curriculum order)WeightCompetencies
🧩 Application Design and Build20%4
🚢 Application Deployment20%4
🔭 Application Observability and Maintenance15%5
🔑 Application Environment, Configuration and Security25%8
🐦 Services and Networking20%3
Total100%24

🧩 20% — Application Design and Build

The workload-resource question shows up constantly: know on sight when a bare Pod, a Deployment, a DaemonSet, a Job, or a CronJob is the right primitive — this course's Kubernetes Architecture and Scheduling & Resource Management pages cover the full set. The init and sidecar patterns are drilled hands-on in Capstone Part 2.

🚢 20% — Application Deployment

"Blue/green or canary" here means labels, selectors and two Deployments handled by hand — no rollout controller does it for you on this exam. Helm and Kustomize are covered at exam depth and beyond in the Helm and Kustomize tool guides; rolling updates and rollbacks live in Workloads & Scheduling, the same CKA blueprint domain covering the controller mechanics underneath.

🔭 15% — Application Observability and Maintenance

The smallest domain by weight but not by usefulness — probes in particular reappear inside nearly every other domain's tasks. Go deeper in Observability on Kubernetes and A Troubleshooting Methodology, and drill the debugging loop itself in Drill — Debug a Stuck Pod.

🔑 25% — Application Environment, Configuration and Security

The largest domain, and with eight competencies also the broadest — it's really three sub-topics wearing one name. Extension resources are the shallow end of Operators & Custom Resource Definitions; authn/authz/admission is the workload-facing slice of RBAC & Admission Control, hardened hands-on in Drill — Harden an RBAC Configuration; requests, limits and quotas are covered in Scheduling & Resource Management. For ConfigMaps and Secrets specifically, the sibling Platform Engineering course's Configuration & Packaging and Secrets & Workload Identity pages go further than this exam requires. SecurityContexts and Capabilities are this course's Security: Defense in Depth, and get a full deep-dive treatment from DevSecOps's Kubernetes Security Deep Dive if you want the attacker's-eye version.

🐦 20% — Services and Networking

Only three competencies for a fifth of the marks, which makes this the domain most people under-study relative to its weight. Full coverage lives in Networking & the CNI and Services & Networking (the same domain name on the CKA side of the ladder, viewed from the cluster-operator angle instead); Ingress specifics are in ingress-nginx, and policy enforcement in Cilium or Calico.

⚠ Verify the current blueprint yourself

This is transcribed from curriculum document version 1.35, competency by competency. CNCF revises the curriculum alongside Kubernetes releases roughly once a year, and exam logistics — duration, price, task count, pass mark, validity, retake policy — change on their own separate schedule. Before you study or book, read the current curriculum PDF at github.com/cncf/curriculum and the official Linux Foundation CKAD page. This is an independent, unofficial study resource, not affiliated with or endorsed by the CNCF or the Linux Foundation.

One manifest, four domains

☺ Like you're 10: Almost everything on this test lives in one kind of file — the Pod template. Get really good at that one file and most of the exam is already done.

Strip the domain names away and CKAD is one skill, repeated: fluency in the Pod template. Controllers wrap it, volumes plug into it, ConfigMaps and Secrets feed it, probes and resources are fields on it, Services select the Pods it produces. Here's a single Deployment that touches Design & Build, Deployment, Observability, and Environment/Configuration/Security all at once — read it as a checklist of fields you should be able to write without looking anything up:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: catalog-api
  namespace: catalog
spec:
  replicas: 2
  selector:
    matchLabels: { app: catalog-api }
  template:
    metadata:
      labels: { app: catalog-api }
    spec:
      serviceAccountName: catalog-api           # ServiceAccounts
      securityContext:
        runAsNonRoot: true
        runAsUser: 10001
        fsGroup: 2000
      initContainers:                            # multi-container pattern: init
        - name: wait-for-migrations
          image: busybox:1.36
          command: ["sh", "-c", "until nc -z db 5432; do sleep 2; done"]
      containers:
        - name: api
          image: registry.example.com/catalog-api:2.3.1
          ports: [{ containerPort: 8080 }]
          envFrom:
            - configMapRef: { name: catalog-api-config }   # ConfigMaps
          env:
            - name: DB_PASSWORD                            # Secrets
              valueFrom:
                secretKeyRef: { name: catalog-api-db, key: password }
          resources:                                       # requests, limits
            requests: { cpu: 100m, memory: 128Mi }
            limits:   { cpu: 500m, memory: 256Mi }
          securityContext:                                  # Application Security
            allowPrivilegeEscalation: false
            readOnlyRootFilesystem: true
            capabilities: { drop: ["ALL"] }
          readinessProbe:                                   # probes and health checks
            httpGet: { path: /readyz, port: 8080 }
            initialDelaySeconds: 5
            periodSeconds: 10
          livenessProbe:
            httpGet: { path: /healthz, port: 8080 }
            failureThreshold: 3
          volumeMounts:
            - { name: cache, mountPath: /tmp }             # ephemeral volume
      volumes:
        - name: cache
          emptyDir: {}

The fifth domain, Services and Networking, sits right next to it — the Deployment above is worthless until something routes traffic to it, and the classic exam task is "nothing can reach this app, fix it":

apiVersion: v1
kind: Service
metadata:
  name: catalog-api
  namespace: catalog
spec:
  selector: { app: catalog-api }        # must match the Pod's labels exactly
  ports:
    - { port: 80, targetPort: 8080 }    # port vs targetPort is the #1 self-inflicted bug
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: catalog-api
  namespace: catalog
spec:
  ingressClassName: nginx
  rules:
    - host: catalog.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service: { name: catalog-api, port: { number: 80 } }

When a task like that fails, it's almost always one of three things: a label typo between the Service selector and the Pod template, a targetPort that doesn't match the container's real listening port, or a NetworkPolicy with no rule that matches. The failure modes and the fix for each are catalogued in Troubleshooting and drilled in Drill — Diagnose a Networking Failure.

Speed is examinable too

Two hours is not long enough to hand-type every manifest from a blank file. Nobody who passes does that — they generate a skeleton and edit the two or three lines that need it. This muscle memory, more than raw knowledge, separates a comfortable pass from a near-miss:

# pin context and namespace first — every task names one
kubectl config set-context --current --namespace=catalog

# generators: the fastest path to a valid skeleton
kubectl run tmp --image=nginx --restart=Never --dry-run=client -o yaml > pod.yaml
kubectl create deployment catalog-api --image=nginx --replicas=2 --dry-run=client -o yaml > d.yaml
kubectl create cronjob nightly --image=busybox --schedule="0 2 * * *" -- /bin/sh -c date

# config & secrets without opening an editor
kubectl create configmap catalog-api-config --from-literal=TIER=gold
kubectl create secret generic catalog-api-db --from-literal=password='s3cr3t'

# expose, roll, inspect, undo
kubectl expose deployment catalog-api --port=80 --target-port=8080
kubectl set image deploy/catalog-api api=registry.example.com/catalog-api:2.3.2
kubectl rollout status deploy/catalog-api && kubectl rollout undo deploy/catalog-api

# the debugging loop that answers most "why is it broken" tasks
kubectl describe pod catalog-api-xxxx | tail -30
kubectl logs catalog-api-xxxx -c api --previous
kubectl get events --sort-by=.lastTimestamp | tail -20

This exact command set, and the reasoning behind each one, is covered end to end in The kubectl Fluency Baseline — it's worth being fast at every one of these before you book, not during the exam itself.

Format and logistics — confirm every number before you book

☺ Like you're 10: Here's roughly how test day works — but the exact rules and prices change, so check the official page before you pay for anything.

What follows reflects the exam as commonly documented and reported at the time of writing. It is orientation, not a contract. Nothing in this table is a term of your purchase, and where it disagrees with the official page, the official page is right and this one is stale.

ItemWhat to expect (verify officially)
FormatOnline, remotely proctored, performance-based — real tasks on live clusters in a browser terminal. No multiple choice.
Duration2 hours
PrerequisiteNone. Unlike CKS, which requires an active CKA, CKAD can be your first Kubernetes exam.
Graded onResulting cluster state, scored automatically after the session. Partial credit per task is widely reported — never leave a task blank.
Passing scoreCommonly published around 66% — confirm the current figure before you plan around it
ValidityCurrently published as 2 years from the date you pass
RetakeRegistration has historically included one free retake — check whether that still applies to the SKU you buy
PriceAround USD $445 list, in the same bracket as CKA and CKS; bundles and regional pricing are common
Permitted resourcesHistorically one additional browser tab to the official Kubernetes documentation and, for CKAD specifically, the Helm documentation — the binding list lives in the exam's own Important Instructions and the candidate handbook
Curriculum versionTracks the Kubernetes release running in the exam environment — this page reflects v1.35
⚠ Verify officially before you book

This is an independent, unofficial study resource — not affiliated with the CNCF or the Linux Foundation. Price, pass mark, retake policy, permitted documentation and curriculum version all move. Confirm current details on the official Linux Foundation CKAD page and the CNCF certification page, and read the Candidate Handbook in your LF portal before you pay for anything. See Exam Day — Proctoring & Environment for what the room-scan and ID checks feel like in practice, and the sibling Golden Astronaut course if CKAD is one stop on the way to the full Kubestronaut or Golden Kubestronaut set.

How to prepare using this course

☺ Like you're 10: There's already a page here for almost everything on the test — this is the short list of where to start.

Read How to Study for a CNCF Exam first for the general method, then work this exam's own pages: CKAD Study Plan for a full week-by-week schedule sized to the domain weights above, CKAD Practice Tasks for graded reps, and Mock Exam · Set 1 and Set 2 for full timed runs. The hands-on labs — the capstone track and the seven guided drills — are where the manifest above stops being something you read and starts being something your hands do without thinking. Keep a running list of anything that trips you up in Field Notes, and use the glossary whenever a term above doesn't fully click.

🦫 Benny's workshop · 20 min

On kind or minikube, against a clock: create namespace catalog; a ConfigMap catalog-api-config; a Secret catalog-api-db; a Deployment catalog-api from nginx with 2 replicas consuming both, a readiness probe on /, and a non-root securityContext; expose it with a Service on port 80; then apply a default-deny NetworkPolicy and confirm from a busybox Pod that traffic is blocked before writing the one allow-rule that unblocks it. One trap worth knowing before you start: NetworkPolicy is only enforced if your CNI enforces it — kind's default kindnet and a stock minikube silently accept the objects and ignore them, so bring up the cluster with Cilium or Calico or your "blocked" test will pass for the wrong reason. Fifteen minutes or under on the full set, and you've found your actual study plan.

🎬 At the Pod Squad
🦊

Foxy: If I'm going for CKA eventually anyway, why not skip straight there and save myself an exam fee?

🦫

Benny: Because CKAD is the half of Kubernetes you'll actually build for other people. Every chart or template I ship is a Pod spec with the sharp edges filed off — I only know which edges to file because I've cut myself on them first.

🐢

Timmy: And a quarter of the exam is my domain — config and security. SecurityContexts, Capabilities, ServiceAccounts, quotas. Seeing my guardrails from the other side of the fence changes how you write the manifest in the first place.

👺

Gizmo: Or just cram a leaked question dump the night before. Same certificate, way less effort. 🤑

🐢

Timmy: There's nothing to leak, Gizmo — it's performance-based. They hand you a broken cluster and grade whatever state you leave it in. A memorized answer doesn't type itself into a terminal.

🐰

Remy: And even if it weren't — a dump wouldn't make your hands faster. Speed under a two-hour clock only comes from actually doing the reps.

🐢 Timmy's checkpoint

1. Which CKAD domain carries the largest weight, and what percentage? 2. Name the three competencies in Services and Networking. 3. What does CKAD deliberately not test that the CKA does? 4. Which two packaging tools are named in the Application Deployment domain? 5. What's the single most common self-inflicted cause of a "nothing can reach this app" task failing? 6. What formal prerequisite does CKAD have, and how does that compare to CKS?

Check your answers
  1. Application Environment, Configuration and Security25%, and with eight competencies also the broadest.
  2. NetworkPolicies (basic understanding); providing and troubleshooting access via Services; using Ingress rules to expose applications.
  3. Cluster lifecycle and operations — installation, kubeadm, etcd backup/restore, node management, upgrades, control-plane troubleshooting. CKAD assumes a working cluster someone else administers.
  4. Helm and Kustomize.
  5. A mismatch between the Service's selector and the Pod template's labels, or a wrong targetPort — check both before assuming a NetworkPolicy is the culprit.
  6. CKAD has no formal prerequisite — it can be your first Kubernetes exam. CKS, by contrast, requires an active, non-expired CKA before you're even allowed to register.