I recently passed the CKAD exam: Certified Kubernetes Application Developer, from the Cloud Native Computing Foundation. There are already lots of blog posts with tips on how to pass and how to train so I'll try not to repeat all of that. Here's some random advice that might help you.
Preparation
To prepare for the exam I relied solely on the Udemy course by Mumshad Mannambeth. Literally everything that you need to know for the exam is in there. The course is packed with hands-on practice tests. Since the exam is also fully hands-on, this is essential. Without practice, you'll never finish the exam in time.
Dry-run is your friend
With kubectl
you can run most of the commands with --dry-run=client -o yaml
. This will not change anything in the Kubernetes
cluster but will produce a yaml file that you can then modify locally before applying.
Some examples:
kubectl run redis --image=redis --dry-run=client -o yaml > pod.yaml
kubectl create deploy busybox --dry-run=client -o yaml --image=busybox > deploy.yaml
kubectl expose deployment my-deployment --name=my-service --target-port=8080 --port=8080 --type=NodePort --dry-run=client -o yaml > service.yaml
will respectively produce a valid pod.yaml
, deploy.yaml
or service.yaml
file that you can then modify to your needs.
This works for deployments, services, config maps, jobs, cronjobs, etc. Notable exceptions are persistent volumes and persistent
volume claims. If you need the yaml for those, copy them from the documentation.
Replace pods
In some cases you have to update a running pod. Problem is, the only things you can update with kubectl edit
for pods are
the image
, activeDeadlineSeconds
and tolerations
. There are two ways around this:
Edit anyway
If you use kubectl edit
and try to change any property you're not allowed to change, you'll get an error. But you will
also get a yaml file in your /tmp
folder that actually has the changes you made. You can now run
kubectl replace --force -f /tmp/new-pod.yaml
which will delete the resource (in this case the pod) you're trying to update and apply the new yaml file in its place. Note that
this prevents you from having to do a separate kubectl delete
. This will save you small amounts of time during the exam, you're welcome 😄
Get pod yaml first
You can also get the pod yaml first and then replace the pod:
kubectl get pod my-pod -o yaml > pod.yaml
And then after making your changes, use the kubectl replace
again.
Documentation
There's a limited set of documentation that you can use during the exam. This information is also in the exam instructions but in case you missed that:
Start early
I started my exam 15 minutes before the official time but only really started with the questions 40 minutes(!) later. The exam onboarding experience isn't as nice as it could (should?) be.
A couple of reasons why it took so long:
You have to download and install the PSI Bridge Secure Browser that allows you to access the exam in a secure environment. This takes some time.
The software requires that you shut down all apps that you have running on your laptop. Things like Dropbox, Teams, etc. I happen to be on a Windows laptop and it also required me to shut down a couple of Windows services. Unfortunately, some of these were auto-restarting. It took me quite some time to figure out exactly what services to kill and how to prevent them from restarting. In the end I was left with three services that kept restarting so I had to resort to shutting them down and then do the check for any offending software really quick after that. Far from ideal.
The process of checking the room is very thorough. You have to do a lot of moving around with the webcam to prove there's nothing inside the room that might help you cheat during the exam. Room, ceiling, floor, table, under the table, floor again, nothing is left unchecked.
So take into account that all this might take you some time before you can actually start the exam.
Conclusion
As I said earlier, there's not a lot of value in repeating all the CKAD avice that's already out there on the internet. I hope I added some useful information that helps you pass the exam.