A few people approached me asking various questions about CKAD, so I thought I’d summarise some of my learnings, making sure to not overstep the line between ‘being helpful’ and ‘sharing too much’. As with everything, the exam itself, its format and content are continuously evolving; if you dig up this story in 2021, please keep in mind it was written in early 2019.
Registration and Format
The CNCF-managed CKAD certification is for — as its name suggests — Application Developers using Kubernetes. CKAD is not to be confused with CKA, which is more geared towards Kubernetes admins. The two exams can be taken independently.
Tip #1: CKAD or CKA? If, in your role you set up and operate Kubernetes clusters and are more concerned about stuff like networking, RBAC and monitoring, choose CKA. Alternatively, if you focus on deploying to and operating services in a pre-provisioned environment, pick CKAD. If you do both, I’d suggest tackling CKAD first, simply because it’s shorter and, at the time of writing, the passing score was lower: 66% for CKAD versus 74% for CKA
The process is straightforward: after registering at CNCF and picking a suitable date and time, you will be sent a link to the exam environment that will be provisioned before the exam (I have a habit of running
w upon SSH login and my environment’s uptime was 1 hour). You’ll be also required to install a Chrome plugin with broad permissions, don’t forget to delete it afterwards.
The exam itself is proctored, so you’ll have someone monitoring your desktop, system processes; the mic and webcam will be turned on for the whole duration. You’ll have to show the proctor your ID, the room and the desk and you’re required to be alone if you’re taking it from home. In my case, all communications with the proctor were made via chat, which is handy in case of a language barrier.
Tip #2: Interruptions. You should expect some, I was asked to ‘stop reading questions out loud’ and ‘move closer to the camera’ a couple of times. When I had a glitch with my Internet connection, a simple page refresh fixed it
What to Expect
Two hours and about 20 hands-on problems (6 minutes per task!) that can be tackled in any order, and in any way you prefer as long as it’s doable via the in-browser SSH session. You’re welcome to write yaml, json, run
kubectl, make direct call APIs via
curl, anything, as long as it solves the problem.
You will be given several pre-built Kubernetes environments (I believe I had around five), some environments will be empty for you to deploy to, some — packed with stuff for you to modify. Make sure to pay attention to namespaces — each question will require you to use a specific one.
Tip #3. Jumping between clusters. Become familiar with switching contexts and using multiple namespaces. In my case, every task included a fully formed
kubectl config set-context...command, make sure to run it even if you think you’re in the right environment. Not doing that cost me at least 10 minutes in rework
Tip #4. Skim through all tasks first. You’re not expected to know everything, be okay with reordering and skipping, each task is independent of others and has a different score. It makes sense to spend a few minutes to skim through all of them and choose the approach that works for you. My mistake was to do the whole thing sequentially, I ended up with a couple of well-paying yet straightforward tasks towards the very end with only a minute left on the clock
Did I mention that everything is browser based? You’re allowed two browser tabs: the exam environment itself and the official documentation, samples or blog. The environments are connected to the Internet, but you’re not allowed to run external scripts hosted outside of these URIs. For example, I have a
.bashrc sitting in my GitHub that sets things up the way I like, you probably have one too. Forget about running it, the proctor won’t like it. You’ll be dealing with a pretty vanilla environment, except that
kubectl autocompletion was set up and the
vim indentation settings were OK. Don’t expect any
kubectl bash aliases and if you’re not a fan of
vim, make sure you’re familiar with
Tip #5. Bookmarking. Bookmark the URIs to save time
Tip #6. Say no to Google. Get used to finding stuff using built-in search, you won’t be allowed to use Google
At the time of writing, CNCF uses Gate One to deliver the SSH terminal for CKAD and CKA exams — you’re more than welcome to give it a try beforehand. Probably one thing worth noting is that you’ll be required to use Shift+Insert to paste, Ctrl+Insert to copy and Ctrl+Del to cut. At the time of writing, Gate One’s demo access was broken, you can try Azure Cloud Shell for a similar-ish experience.
Tip #8. Keyboard shortcuts. These shortcuts work out of the box in Windows and Linux alongside the more familiar ones; it’s a good idea to get used to using them before the exam — you’ll be copying and pasting a lot of yaml
The exam environment comes with a handy notepad that I used heavily throughout the exam — it doesn’t mess up yaml indentations and overall works flawlessly. In hindsight, I should not have cleared it with every new question and kept appending yaml — there was an opportunity to partially reuse solutions across questions.
Some principles that worked really well for me:
- Yaml-first. When deploying new resources, I would through together a yaml config in the in-browser notepad first, starting either from scratch or reusing samples from Kubernetes docs and then copy and paste it into
- No in-place modifications. When modifying existing resources, I would avoid making in-place edits via
kubectl edit..., instead exporting to yaml via
kubectl get ... -o yaml --exportand making edits in
vimor the in-browser notepad
- One question — one yaml. In my home directory I created a yaml per task (
02.yaml, etc), which proved super helpful when I applied a botched deployment and had to delete the whole thing with a single
kubectl delete -f …command
- Dry runs. It’s self-explanatory really, make sure to always do a dry run using
--dry-runbefore applying your configuration
Tip #9. Bash aliases. If you can’t live without bash aliases for
kubectland its verbs, try to un-learn those at least for the exam; you will be dealing with a pretty vanilla environment and won’t be allowed to run an external script to set them up
Tip #10. Speed up deletions. When deleting resources, use
--grace-period=0 -forceto speed things up
There’s no shortage of materials out there, make sure to stick to the syllabus (for instance, there’s no mention of istio yet). CNCF also offers two paid courses, Kubernetes for Developers and Kubernetes Fundamentals that are aligned with the CKAD and CKA exams respectively. Nothing beats real-life practice though, ideally you should be able to score at least 50–55% without any preparation whatsoever.
Tip #12. Forget about the Kubernetes Dashboard. Don’t become attached to the Kubernetes Dashboard, you won’t see it used often in real life and you definitely won’t be using it during the exam
Tip #13. Practice. Get some hands-on exposure before attempting the exam to benefit from ‘muscle memory’ and habits. If you don’t use Kubernetes at work, come up with a personal project and work on it for a while
Tip #14. Free retake. Keep in mind that all exams purchased directly from CNCF, come with one retake for free
Good luck, thanks for reading and until next time!