Certifications · CKAD

CKAD — Certified Kubernetes Application Developer

The CKAD certifies the person your platform exists to serve. It is a hands-on, performance-based exam about authoring and running workloads on Kubernetes: designing Pods, deploying them, wiring in config and secrets, exposing them through Services and Ingress, and debugging them when they misbehave. For a platform engineer that makes it an unusually useful credential — not because you will spend your days writing Deployments, but because every golden path you pave ends at a developer doing exactly these tasks. This page covers the five official domains and weights from the CNCF curriculum, what you genuinely need to know, an honest verdict on whether to sit it, and a study plan built from lessons already here.

☺ Explain it like I’m 10

Imagine a huge kitchen. Some people build it — the ovens, the gas pipes, the fire alarms. Other people cook in it. The CKAD is the badge for the cooks: can you follow a recipe, use the oven properly, and work out why the cake didn’t rise? If you built the kitchen, earning the cook’s badge is still a very good idea — now you know exactly which counters are too low and which drawer always sticks.

🦆🦫Your hosts for this topic: Dot the Duck & Benny the Beaver — Dot is the developer this exam is written for and will tell you what the day actually feels like; Benny builds the delivery machinery underneath her and explains why a platform engineer benefits from walking a mile in her boots.

What the CKAD is, and who it is for

☺ Like you’re 10: It’s a two-hour test on a real computer where you have to actually make apps run on Kubernetes — not tick boxes about them.

The CKAD is one of the CNCF and Linux Foundation’s performance-based Kubernetes certifications. No multiple choice: you are dropped into a browser terminal with several live clusters and a list of tasks — create this, fix that, expose the other — and graded on the resulting cluster state, not how you got there. Elegance earns nothing; a working object earns full marks.

Its scope is narrow and deep. Where CKA is about operating a cluster, CKAD assumes the cluster exists and someone else looks after it. Your job is everything inside a namespace: workloads, volumes, config, secrets, service accounts, probes, Services, Ingress, NetworkPolicies.

Who should sit it

What it deliberately does not test

Not cluster installation, kubeadm, etcd, node registration, upgrades or control-plane forensics — that is CKA. Not threat modelling, runtime detection or supply-chain signing — that is CKS. And not platform design: nothing asks you to build an IDP, expose a custom API, or reason about cognitive load. It asks whether you can make an application run correctly, safely and observably in a namespace someone gave you.

◆ Key idea

CKAD certifies the consumer of a Kubernetes platform. CNPE certifies the builder of one. They meet at exactly one interface — the workload API — and that interface is where every abstraction you ship will eventually be judged.

Why a platform engineer might take it — and when to skip it

☺ Like you’re 10: Taking the cook’s test makes you a better kitchen-builder — but if you already cook daily, the badge teaches you little.

Here is the honest case. A platform engineer’s core product is an abstraction over the workload API — a Helm chart, a Kustomize base, a Backstage template. Abstractions built by people who never felt the underlying pain are the most reliable source of the anti-pattern this course calls the platform nobody asked for. CKAD makes you feel that pain: getting a readinessProbe right, a read-only mounted Secret, the Ingress that silently 404s on a wrong class annotation. Each is a defect you can now design out of your golden path. The second benefit is speed — the imperative kubectl fluency transfers straight to the CNPE and to every incident you will run.

When to skip it

Skip it if you already write and debug workload manifests daily and have done so for a year. CKAD will confirm what you know rather than teach you anything, and your money is better spent on CKA — the cluster-operations half platform engineers genuinely lack — or straight at CNPE, the credential that actually describes your job. On a limited budget with an infrastructure-facing role, CKA is the higher-value single purchase.

Take it if you are new to Kubernetes and want a forcing function, if you are moving from an application team into a platform team, or if you intend to collect CKA and CKS anyway — CKAD is the gentlest on-ramp and shares an exam environment with both.

🦆 Dot’s-eye view

“I passed CKAD before I ever met a platform team. What it taught me wasn’t YAML — it was how much YAML there is. So when Benny showed me a template where I fill in three fields and get a Deployment, a Service, an Ingress and a probe, I didn’t need convincing. The best advert for a platform is making someone write the manifests by hand once.”

The official domains and weights

☺ Like you’re 10: The test is split into five topics, and one of them — config and security — is a whole quarter on its own.

Transcribed from the CNCF’s published CKAD Exam Curriculum (document version 1.35): five domains and 24 competencies. The weights are 20 + 20 + 15 + 25 + 20 = 100% — if a study guide you are reading does not add up to exactly 100, it is out of date. The bars are sorted by weight so you can see where the marks live; the lists below keep the curriculum’s own ordering and its own 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

