Introduction

J'ai récemment obtenu la CKAD (Certified Kubernetes Application Developer) au mois de juin 2021, c'est pourquoi je voulais vous faire quelques retours sur cette certification que j'ai trouvé très réussite de par l'aspect pratique sous forme de "Labs" qu'elle met en avant plutôt que le format QCM.

Mes différents retours et conseils se portent sur la version 1.20 de Kubernetes, celle avec laquelle je me suis entrainé pour réussir ma certification.

Le but de cet article n'est pas d'énumérer ce que vous pouvez retrouver dans la documentation officielle en ce qui concerne l'examen mais de donner mon point de vue quant à la manière dont j'ai appréhendé le passage de la certification.

Les différents domaines abordés

Vous trouverez ci-dessous la liste de domaines qui couvre la certification avec le "poids" associé aux différents chapitres :

  • Core Concepts (13%) : Création de Pod ;
  • Configuration (18%) : Création de configmap, association de pod avec un security context, création de pod avec la mise en place de limits et de requests (CPU et RAM), gestion des secrets ainsi que la création de service account ;
  • Multi-Container Pods (10%) : Création de plusieurs conteneurs au sein d'un même Pod ;
  • Observability (18%) : Utilisation des liveness et readiness probes avec une partie concernant les logs et le debug ;
  • Pod Design (20%) : Création de pod avec des labels et annotations, configuration de deployments, jobs et cronjobs ;
  • Services & Networking (13%) : Configuration de services et de network policy ;
  • State Persistence (8%) : Création de volumes et gestion de la persistence des données.

Cela fait beaucoup de thèmes a comprendre et maîtriser, c'est pourquoi je vous encourage de commencer par apprendre les commandes impératives kubectl avec ce dépôt de code CKAD-exercises qui vous permettra de manipuler l'ensemble des concepts ci-dessus et d'être à l'aise avec lors de la génération de configurations.

Tous les objets Kubernetes ne peuvent pas être générés (par exemple le PersistentVolumeClaim), c'est pourquoi la partie "Apprendre à utiliser la documentation" vous permettra de récupérer les bouts de code dont vous avez besoin lors de l'examen.

Pour réaliser ces exercices, je vous recommande l'utilisation de kind pour avoir votre cluster Kubernetes dans Docker sur votre poste de développement.

On passe maintenant aux liens utiles pour préparer sereinement votre certification.

Liens et ressources utilisées

Voici une liste non exhaustive des différents liens et ressources que j'ai pu utiliser avant de passer l'examen final :

  • CKAD exercises : Exercices gratuits sur l'ensemble des concepts de la CKAD (comme dit plus haut) qui permet de s'entrainer à manipuler les commandes kubectl ;
  • CKAD Practice Challenge : Simulateur gratuit qui permet d'obtenir un avant-goût de l'examen, les exercices sont assez proches de ce que vous aller pouvoir retrouver dans la CKAD ;
  • killer.sh : Un simulateur payant mais qui permet de se faire une idée sur le niveau attendu lors du passage de la CKAD, ce simulateur est caractérisé comme plus dur que l'examen final, et, est certainement la meilleure façon de s'entrainer pour être prêt. Enfin, si vous achetez la CKAD, vous avez le droit à 2 sessions de simulateur killer.sh.

Je pense qu'il est important de se tester avec un simulateur avant de passer l'examen quel que soit votre niveau, cela permet d'apprendre à gérer votre temps et d'avoir des exercices semblables à ce que vous pouvez retrouver lors du CKAD.

N'hésitez pas à retravailler les domaines dans lesquels vous n'avez pas eu tous les points afin de retenter lors d'un deuxième essai.

La suite concerne mes conseils et ce qui m'a semblé utile pour réussir sans souci cette certification.

Mes conseils

En général

La CKAD est une épreuve qui peut se révéler assez difficile si vous n'êtes pas correctement préparé. En effet, la vraie difficulté de l'examen est la gestion du temps. Vous disposerez de 2 heures pour réaliser 19 exercices qui ont tous une difficulté, un temps de réalisation et un poids (valeur de la question) différent.

