# Official Exam Links & Resources - [Main certification landing page](https://training.linuxfoundation.org/certification/certified-kubernetes-application-developer-ckad/) - [Handbook](https://training.linuxfoundation.org/go/cka-ckad-candidate-handbook) - [Importannt Tips](http://training.linuxfoundation.org/go//Important-Tips-CKA-CKAD) - [CKAD FAQ](http://training.linuxfoundation.org/go/cka-ckad-faq) ## The Exam Itself - [CNCF Training Portal](https://training.cncf.io/portal) - [System Checker](https://www.examslocal.com/ScheduleExam/Home/CompatibilityCheck) # Curriculum - [v1.15 Aug 2019 PDF](https://github.com/cncf/curriculum/blob/master/CKAD_Curriculum_V1.15.0.pdf) - [v1.15 Contents](https://user-images.githubusercontent.com/14982936/72896024-b98fb800-3d16-11ea-9f7e-b919bdef3881.png) # Resources I Used - Exercises. This was 95% of the learning I did. **DO ALL OF THESE. MORE THAN ONCE** Once you can do these (without looking up the answer), you are ready https://github.com/dgkanatsios/CKAD-exercises/ - Very good Medium post https://medium.com/@nassim.kebbani/how-to-beat-kubernetes-ckad-certification-c84bff8d61b1 - Also good Medium post https://medium.com/bb-tutorials-and-thoughts/how-to-pass-the-certified-kubernetes-application-developer-ckad-exam-503e9562d022 - This post explains the web terminal you will use and has other tips https://codeburst.io/the-ckad-browser-terminal-10fab2e8122e - MS Premier person's post, some more insight https://devblogs.microsoft.com/premier-developer/certified-kubernetes-application-developer-ckad-exam-tips/ # Themes & Things To Revise & Focus On - **ConfigMaps** & mounting into containers as volumes - More **ConfigMaps**, seriously it was on about three or four questions, practice all the ways of creating & using a ConfigMap [DOCS LINK](https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/) - Learn to use every variation of `kubectl run` and use with or without the `--dry-run -o yaml` flags, e.g. - `--restart=Never` will create a **Pod** - `--restart=Always` and `--replicas` will create a **Deployment** - `--restart=OnFailure` will create a **Job** - `--restart=OnFailure` and `--schedule` will create a **CronJob** - Pass any commands for the pod/container to run at the end of the command after `--` e.g. `kubectl run webpod --image nginx --restart Never -- sleep 600` - Memorise the `volumeMount` and `volumes` syntax of pod & container spec, you don't have time to look it up, and it comes up a lot - Multi container pods, experiment with deploying this, and sharing a volume using `emptyDir` - Network Policy, `podSelectors` both for ingress/egress rules and applying the policy - PV and PVC, go through creating both and a pod to use the PVC, [DOCS LINK](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) - Surprise! one question required SSH onto a node to create a file for PV of `hostPath` type - Ingresses are not in the exam, nor are CRDs, Helm, etc, only core, non-beta API objects - Editing objects directly with `kubectl edit` ... only do this if you're confident of the change you're making, i.e. It's something mutable and you know the syntax - If you save and it's wrong you're thrown back into the editor. If you're anything less than 99% sure, then export the YAML `kubectl get foobar -o yaml --export > blah.yaml` and edit that - Often the change you are making requires you to delete the object (as it's an immutable field) so `kubectl edit` is never going to work # Bash/Terminal Tips Enable `kubectl` auto complete, very useful and part of the docs so you can copy & paste it https://kubernetes.io/docs/reference/kubectl/cheatsheet/#kubectl-autocomplete Aliases. Shortening `kubectl` to `k` is a HUGE time saver! I used `kn` as a way to change namespaces ``` alias k=kubectl alias kn='kubectl config set-context --current --namespace ' ``` Change editor used by `kubectl edit` ``` export KUBE_EDITOR=nano ``` If a command like delete is taking a while, hit `ctrl+z` to put it to the background and carry on working