20% — Application Deployment

15% — Application Observability and Maintenance

25% — Application Environment, Configuration and Security

20% — Services and Networking

⚠ Verify the current blueprint yourself

The above is transcribed from curriculum document version 1.35, competency by competency. One transcription trap if you read the PDF yourself: it is laid out in columns, and the bare “Kustomize” bullet sits visually near the Services and Networking heading while actually belonging to Application Deployment — several third-party study guides file it under the wrong domain. CNCF revises the curriculum alongside Kubernetes releases, and exam logistics — duration, price, task count, pass mark, validity, retake policy — change more often still. Before booking, read the current curriculum PDF and the official Linux Foundation CKAD page.

What you actually need to know

☺ Like you’re 10: Almost everything on the test lives in one file — the Pod spec. Learn that one thing really well and most of the exam is already done.

Strip away the domain names 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 is one manifest touching four of the five domains — a checklist of what you must write without looking anything up:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: checkout
  namespace: shop
spec:
  replicas: 3
  selector:
    matchLabels: { app: checkout }
  template:
    metadata:
      labels: { app: checkout }
    spec:
      serviceAccountName: checkout            # ServiceAccounts domain
      securityContext:
        runAsNonRoot: true
        fsGroup: 2000
      initContainers:                          # init pattern
        - name: wait-for-db
          image: busybox:1.36
          command: ["sh", "-c", "until nc -z db 5432; do sleep 2; done"]
      containers:
        - name: app
          image: ghcr.io/acme/checkout:1.4.3
          ports: [{ containerPort: 8080 }]
          envFrom:
            - configMapRef: { name: checkout-config }   # ConfigMaps
          env:
            - name: DB_PASSWORD                         # Secrets
              valueFrom:
                secretKeyRef: { name: checkout-db, key: password }
          resources:                                    # requests / limits
            requests: { cpu: 100m, memory: 128Mi }
            limits:   { cpu: 500m, memory: 256Mi }
          securityContext:
            allowPrivilegeEscalation: false
            readOnlyRootFilesystem: true
            capabilities: { drop: ["ALL"] }
          readinessProbe:                               # probes
            httpGet: { path: /healthz, port: 8080 }
            initialDelaySeconds: 5
            periodSeconds: 10
          livenessProbe:
            httpGet: { path: /livez, port: 8080 }
            failureThreshold: 3
          volumeMounts:
            - { name: scratch, mountPath: /tmp }        # ephemeral volume
      volumes:
        - name: scratch
          emptyDir: {}

Speed is a skill, and it is examinable

Two hours is not long. Nobody types that from scratch under exam conditions — you generate a skeleton and edit it. This muscle memory separates a pass from a near-miss:

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

# 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 checkout --image=nginx --replicas=3 --dry-run=client -o yaml > d.yaml
kubectl create job hello --image=busybox --dry-run=client -o yaml -- echo hi
kubectl create cronjob nightly --image=busybox --schedule="0 2 * * *" -- /bin/sh -c date

# config & secrets without opening an editor
kubectl create configmap checkout-config --from-literal=TIER=gold --from-file=./app.properties
kubectl create secret generic checkout-db --from-literal=password='s3cr3t'

# expose, roll, inspect, undo — note: --record is deprecated, annotate change-cause instead
kubectl expose deployment checkout --port=80 --target-port=8080
kubectl set image deploy/checkout app=ghcr.io/acme/checkout:1.4.4
kubectl annotate deploy/checkout kubernetes.io/change-cause="bump to 1.4.4" --overwrite
kubectl rollout status deploy/checkout && kubectl rollout history deploy/checkout
kubectl rollout undo deploy/checkout --to-revision=2

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

Networking is a fifth of the exam and the easiest to under-study

Only three competencies, but 20% of the marks. Know the four Service types cold (ClusterIP, NodePort, LoadBalancer, ExternalName) plus the headless variant — which is not a type at all but clusterIP: None, giving you Pod addresses straight from DNS instead of a virtual IP. Then the selector-to-label relationship, the port triple (port / targetPort / nodePort), Ingress host and path rules under networking.k8s.io/v1 with an ingressClassName and an explicit pathType, and NetworkPolicy well enough for a default-deny plus a targeted allow. The classic task is “nothing can reach this app — fix it,” and the answer is usually a mismatched label, a wrong targetPort, or a policy with no matching rule:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-ingress
  namespace: shop
