Beim genaueren Betrachten zukünftig geplanter Programmfunktionen, die etablierte Konzerne wie bspw. VMware, Microsoft oder Amazon auf den Markt gebracht haben und bringen werden, ist klar: Die IT-Industrie wird in Zukunft sukzessive den Weg von Containerisierungstechnologien gehen. Hauptmerkmal ist der Gewinn von Zeit und Agilität.
Zwischen 2016 und 2018 hat sich Kubernetes als Orchestrierungsplattform für Container durchgesetzt.[1] Diese Erkenntnis hat mich ca. 2017 dazu bewogen, zusätzliche Fähigkeiten zu erlernen. Diese sich im nächsten Schritt von vertrauenswürdigen Instanzen wie der Linux Foundation oder VMware akkreditieren zu lassen, ist dabei der nächstlogische Schritt, um selbstbewusst in die Zukunft blicken zu können.
Mit diesem Artikel möchte ich dem Leser einen Teil meines Weges zur Weiterentwicklung DevOps-Engineer mit dem Schwerpunkt auf Tanzu offenlegen. Es soll das Ziel sein, einen Überblick zu verschaffen, wie und mit wie viel Lernaufwand die „CKA: Certified Kuberneted Administrator“ und „CKAD: Certified Kubernetes Application Developer“ Prüfungen erfolgreich absolviert werden können.
[1] LFS162x von Gourav Shah, Chapter 2. Introduction to DevOps/SRE / DevOps and SRE
Arbeitsaufwand
In welcher Reihenfolge die Prüfungen absolviert werden, ist im Grunde unerheblich. Ich habe zuerst den CKAD abgelegt und 3 Wochen später den CKA. Als Kubernetes-Neuling schätze ich einen Arbeitsaufwand von insgesamt ca. 130 Stunden – für beide Prüfungen. Damit lassen sich respektable Ergebnisse erzielen. Ich selbst habe beide Prüfungen im 1. Anlauf mit 88% und 95% bestanden[1] (mindestens 66%[2] sind notwendig).
[1] https://www.credly.com/users/yannic-philipp-georg-hamann/badges
[2] https://docs.linuxfoundation.org/tc-docs/certification/faq-cka-ckad-cks#what-score-is-needed-to-pass-the-exam
Kosten – Prüfungsbuchung und Lernmaterialien
Die Prüfungskosten betragen jeweils ca. 375 USD. 25% Rabatt-Coupons sind leicht im Internet auffindbar. Wer viel Glück hat, findet sogar einen 50% Coupon. Seit Juni 2021 sind außerdem automatisch zwei kostenlose killer.sh-Prüfungssimulationen enthalten, die die Prüfungssituation sehr realistisch widerspiegeln.
Die offiziellen Vorbereitungskurse LFD259 und LFS258 sind in meinen Augen nicht notwendig, da für erschwingliche ~15 USD exzellente Kurse von Mumshad Mannambeth[1] erhältlich sind. Dort ist das Geld sehr gut investiert, da es zu jedem Kapitel eine hands-on Umgebung mit zahlreichen Aufgaben im Browser gibt. Wie in der echten Prüfung müssen diese auf der Kommandozeile gelöst werden. Die Hürde, sich zum Lernen zu animieren, ist dabei erfreulicherweise sehr niedrig, da die Testumgebung automatisch bereitgestellt wird und kein eigenes k8-Cluster vorausgesetzt wird.
Erwähnenswert ist außerdem, dass die Prüfung im Falle eines Fehlversuchs ein weiteres Mal kostenlos gebucht werden kann. Man hat theoretisch also insgesamt zwei Versuche.
[1] https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/ und https://www.udemy.com/course/certified-kubernetes-application-developer/
Prüfungsablauf
Nach dem Erwerb der Prüfung kann ein Termin über das Portal der Linux Foundation (Weiterleitung zum Testpartner PSI) gebucht werden. Es ist ratsam, alle erforderlichen Schritte, wie das Installieren des Browser-Plugins einige Tage vor Prüfungsbeginn zu erledigen. Die folgende „Exam Preparation Checklist“ im Trainingsportal hilft dabei alle notwendigen Kriterien zu erfüllen. Eine stets aktuelle Liste aller wichtigen Punkte findet sich hier.
Technische Voraussetzungen
- Google Chrome oder Chromium-Engine basierende Browser wie bspw. Edge
- Mikrofon
- Webcam
- Gültiger Personalausweis oder Reisepass
- Zuverlässige Internetverbindung mit ausreichend Upstream, um alle angeschlossenen Bildschirme inkl. Webcam-Video und Audio zu übertragen
Es ist ratsam, eine externe Webcam anzuschließen, da dies den Prozess die unmittelbare Umgebung der Aufsichtsperson zu zeigen ungemein vereinfacht. Es ist jedoch auch zugelassen, die integrierte Webcam im Laptop zu verwenden. Das kann sich aber schnell als Herausforderung gestalten, wenn Tastatur, Maus und andere Kabel angeschlossen sind, und der Laptop um 360° gedreht werden muss bzw. der Bereich unter dem Tisch gezeigt werden soll.
Sonstige Hardwarevoraussetzungen wie CPU oder RAM werden in der bereits zuvor erwähnten „Exam Preperation Checklist“ überprüft.
Prüfungsbeginn, Regeln und Identifikation
Bereits 15 Minuten vor Prüfungsbeginn sollte sich der Prüfling auf die Webseite begeben. In der Regel kann die Prüfung etwas früher gestartet werden als vereinbart. Die gewonnene Zeit kann dann für das Vorgeplänkel der Anmeldung genutzt werden, das je nach Prüfungsaufseher 15 bis 30 Minuten dauern kann. Selbstverständlich stehen unabhängig von der Dauer der Anmeldung immer die vollen zwei Stunden zum Lösen der Aufgaben zur Verfügung.
Die Prüfungsaufsicht wird die Umgebung über die Webcam erfassen, überprüfen, ob Kopfhörer oder Smartwatch getragen werden, die Arbeitsfläche unter die Lupe nehmen und den Ausweis verlangen. Lediglich eine transparente Wasserflasche darf sich auf dem Tisch befinden. Es darf sich keine weitere Person im Raum aufhalten. Der Raum darf nicht über- oder unterbelichtet sein. Die Fragen dürfen nicht laut vorgelesen werden und der Mund darf nicht durch die Hand oder eine Maske verdeckt werden.
Alle Regeln müssen strikt eingehalten werden.
Die Aufsichtsperson ist selbst zu keinem Zeitpunkt sichtbar und gibt alle Anweisungen via Chat. Nachdem die Prüfung gestartet wurde, ist man die nächsten zwei Stunden auf sich allein gestellt, der Prüfungsaufseher tritt dann still in den Hintergrund und meldet sich nur, falls die Regeln nicht eingehalten werden.
Zeitverwaltung
Für beide Prüfungen, CKA und CKAD, hat der Prüfling jeweils zwei Stunden Zeit alle ~20 Fragen zu beantworten. Nicht jede Frage hat die gleiche Gewichtung. Diese schwankt zwischen ungefähr 1% und 10%. Es ist ratsam, Fragen zu überspringen, falls diese nicht sofort gelöst werden können. Da die Fragen nicht vom Typ eines Multiple-Choice Tests sind und vermutlich ein Automatismus prüft, ob die Umgebung bei Abgabe in den gewünschten Zustand gebracht wurde, ist es wichtig schwierige Fragen ggf. zu ignorieren. Letzten Endes bleiben im Durchschnitt nur ca. 6 Minuten Zeit, um eine Frage zu lesen, verstehen und auf der Kommandozeile zu lösen. Der Zeitdruck beim CKAD war deutlich zu spüren, den CKA habe ich als etwas lockerer empfunden und früher abgeben können.
Benutzeroberfläche
Im folgenden Bild ist die Oberfläche der Prüfung zu sehen.
In der Navigationsleiste links kann zwischen den einzelnen Aufgaben navigiert werden.
Der rot umrandete Kasten beinhaltet Informationen, in welchem k8-Cluster die Aufgabe gelöst werden muss. Insgesamt gibt es beim CKA sechs und beim CKAD vier Cluster. Da die Benamung der Cluster trügerisch ist, sollte bei jeder Frage der Befehl, um das Cluster zu wechseln, aus dem Kasten kopiert und ausgeführt werden. Unabhängig davon, ob man sich bereits im richtigen Cluster befindet. Die Clusternamen hk8s und bk8s laden zu vermeidbaren Leichtsinnsfehlern ein. Generell empfiehlt es sich, Image-Namen, Container-Namen und jegliche Benamung anderer Ressourcen zu kopieren und einzufügen, anstatt abzutippen. Ein durch einen Buchstabendreher verursachter Fehler in der Benamung einer Umgebungsvariablen wird keine Punkte einbringen.
Für wenige Aufgaben ist es notwendig, sich via SSH direkt auf den Host bzw. einen k8-Node zu verbinden. Im Anschluss muss auf den Ursprungsserver node-1 zurückgekehrt werden.
Die Tastenkürzel CTRL + C und CTRL + V zum Kopieren und Einfügen sind in der Umgebung nicht möglich. CTRL + Ins und Shift + Ins ersetzen diese für Windows Benutzer.
Das Terminal auf der rechten Seite kann nicht dupliziert werden. Wer dies möchte, muss auf einen Multiplexer wie tmux zurückgreifen. Ich selbst habe dies nicht getan.
Im Gegensatz zu den meisten Empfehlungen aus Artikeln wie auf medium.com o. ä. ist es nicht notwendig, einen alias k für kubectl und die bash-Autovervollständigung einzurichten. Die Umgebung ist standardmäßig so konfiguriert; dies steigert die Geschwindigkeit, um mit dem knappen Zeitfenster zurecht zu kommen.
Es dürfen maximal immer nur zwei Browser-Tabs geöffnet sein. Es ist erlaubt, folgende Domains und deren Subdomains zu besuchen:
- https://helm.sh/docs/
- https://kubernetes.io/docs/home/
- https://github.com/kubernetes/
- https://kubernetes.io/blog/
Ein erlaubtes und äußerst effektives Hilfsmittel ist es, sich im Vorfeld Lesezeichen an die entsprechenden Themenfelder in der Dokumentation zu setzen. Das kann beispielsweise wie folgt aussehen:
Bestanden oder nicht bestanden?
In beiden Fällen wurde mir das Ergebnis 22 Stunden nach Abgabe mitgeteilt.
Vorbereitung
Alle Aufgaben müssen auf der Kommandozeile eines Debian-basierenden Linuxsystems (Ubuntu) gelöst werden. Neben dem Ausführen von imperativen Kommandos wird verlangt Ressource-Dateien zu bearbeiten. Es empfiehlt sich, diese mit vim zu editieren. Die folgende Tabelle zeigt meine Übersicht der wichtigsten Tastenkürzel, um effizienter mit YAML-Dateien umgehen zu können.
dd | Entfernt die aktuelle Zeile |
d$ | Entfernt in der aktuellen Zeile bis zum Zeilenende |
dG | Entfernt die aktuelle Zeile bis zum Dateiende |
d/ | Entfernt in der aktuellen Zeile bis zur Regex |
gg | Bewegt Cursor zur ersten Zeile |
G | Bewegt Cursor zur letzten Zeile |
CTRL + v I A | Visueller Blockmodus, um mehrere Zeilen gleichzeitig zu bearbeiten I für Insert A für Append |
:set number | Zeigt Zeilennummern an |
Für beide Prüfungen ist kein besonderes bash Know-how notwendig. Kenntnisse zur Navigation mit less, tail, den bash Parameter „-c“, die Fähigkeit simple HTTP-Anfragen mit wget/curl auszuführen oder den Paketmanager apt verwenden zu können, reichen aus. Ein CKA sollte außerdem in der Lage sein, mit dem etcd-Cluster zu interagieren und sich mit systemd-Diensten auszukennen.
Basiswissen
Im 1. Schritt sollte der Fokus darauf liegen, das Basiswissen aufzubauen. Dafür sind die jeweiligen Grundkurse geeignet.
Grundkurs | Aufwandsschätzung für Anfänger |
„Kubernetes Certified Application Developer (CKAD) with Tests” von Mumshad Mannambeth | Insg. 39 Stunden: 13 Stunden + ~26 Stunden Nacharbeitung |
Certified Kubernetes Administrator (CKA) with Practice Tests von Mumshad Mannambeth | Insg. 54 Stunden: 18 Stunden + ~36 Stunden Nacharbeitung |
Die Video-Kurse sind mit ansprechenden Animationen und teilweise witzigen Analogien gespickt, die es ermöglichen zügig ein solides Grundverständnis aufzubauen. Dem Autor gelingt es, akzentfrei die Inhalte in einer visuell ansprechenden Art und Weise zu vermitteln. In den gut gegliederten Sektionen werden alle notwendigen Kenntnisse vermittelt, die bereits auf das Curriculum der Linux Foundation zugeschnitten sind. Die Informationen sind dicht gepackt. Es empfiehlt sich, sich zwischen ein bis zwei Stunden pro Tag den Videos zu widmen und ungefähr die doppelte Zeit in die Nacharbeitung des gelernten Stoffes zu investieren. Innerhalb von ein paar Wochen lassen sich so die Kurse inkl. hands-on Aufgaben abschließen. Wer bereits Grundkenntnisse zu Docker oder Kubernetes hat, kann hier, abhängig vom Wissensstand, schneller sein.
Üben, üben, üben
Meiner Recherche nach stammen die hochwertigsten frei verfügbaren Übungsaufgaben aus dem GitHub Repository von dgkanatsios. Diese können entweder im eigenen Cluster oder Online auf einer kostenfreien Spielweise wie bspw. jener von katacoda.com gelöst werden.
Für den CKA gibt es meiner Meinung nach kein vergleichbar gutes Pendant. Ich empfehle mit Virtual Box ein eigenes Cluster via kubeadm zu erstellen. So lassen sich am besten „Brot und Butter“-Aufgaben, wie das Installieren, Aktualisieren, Sichern und Wiederherstellen trainieren.
Spätestens an dieser Stelle empfiehlt es sich, Lesezeichen, die auf die offiziellen k8-Dokumentation verweisen, anzulegen. Eine Liste meiner persönlich erstellten Unterlagen inkl. Lesezeichen findet sich weiter unten.
Eine weitere erstklassige Quelle sind die Blog-Serien von Kim Wüstkamp, dem Ersteller von killer.sh. Insgesamt gibt es dort eine überschaubare Anzahl von Aufgaben mit detaillierter Lösungsbeschreibung.
Zwischenstand: Wo stehe ich?
Ein Großteil der bearbeiteten Aufgaben muss gegen Ende problemlos lösbar sein. Die Kommandos sollten reflexartig mit einer gewissen Leichtigkeit abgerufen werden können. Die knapp bemessene Bearbeitungszeit erfordert dies. Lesezeichen der Dokumentation sollten während der Prüfung in der Regel nur dann verwendet werden, um sich Teile der deklarativen Beschreibung einer Ressource in die Zwischenablage zu kopieren. Einen schnelleren Weg, um bspw. eine „NetworkPolicy“ anzulegen, gibt es nicht.
Dem Drang, Erfahrungsberichte auf YouTube anzuschauen, sollte man widerstehen. Diese werden nicht zum Erfolg beitragen, die Zeit ist besser in die konkrete Vorbereitung investiert.
Die Feuertaufe beginnt mit killer.sh. Dort können zwei Testläufe gestartet werden, auf die innerhalb von 36 Stunden zugegriffen werden kann. Ein Testlauf sollte so prüfungsnah wie möglich angegangen werden und ist die Generalprobe, bevor es ernst wird. Der berechnete Gesamtpunktestand von killer.sh spiegelt nicht unbedingt den von der Linux Foundation geforderten Wissensstand wider und die Aufgaben sind bewusst etwas schwerer angelegt als die eigentliche Prüfung.
Fazit
Der CKA und CKAD sind beide im Kontrast zum traditionellen Multiple-Choice Tests anspruchsvollere Prüfungen, die aber unabhängig vom Wissensstand mit einem überschaubaren Lernaufwand zu meistern sind. Eine Fülle an Lehrmaterialien und gezielten Kursvorbereitungen erleichtert im Vergleich zu anderen hands-on Examen, wie bspw. dem LFCS (Linux Foundation Certified System Administrator), den Weg zur Zertifizierung.
Das Erfolgserlebnis, eine hands-on Prüfung bestanden zu haben, ist im Vergleich zu einem traditionellen Multiple-Choice Test deutlich größer. Es fällt leicht, das Gelernte im Arbeitsalltag anzuwenden. Der dadurch resultierende Motivationsschub schlägt sich positiv nieder – es macht einfach Spaß mit Kubernetes zu arbeiten.
Meine Lesezeichen und handschriftlichen Unterlagen
Ein Archiv mit einem Teil meiner persönlichen Lernunterlagen zum CKAD sowie meinen Lesezeichen zum CKAD und CKA finden sich hier.
Eine Untergliederung der anzufertigen Unterlagen nach den gefragten Domänen und Kompetenzen ist von Vorteil, mir persönlich ist dies jedoch nur beim CKAD in einer repräsentablen Form gelungen.
Bookmarks bar
- Index
- API Reference
- kubectl CLI (Reference)
CKAD
- API Reference
- k Cheat Sheet
- Capabilities
- ConfigMaps
- CronJob
- Deployments
- Deployments (change cause)
- Env + Secret Volume Mount
- Ingress
- Jobs + bash to list pod names
- JSONPath (Range)
- Limit Range
- Liveness, Readiness and Startup Probes
- Network Policy
- Node Selector / Affinity
- PersistentVolume + PVC
- Requests and Limitiations Resources (Container)
- ReplicaSet
- Resource Quotas
- ResourceQuota (only by namespace)
- Security Context (runAsUser)
- Service Accounts
- Storage Classes
- Taints and Tolerations
- Capabilities
CKA
- Affinity Anti-Affinity
- Authorization Checking API Access
- Certificate Management with kubeadm (expiration)
- Configure Multiple Schedulers
- Create User CSR & Sign
- Curl Cluster Resources
- DaemonSet
- Environment Variables from Manifest Fields
- etcd Backund and Restore
- HorizontalPodAutoscaler
- imagePullSecrets (login to private docker registry)
Installing a Cluster (kubeadm)
- Authorization Checking API Access
- PriorityClass (Pod Priority)
- Proxying API Server to localhost
- RBAC
- RBAC (imperative)
- RBAC (subjects)
- Remove a Node from the Cluster
- Specifying a Disruption Budget
- Update Deployment with –record
- Upgrading kubeadm clusters
- QoS Classes
- Proxying API Server to localhost
- Sign in to exam
Recent Comments