Avec le stress lors du passage, 2 heures vous sembleront peu ou juste ce qu'il faut pour compléter l'examen et revenir sur 2 ou 3 questions que vous n'avez pas réussies.

Avant de réaliser l'examen, j'ai lu un certain nombre d'articles qui conseillent de privilégier les questions ayant des poids élevés et passer ceux ayant des poids plus faibles. Je n'ai pas utilisé cette technique et j'ai plutôt complété l'ensemble des questions que j'étais en mesure de terminer rapidement pour revenir sur les domaines que je jugeais plus difficiles.

De plus, si vous voyez que vous n'arrivez pas à résoudre un exercice, passez-le et revenez dessus plus tard au risque de ne pas pouvoir compléter l'examen dans son intégralité.

Apprendre à utiliser la documentation

Lors de l'examen, vous aurez à disposition un navigateur web où le premier onglet sera le simulateur avec sur la gauche un volet pour les questions et les réalisations à effectuer et sur la droite votre terminal pour exécuter vos commandes sur le shell. Vous aurez le droit d'utiliser un second onglet pour la documentation (https://github.com/kubernetes ou https://kubernetes.io/fr/docs/home/).

Il est important de connaître des mots-clés pour tomber sur les "bonnes pages" qui vous permettront de résoudre les exercices.

Par exemple, dans le cas où l'on vous demande de créer un PersistentVolume et un PersistentVolumeClaim et que vous utilisez comme mots-clés : "persistent volume" vous ne tomberez pas sur des extraits de code faciles à réutiliser pour réaliser votre exercice. En revanche, les mots "persistent volume pod" redirigent vers un premier lien qui montrent l'ensemble des étapes pour créer un PersistentVolume, un PersistentVolumeClaim ainsi que pour lier ce dernier à un Pod. C'est quand même beaucoup plus facile non ?

C'est pourquoi lors de vos entrainements, je vous recommande de sélectionner les pages de la documentation qui vous avez utilisé et essayez de retenir les mots-clés pour y parvenir rapidement.

La ligne de commande

Lors de la réalisation des exercices, vous aurez besoin de manipuler encore et encore l'outil kubectl, c'est pourquoi il est préférable de définir un alias shell pour aller encore plus vite lors de la réalisation de vos commandes impératives :

alias k=kubectl

Vous pouvez utiliser l'auto-complétion en suivant ce lien ou en recherchant "shell completion" dans la recherche de kubernetes.io/docs.

Pour éditer vos fichiers, vous disposerez de vim, il est donc préférable de connaitre les commandes de bases de cet éditeur pour être efficient.

Je vous conseille de regarder cette documentation.

Sinon voici ce que j'ai utilisé :

# et : pour "expandtab" afin de remplacer la tabulation par des espaces
# ts=2 : pour "tabstop" qui vient ajouter deux espaces pour chaque appui de la touche tabulation
set et ts=2

Utilisation du bloc note

Au cours de l'examen vous pouvez afficher un bloc note qui vous suivra durant toute votre session. Vous pouvez y noter l'ensemble des commandes que vous souhaiter ou des bouts de code bien pratique à utiliser.

Par exemple, vous pouvez y stocker la commande qui vous permet de changer de namespace pour ne pas avoir à utiliser -n lenamespace si l'objectif de l'exercice est de créer des objets dans un namespace particulier :

kubectl config set-context --current --namespace=<votre namespace>

Je rajouterai aussi que dans exercice, s'il n'y a aucun namespace de précisé, c'est celui par défaut (default) qu'il faut utiliser.

On peut y ajouter aussi :

--dry-run=client -o yaml

pour générer le squelette d'un objet Kubernetes

ou

--force --grace-period=0

pour supprimer ou remplacer un Pod

Vous pouvez aussi utiliser des alias shell plutôt que de venir copier/coller ces extraits.

Conclusion

Comme dit plus haut, le CKAD est une épreuve de temps, si vous êtes préparés et que vous maîtrisez les commandes à base de kubectl sur les différents domaines de l'examen, vous ne devriez pas avoir de problème à le passer et à obtenir.

J'espère que mes différents retours vous aideront lors de la réalisation de l'examen !

Bon courage à celles et ceux qui veulent passer cette certification. :)