spec:
  podSelector: {}                 # every Pod in the namespace
  policyTypes: ["Ingress"]
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-frontend-to-checkout
  namespace: shop
spec:
  podSelector:
    matchLabels: { app: checkout }
  policyTypes: ["Ingress"]
  ingress:
    - from:
        - podSelector: { matchLabels: { app: frontend } }
      ports:
        - { protocol: TCP, port: 8080 }

Deeper background lives in Networking & Connectivity; the failure modes are catalogued in Triage · networking, RBAC & admission.

The parts a platform engineer will find familiar

Three competencies feel like home. “Discover and use resources that extend Kubernetes (CRD, Operators)” is the shallow end of Platform APIs, CRDs & Operators — you use a custom resource, you don’t build one. Helm and Kustomize are covered beyond exam depth in Helm, Kustomize and Configuration & Packaging. And “blue/green or canary” here means labels, selectors and two Deployments by hand — the primitive version of what Argo Rollouts automates.

How to prepare using this site

☺ Like you’re 10: Every topic on the test already has a page here — this table says which, so you can start today.

This site was written for the platform-engineering certifications, but the workload layer is shared ground and most CKAD topics already have a home here. Read the page, then do the task on a real cluster — reading alone never passed a performance exam. The hands-on sets live under Practice tasks and the guided builds under the lab track; the facts worth memorising outright are collected in Know cold.

CKAD domainRead these pagesThen drill
Application Design and Build · 20%Kubernetes as the Substrate, Storage & Stateful Workloads (volumes, PV/PVC), Release Engineering (image building)Lab track
Application Deployment · 20%Helm, Kustomize, Configuration & Packaging, CI/CD & Progressive Delivery, Argo RolloutsPractice · GitOps & CD
Observability and Maintenance · 15%Observability & Operations, Triage Playbook, Triage · workloads & storagePractice · Observability · Speed Reference
Environment, Config and Security · 25%Configuration & Packaging, Secrets & Workload Identity, Security & Policy (RBAC, admission), Platform APIs & CRDs, Scaling & Scheduling (requests, limits, quotas)Practice · Security
Services and Networking · 20%Networking & Connectivity (Services, DNS, Ingress), Cilium (policy enforcement)Triage · networking

A three-week plan

Week 1 — the Pod spec. Read Kubernetes as the Substrate and Configuration & Packaging. Hand-write a Deployment with probes, resources, a ConfigMap, a Secret and a security context — then rebuild it tomorrow from a generator in under four minutes.

Week 2 — around the Pod. Volumes, Services, Ingress, NetworkPolicy, Jobs and CronJobs. Do Networking and Storage, then break things deliberately and fix them with the triage playbook.

Week 3 — speed and packaging. Helm, Kustomize, blue/green and canary with plain primitives, then timed sets. Live in the Speed Reference until --dry-run=client -o yaml is something your hands do without you, and do a final pass over Know cold the night before.

🦫 Benny’s workshop · 25 min

On kind or minikube, against a clock, imperatively wherever possible: create namespace shop; a ConfigMap checkout-config with TIER=gold; a Secret checkout-db; a Deployment checkout from nginx with 3 replicas consuming both; add a readiness probe on /; expose it on port 80; apply a default-deny NetworkPolicy and confirm from a busybox Pod that traffic is blocked; then write the allow-rule that unblocks only the frontend. One trap worth knowing before you start: NetworkPolicy is only enforced if your CNI enforces it — kind’s default kindnet and a stock minikube accept the objects and quietly ignore them, so bring up the cluster with a policy-capable plugin (Cilium or Calico) or your “blocked” test will pass for the wrong reason. Over about fifteen minutes on the whole set? You have found your study plan.

Exam logistics — confirm every number before you book

☺ Like you’re 10: Here is roughly how test day works — but prices and rules change, so check the official page before you pay.

The following reflects the exam as commonly documented at the time of writing — orientation, not an authoritative source. Nothing in this table is a term of your purchase. Before you pay, confirm every row on the official Linux Foundation CKAD page and in the candidate handbook it links to; where they disagree with this page, they are right and this page is stale.

