Na co zwrócić uwagę podczas przygotowań do egzaminu CKAD
W tym poście podzielę się swoim doświadczeniem. Opiszę swoje spostrzeżenia i uwagi podczas przygotowywania się go egzaminu, jak i po jego zdaniu. Myślę że pomoże Wam to przygotować się lepiej do egzaminu.
Moje doświadczenia z egzaminami
Kilka lat temu zdawałem egzaminy z RedHata, które były czysto praktyczne i wymagały biegłości w używaniu konsoli i dokumentacji, polecenia "man". Następnie dokształcając się z chmury AWS, chciałem zdobywać certyfikaty z tej chmury. Okazało się to być dużym wyzwaniem ponieważ były one czysto teoretyczne i nie zawsze korelowało to z praktyką, którą się nauczyłem. Teraz są one znacznie lepiej dopracowane.
Gdzie mogę zrobić próbny egzamin i skąd czerpać wiedze?
Polecaną platformą jest: killer.sh – to platforma która oferuje symulacje egzaminu CKAD. Po zakupie certyfikatu dostajecie dwie symulacje egzaminacyjne. Są one bardzo przydatne. Można podszkolić efektywne zarządzanie czasem i korzystanie z dokumentacji Kubernetes. Środowisko na egzaminie jak i sposób użycia będzie dość podobny.
Egzamin CKAD jest praktycznym egzaminem certyfikacyjnym, który sprawdza umiejętności pracy z Kubernetesem w środowisku terminalowym. Wymaga biegłości w używaniu polecenia kubectl i nie mamy tutaj za dużo czasu na zastanawianie się. Przerobiłem obie symulacje tego egzaminu ale w znacznie dłuższym czasie. Podchodząc do tego na spokojnie, żeby zdążyć w ciągu dnia.
Zanim zrobiłem pierwszą symulację przeszedłem przez ćwiczenia z GitHub. Uczestniczyłem również w kilku projektach związanych ze stawianiem platformy EKS, wdrażaniem aplikacji jak i używaniem narzędzi takich jak kubectl, helm, docker itp.
Przejdziemy do moich spostrzeżeń, wniosków i na co wypadałoby zwrócić uwagę aby zdać ten egzamin.
Narzędzia jakie wykorzystywa łem
Przygotowując się do tego egzaminu starałem się wykorzystywać:
- Narzędzia AI: Takie jak ChatGPT czy Perplexity. Były pomocne przy szybkim sprawdzeniu definicji czy podstawowych przykładów użycia, ale trzeba pamiętać, że mogą nie uwzględniać najnowszych rozwiązań.
- Środowisko WSL2 i Docker Desktop - w trakcie nauki używałem tych środowisk
Co istotne, narzędzia AI mogą nie mieć aktualnych informacji i często podpowiadają przestarzałe rozwiązania, a przynajmniej było tak w moim przypadku. Przykładowo chciałem stworzyć sidecar kontener dla obsługi logów. Tutaj z ciekawości chciałem zobaczyć co podpowie mi ChatGPT.
Odpowiedź jaką dostałem:
apiVersion: v1
kind: Pod
metadata:
name: sidecar-example
spec:
containers:
# Główny kontener aplikacji
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
volumeMounts:
- name: shared-logs
mountPath: /var/log/nginx
# Sidecar kontener do obsługi logów
- name: log-collector
image: busybox:latest
command: ["/bin/sh", "-c", "tail -f /var/log/nginx/access.log"]
volumeMounts:
- name: shared-logs
mountPath: /var/log/nginx
volumes:
- name: shared-logs
emptyDir: {}
Natomiast przeglądając dokumentację, wpisując w wyszukiwark ę słowo "sidecar" możemy znaleźć informacje że powinniśmy bardziej używać "initContainers", zamiast tworzyć w "containers". InitContainers gwarantuje nam że zostanie on uruchomiony przed główną aplikacją, co ułatwia nam sprawę zarządzania kontenerami sidecar.
Istotne wskazówki na które warto zwrócić uwagę:
1. Biegłość w obsłudze dokumentacji
Egzamin jest nastawiony na praktyczne zadania wykonywane w środowisku terminalowym. Liczy się przede wszystkim biegłość w używaniu polecenia kubectl
oraz innych narzędzi, takich jak helm
i docker
(lub podman
).
Czas jest ograniczony, dlatego opanowanie szybkiego wyszukiwania w dokumentacji Kubernetes (zarówno z poziomu CLI, np. kubectl explain
, jak i przez oficjalną stronę) jest kluczowe.
Dobrze jest zapoznać się ze strukturą dokumentacji kubernetes i wyszukiwarki używać w ostateczności.
2. Biegłość w obsłudze i znajomości narzędzia VIM do edycji tekstu.
GW czasie egzaminu przyda Ci się co najmniej podstawowa znajomość VIM-a: jak zaznaczać wiele linii, ustawiać wcięcia, usuwać fragmenty czy całe linie. Im sprawniej to opanujesz, tym mniej czasu stracisz na formatowanie manifestów YAML.
Przede wszystkim należy zapoznać się z wymaganiami egzaminu CKAD
Przed przystąpieniem do nauki koniecznie przeczytaj oficjalne wymagania egzaminu. Znajdziesz tam zakres tematów, którymi warto się kierować w trakcie powtórek.
Automatyczne generowanie manifestów wszędzie gdzie jest to możliwe
Doskonałym nawykiem jest korzystanie z opcji --dry-run=client -o yaml
, by generować wstępny szablon obiektów w Kubernetes. Dzięki temu szybko zbudujesz bazowy plik YAML, który następnie możesz dostosować do konkretnych wymagań. Oto przykładowe polecenia:
kubectl create deployment my-dep --image=busybox \
-o yaml --dry-run=client > deploy-example.yaml
kubectl create job echo-job --image=busybox \
--dry-run=client -o yaml -- echo "Hello CKAD"
Moje przygotowania do egzaminu i podstawowe rzeczy na które potrzebowałem zwrócić uwagę
- Uzupełnianie poleceń (completion):
Lubię jak narzędzie podpowiada mi dalszy ciąg polecenia jakie jest dostępne lub wszystkie możliwe wybory. Wtedy łatwo jest się domyśleć jakiego polecenia użyć. Dlatego w pierwszej kolejność muszę mieć integracja bash-a ze wszystkimi komendami jakie będę używał. Głównie kubectl i helm.
Gdyby okazało się że nie jest to dostępne na środowisku egzaminacyjnym to przykładowo muszę wykonać:
source <(kubectl completion bash)
source <(helm completion bash)
Za każdym razem jak siadam do nauki, to wykonuje te polecenia żeby weszły mi w nawyk. Później tylko klikam "Tab" i mam podpowiedzi zamiast używać polecenia help.
- Konfiguracja VIM-a:
Pracując z narzędziem do edycji tekstu VIM, dobrze jest umieć zarządzać wcięciami.
Natomiast to co będzie irytujące przy ustawianiu konfiguracji dla VIM, to że skaczemy między różnymi instancjami gdzie odpalamy polecania i za każdym razem będziemy musieli to ustawiać. Na szczęście na egzaminie nie było takiej konieczności 😊
- Symulacje egzaminu w killer.sh:
Wykorzystanie killer.sh jako podstawowe narzędzie do przetestowania wiedzy, symulacji i czasu jaki potrzebuje na zadnie egzaminu.
- Pomoc w ramach
help
iexplain
:
Mimo wszystko wiem że będę musiał wykorzystywać help z kubectl, bez tego trzeba uczyć się wszystkiego na pamięć. Dlatego ważne jest poćwiczyć wyszukiwanie informacji.
Przykładowo jeśli nie pamiętam jak utworzyć config mapę to wykonuje polecenie:
kubectl create configmap -h
na samym dole mam przykład który od razu podpowiada mi jaka jest składnia.
Bardzo użyteczne też jest polecenie "kubectl explain" Przykładowo kiedy potrzebowałem jakiegoś parametru którego kojarzyłem nazwę lub mogła być ona skojarzona z zadaniem to wykorzystałem tego typy polecenie:
kubectl explain pods.spec | grep containers | sed '/^ /d'
kubectl explain pods.spec.containers | grep volume | sed '/^ /d'
Podsumowując moje uwagi po egzaminie
-
Rozdzielczość ekranu:
Zdawałem na laptopie 14", co było lekko niewygodne. Jeśli to możliwe, polecam 15" lub większy monitor. -
Stabilność środowiska:
Egzamin był płynny, jedynie sporadycznie zdarzały się sekundowe opóźnienia. Nie wpływały one znacząco na pracę, ale warto być na to przygotowanym. -
Konfiguracja VIM-a i autouzupełnianie kubectl:
Byłem mile zaskoczony, bo środowisko egzaminacyjne oferowało podpowiedzi dlakubectl
, a także sensowne wcięcia w VIM. Dzięki temu nie traciłem czasu na dodatkowe konfiguracje. -
Korzystanie z dokumentacji:
Naprzemiennie używałem oficjalnych materiałów Kubernetesa i poleceniakubectl explain
. Wybór zależał od konkretnego przypadku – czasem szybciej było coś sprawdzić online, innym razem lokalnie w terminalu. W zależności co było dla mnie bardziej wygodne. Czy szukałem jakiegoś manifestu czy bardziej pojedynczego parametru. -
NetworkPolicy:
Dużo czasu spaliłem na zadaniach związanych z NetworkPolicy. Przygotowywałem się na Docker Desktop, który domyślnie nie obsługuje NetworkPolicy. A że nie chciałem tracić za dużo czasu na konfigurowanie, to sobie darowałem (wydawało się proste) i nie skupiałem się aż tak na tym. Teraz wiem że to był błąd. Natomiast warto poświecić czas i poćwiczyć. -
Trudność zadań:
Rozwiązując zadania na killer.sh i porównując je z tymi na egzaminie, to na egzaminie wydają się być krótsze i łatwiejsze. Także jak ktoś przejdzie przez dwie symulacje na killer.sh z dobrym wynikiem, to nie powinien się martwić zdaniem tego egzaminu CKAD. -
Praca z Namespaces:
Należy zwracać dużą uwagę na Namespaces gdzie wykonujemy komendy. Dlatego warto ustawiać namespace od razu po komendzie kubectl. Przykładowo:kubectl -n develop
Następnie kontynuować polecenie. Wtedy o tym nie zapomnimy.
Przydatne linki, materiały
- killer.sh – platforma z symulacjami egzaminów
- CKAD Exercises (GitHub)
- Certified Kubernetes Application Developer (CKAD)
- Oficjalna dokumentacja Kubernetes
Mam nadzieję, że moje wskazówki pomogą Ci w efektywnych przygotowaniach do egzaminu CKAD. Powodzenia w nauce i do zobaczenia w świecie Kubernetes! 🎉