In this post, I would like to tell you how to pass the CKAD – Kubernetes Certified Application Developer exam.
What is the purpose of this exam? This is a great way to prove your Kubernetes skills in a developer day-to-day work. More precisely, checking whether the certificate holder can design, build, configure and deploy a cloud application using Kubernetes.
Is the exam difficult? For me personally, this exam was the most difficult that I prepared for. And I already have a lot of experience in cloud certificates.
However, I think the difficulty depends on how much experience you have with kubernetes itself.
It is also worth noting that I know people who passed this exam without any previous experience with this platform. So the world belongs to the brave!
How long does it take to prepare for the exam? People who already have a lot of practical experience with K8S will be able to take the exam quite quickly (after a few weeks of work). People with less experience (such as me) will need at least 2-3 months of preparation.
Importantly, the exam tests your knowledge in practice. There are no questions with answers, just practice itself. Therefore, it is important to be able to work quickly in the Kubectl console.
Topics required for the exam:
|13%||Core Concepts||Understand Kubernetes API primitives|
Create and Configure Basic Pods
Define an application’s resource requirements
Create & consume Secrets
|10%||Multi-Container Pods||Understand Multi-Container Pod design patterns (e .g. ambassador, adapter, sidecar)|
|18%||Observability||Understand LivenessProbes and ReadinessProbes|
Understand container logging
Understand how to monitor applications in Kubernetes
Understand debugging in Kubernetes
|20%||Pod Design||Understand how to use Labels, Selectors, and Annotations|
Understand Deployments and how to perform rolling updates
Understand Deployments and how to perform rollbacks
Understand Jobs and CronJobs
|13%||Services & Networking||Understand Services|
Demonstrate basic understanding of NetworkPolicies
|8%||State Persistence||Understand PersistentVolumeClaims for storage|
What you should know before you start learning
- Basic Linux knowledge. The exam itself is performed in this environment, so it is worth having a basic knowledge of how to navigate through directories, create, edit and delete files or run programs and scripts.
- Ability to edit a file in the console. It’s best to use VIM, which is included in the exam by default. What is a plus for this tool is syntax highlighting, which is very useful when editing YAML files. Here I recommend a course on Udemy (paid): https://www.udemy.com/course/vim-essentials/learn/lecture/14397396?start=0#overview and Youtube video (free) https://www.youtube.com/watch?v=IiwGbcd8S7I&ab_channel=BenAwad. It is also worth configuring Vim properly – more information can be found in the second part of the guide.
- Knowledge of the YAML format. This is the default format for configuration files in Kubernetes. Actually 50% of the working time with K8s is for editing such files.
1. Udemy course
You should start your exam studies with the “Kubernetes Certified Application Developer (CKAD) with Tests” course available on the Udemy platform: https://www.udemy.com/course/certified-kubernetes-application-developer/.
The author of the course is Mumshad Mannambeth, who is able to teach in a very methodical and accessible way. The course itself will guide you through all the topics that appear during the exam. In addition, practical tasks are prepared for each department, which are performed on the KodeKloud platform. Thanks to this, you have the opportunity to check whether you have understood the material well in an environment very similar to the one that will be available in the exam.
2. Game of Pods
After reading and completing the practical tasks several times, it is worth solving the tasks within the course Game of Pods: https://kodekloud.com/courses/game-of-pods/
The course itself is a set of challenges that test practical skills in creating new applications on k8s cluster, solving problems and much more in a fun way. The range of skills needed to solve the tasks is the same as in the CKAD exam (except for one task to fix a non-functioning Node). If you have problems with tasks, it is worth taking a look at my solutions available on the github website: https://github.com/czerniga/game-of-pods
3. CKAD exercises
The next stage of learning can be solving all the tasks available on the github: https://github.com/dgkanatsios/CKAD-exercises.
It is a set of tasks prepared for all aspects of the exam. There are also solutions available for each task, which also allows you to quickly verify whether you understand material well.
The last step should be to run mock tests on the killer.sh platform. As part of the exam, the organizer provides two free trials on this platform.
The killer.sh test consists of 20 tasks that are solved in the browser. During the exam, the portal gives you access to the kubernetes cluster on which to perform the tasks. In some of them you have to create components from scratch. Other tasks usually require modification of existing components.
The test platform provides two test approaches. Importantly, we perform the same tasks in both cases.
The test on killer.sh itself is more difficult than the final exam, but it allows you to quickly check what else we need to learn / repeat before the exam itself. Generally, if you can pass this mock exam, you will most likely pass the CKAD exam as well.
Basic rules of the exam:
- The exam consists of 19 tasks that must be solved within 2 hours
- Each question has a percentage weight. Most of them are valued at a few percent (the lowest was 2%). On my exam, however, there was one task that had a weighting as high as 13%.
- The exam is taken remotely using an online platform in a browser. You will need to install a special browser plugin before starting the exam.
- During the exam, we are watched by the proctor. Therefore, before the exam, you need to clear the place where you taking the exam from all unnecessary things. It is also important that no one enters the room you are in during the exam.
- It is necessary to get 66% of the points to pass.
- Tasks are also scored if they are not completed in full.
- The exam result is sent by e-mail after the exam. Here you have to be patient because it may take up to 36 hours. In my case, it was about 24 hours.
- If you do not pass the exam, you are entitled to a second attempt for free.
- You can have two tabs open during the exam. In one you will have an exam page. On the other hand, you can have the official Kubernetes documentation page open. Opening other pages / tabs is prohibited!
- During the exam, you can use the notebook built into the platform.
- The cost of the exam is $ 375
Here are some tips that should help you during the exam:
- The exam is 100% practical. Therefore, the most important thing is efficient and quick creation of objects in kubernetes. You absolutely must learn to create objects from command line. It will always be faster than copying Yaml from the documentation. It is worth taking a look at https://kubernetes.io/docs/reference/kubectl/cheatsheet/ for examples of commands.
- Due to the fact that the tasks are scored differently, different strategies of solving order can be adopted:
- perform tasks sequentially.
- perform tasks in order from the highest valued to the lowest valued ones
- In case of problems with the task, it is best to skip them. Especially if the task is valued at 2-3 percent. If there is time after completing all the tasks, you can return to them.
- As I wrote above, you have access to the notebook during the exam. It will be useful not only for copying and pasting yaml definitions. It is worth preparing a list of questions with information about which tasks have already been completed, which need to be checked, etc. Thanks to this, you will be able to quickly return to the tasks in which you had problems. My list looked something like this:
1. 4% OK 2. 6% Check 3. 13% No OK .... 19. 7%
- Before starting the exam, it’s a good idea to prepare your work environment. In addition to running an alias for kubectl and turning on auto suggestion, it’s also important to configure Vim properly and use some useful aliases to speed up your work. I used the following commands at the start of the exam. You don’t have to memorize them, just copy them to the clipboard before the exam. After the exam starts, we enter the notebook and paste it there. The proctor should have no problem with that.
sudo -i source <(kubectl completion bash) echo "source <(kubectl completion bash" >> ~/.bashrc alias k=kubectl complete -F __start_kubectl k alias change-ns="kubectl config set-context --current --namespace " alias current-ns="kubectl config view --minify | grep namespace" export d="-oyaml --dry-run=client" alias kap="k apply -f" alias ker="k explain --recursive" alias kgp="k get pods -o wide --show-labels" alias kdp="k describe pod" alias krun="k run tmp --restart=Never --rm --image=nginx:alpine -i -- curl" echo $':set number\n:set et\n:set sw=2 ts=2 sts=2' >> ~/.vimrc
- Each task is given a command to change the context to that appropriate for the task. It is important because 2 or 3 separate clusters are used during the exams. Therefore, always execute this command at the beginning of the task.
- Besides the context, the second most important thing is the right namespace. In most tasks, the namespace will be given in the text (sometimes you have to find it because it is cleverly hidden in the task). If space is not specified explicitly, the task should be done in namespace default. It is very important! Unfortunately, I did not read this rule and as a result I did not pass the exam in the first try (3% was missing .. :)). So remember: always check the context and namespace for the task.
- In about half of the tasks, our task will be to edit existing objects or files. Therefore, it is important to read through to the end of the assignment before taking any step. Some sentences often state explicitly that the data of objects and files cannot be edited.
It is undoubtedly a difficult exam. However, the time spent studying will pay off in the form of a lot of knowledge about kubernetes and basic work with this platform. Therefore, I strongly encourage you to take up this challenge!