ItemWhat to expect (verify officially)
FormatOnline, remote-proctored, performance-based — real tasks on live clusters in a browser terminal. No multiple choice.
Duration2 hours, as stated on the Linux Foundation CKAD page at the time of writing
Number of tasksNot published. Community write-ups usually land somewhere around 15–20 hands-on tasks, but the Linux Foundation does not commit to a count — pace yourself by the clock and by the per-task weighting shown in the exam UI, never by a number you read on a blog.
Graded onResulting cluster state, scored automatically after the session. Partial credit per task is the widely reported behaviour — assume a half-finished task is worth more than a skipped one, and never leave one blank.
Documentation allowedHistorically one additional browser tab on the official Kubernetes documentation (kubernetes.io/docs plus the Kubernetes blog) and, for CKAD, the Helm documentation. The binding list lives in the exam’s Important Instructions page and the candidate handbook — read it there; it is narrower than people assume.
ValidityCurrently published as 2 years from the date you pass (it was three years before a 2023 change — old blog posts still say three)
RetakeExam purchases have historically included one free retake — check whether that still applies to the SKU you buy
PrerequisitesNone. Unlike CKS, which requires an active CKA, CKAD can be your first Kubernetes exam.
Level and styleA practitioner-level exam, and entirely hands-on — do not confuse it with the entry-level, knowledge-based, multiple-choice CNCF exams such as KCNA, KCSA or CNPA. Same vendor, completely different day.
Curriculum versionTracks the Kubernetes release running in the exam environment — this page reflects v1.35

Deliberately absent: price and pass mark. Both move, both vary by region and promotion, and a stale number helps nobody. Read them on the official Linux Foundation CKAD page and the CNCF certification page, with the current candidate handbook — those are the contract; everything else, this site included, is commentary.

One stable practical note: the environment gives you multiple clusters, and every task names the cluster and namespace it belongs to. Getting that wrong is the commonest self-inflicted failure on any Kubernetes performance exam. Read the task, switch context, switch namespace, then type — the same discipline the CNPE rewards.

🎬 At the Platform Guild
🦊

Foxy: Why would a platform engineer sit a developer exam? Isn’t that backwards?

🦫

Benny: Opposite. Every template I ship is a Pod spec with the sharp edges filed off. Never cut myself on those edges, I file the wrong ones.

🦆

Dot: Can confirm. Benny’s first chart had no readiness probe. It shipped 502s for six minutes every deploy and we all blamed the mesh.

🐢

Timmy: And a quarter of that exam is config and security — security contexts, capabilities, service accounts, quotas. My whole guardrail surface, seen from the other side of the fence.

👺

Gizmo: Or memorise a hundred dumps and speed-run the badge. Nobody checks whether you understand the emptyDir. 🤑

🐼

Panda: They check within a week of you starting the job. Do the reps — the badge is the receipt, not the skill.

Where CKAD sits in the ladder, and what to do next

☺ Like you’re 10: These badges come in an order. CKAD is near the start, and points at two or three sensible next steps.

The Kubernetes certifications form a rough ladder; the platform-engineering ones sit alongside it rather than on top:

CertificationStyleCentre of gravity
KCNAKnowledge-based · multiple choiceCloud native and Kubernetes fundamentals — the true entry point
CKADPerformance-based · hands-onAuthoring and running workloads — this page
CKAPerformance-based · hands-onOperating and troubleshooting the cluster itself
CKSPerformance-based · hands-onHardening clusters and workloads (requires an active CKA before you may sit it)
KCSAKnowledge-based · multiple choiceKubernetes security fundamentals — the reading half of CKS
CNPAKnowledge-based · multiple choicePlatform engineering concepts — golden paths, IDPs, delivery
CNPEPerformance-based · hands-onBuilding and operating an internal developer platform

Heading for platform engineering? The highest-value next step is CKA — it fills in the cluster-operations half CKAD omits and is assumed knowledge across the CNPE blueprint. Then branch: CKS if your platform’s differentiator is security and policy, or CNPA then CNPE if it is self-service and developer experience. Every credential covered here is mapped on the Certifications hub.

Whichever you choose, keep the CKAD lens. The most useful sentence in a platform design review is “I’ve written that manifest by hand — here is the part that always goes wrong.” Turn that instinct into product with Developer Experience and Platform as a Product.

🐢 Timmy’s checkpoint

1. Which 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 CKA does? 4. Which two packaging tools are named in the Application Deployment domain? 5. Why should a platform engineer care about a developer-facing certification? 6. Which two details here should you never trust without checking the official page?

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.
  4. Helm and Kustomize.
  5. Because a platform is an abstraction over exactly these objects. Writing them by hand tells you which sharp edges your golden path should remove — and it builds kubectl speed.
  6. Anything in the logistics section, especially price and pass mark — which is why this page states neither.