Our Blog
Sharing Our Experiences
- Java project & consultancy
- Cloud Native Development
- AI & IoT
The mail I received after taking the CKAD exam said: “Within 36 hours of your completion of this Exam, a score report will be emailed to you”. Well, I can say, it wasn’t that far off because after 30 hours of impatient waiting I finally received a mail saying that I succeeded. What a relief! In this blog I want to share my experiences. But wait, first things first…
What is CKAD?
CKAD (short for Certified Kubernetes Application Developer) is a program that has been developed by the Cloud Native Computing Foundation (CNCF), in collaboration with The Linux Foundation.
Kubernetes is all over the place so it does make sense to provide training & certification by the 2 organizations that are lead experts in standardizing the Cloud Native landscape. You can say that CKAD certificate is the defacto standard that is widespread and accepted by the industry.
As you might have noticed, CKAD focuses on the use of k8s for Application Developers. There is also another certificate focussing on the management aspect of k8s called: CKA, Certified Kubernetes Administrator which we will describe in another blog post.
Training (LFD259 vs Udemy)
So you decided to go for the certificate, great! There are basically 2 main options to prepare yourself:
- Kubernetes for Developers (LFD259) by the Linux Foundation
- Udemy’s Kubernetes Certified Application Developer (CKAD) by Mumshad Mannambeth
You get a discount if you buy both the LFD259 & the certificate so that’s where I started. Later I also purchased the Udemy training for around 10€, a special promotion which is repeated regularly.
Both are great trainings. In general I would say the LFD259 was more slide based with some introduction movies. The Udemy training is completely video based with notes and is well structured/focused.
In the Udemy training you also get some nice lightning labs & mock exams which really helped a lot in preparation for the certificate.
The LFD259 often gave some more technical insight but not always necessary for the certificate although I found it really interesting. It does require you to set up your own k8s cluster in a (public) cloud provider of your choice. This does require some extra knowledge on for example networking, … in that specific Cloud provider.
In general I would say the Udemy training is a great option. It is cheap, has great content focused on the certificate and the lightning labs are great preparations for the exam. Also you get a free account on KodeKloud to do the exercises, which is really convenient so you don’t have to setup your own k8s cluster like in LFD259.
Exam
Imperative commands
- Learn the imperative kubectl commands to avoid writing the yaml yourself. It saves up a lot of time! (see short list at the end of this article)
- –dry-run -o yaml > output.yaml is your time saver! Although you can search the official k8s docs, it takes time. So try using the imperative commands and output it to a yaml file to get started. Next you can adjust the yaml further according the exercise
- Make sure you memorize the yaml for a pod definition (labels, image, volumes/volumeMounts, environment variables, …), you will encounter it regular so it will save some time
Extra tips
- Yes you will write lots of yaml so, make sure you understand it well/
- Before starting the exercises setup the kubectl alias & autocompletion in the exam environment.
- Read the exercise once. Read it again if you must but if you don’t have clue how to get started or are in doubt, flag the question and continue to the next question. Time is precious!
- Always set the context !! At the top of each exercise is the command you have to execute to set up the right context to work in and execute it, even if the context is the same. Better safe than sorry!
- Be careful that you’re in the correct namespace. When nothing is mentioned it is “default”.
- I used https://kubeyaml.com/ to do some exercises focussed on memorizing yaml.
- The exercises sometimes ask you to inspect or create k8s object in other namespaces. Use the -n option to change: kubectl -n <your-namespace> … .
- Get good at vi! (ex. copy/paste: press v to select, Press d to cut / y to copy, Press p to paste, …)
- Some basic Linux/Docker knowledge.
- Running commands in a container.
- cat & grep command.
- …
Kubectl commands
-
$k get pod|deploy|configmap|...
-
$k get all
-
Get all resources in the current namespace
-
-
$k get pod -o yaml (> my-pod-definition.yaml)
-
Extract the yaml definition to a file
-
Detailed info about a k8s object
-
$k describe pod my-pod (-o yaml)
-
$k describe nodes|configmaps|namespaces (-o yaml)
-
$k describe secrets (-o yaml)
-
It is very useful to learn grep to easily extra info from the detailed description
Ex. retrieve taint information : $k describe pods | grep -i taintImperative
-
Create deployment
-
$k run nginx --image=nginx --replicas=2 ...
-
-
Create pod
-
$k run nginx --image=nginx --restart=Never OR some more settings
-
$k run nginx --image=nginx --restart=Never --port=80 --namespace=myname --env=HOSTNAME=local --labels=bu=finance,env=dev --requests=’cpu=100m,memory=256Mi’ --limits=’cpu=200m,memory=512Mi’
-
-
Create job
-
$k run nginx --image=nginx --restart=OnFailure
-
-
Expose a service
-
$k expose deployment my-deploy --type=NodePort --port=80
-
$k expose pod my-pod --type=NodePort --port=80
-
Using --dry-run -o yaml > output.yaml you avoid creating the object immediately and export it to yaml first that you can then edit and create the object using : k create -f output.yaml