Як підготуватись до іспиту Certified Kubernetes Application Developer (CKAD)

Усі статті, обговорення, новини про DevOps — в одному місці. Підписуйтеся на DOU | DevOps!

Вітаю! Мене звати Журавель Роман, я — Backend Developer в продуктовій компанії OpenTag. Всі наші бекенд сервіси «крутяться» в Kubernetes. Тому майже кожен день я маю справу з K8s Deployments, Pods, Services та іншими абстракціями Kubernetes.

Маючи вже певний досвід роботи з Kubernetes, я вирішив розширити та структурувати свої знання. Ця мета і привела мене до CKAD Certification.

Certified Kubernetes Application Developer

Базові поняття

(CKAD) — це сертифікат, який видається Cloud Native Computing Foundation (CNCF) тим, хто успішно проходить тестування та демонструє знання Kubernetes. Ця сертифікація є важливою для розробників та інженерів, які працюють з Kubernetes та бажають продемонструвати свої навички та знання на ринку праці.

Отже, для проходження сертифікації CKAD потрібно мати глибокі знання Kubernetes, включаючи управління контейнерами, створення та налаштування Deployments, Services та ConfigMaps, роботу з імперативним та декларативним підходами до керування Kubernetes, знання команд та інструментів для роботи з Kubernetes API, а також знання з питань безпеки та моніторингу додатків на Kubernetes.

Виглядає як щось складне, але насправді це не так. Хочу зазначити, що CKAD — це практичний екзамен. Тобто на екзамені немає тестів на кшталт шкільного ЗНО з варіантами відповідей. Натомість у вас будуть завдання, які потрібно виконати на Kubernetes кластері в межах двох годин. Тобто якщо ви маєте практичний досвід роботи з Kubernetes — ви майже готові 🙂.

Знання та навички

А зараз я розповім, що саме потрібно знати та вміти, щоб успішно пройти іспит Certified Kubernetes Application Developer. Як би це банально не звучало, але базові навички роботи з Linux терміналом повинні бути у кожного.

vim наше все :)

Під час іспиту вам доведеться редагувати багато YAML-файлів. На Kubernetes кластері, з яким ви будете працювати, буде встановлений текстовий редактор VIM. Тому потрібно мати базові навички роботи з ним.

Базовий приклад створення/ редагування файла за допомогою редактора vim
  • відкрити файл vim file.txt;
  • перейти в режим внесення даних (-- INSERT --) - натиснути клавішу «I»;
  • редагуємо вміст файлу;
  • натискаємо клавішу «Esc», щоб завершити редагування;
  • зберігаємо файл і виходимо з редактора — натискаємо клавішу «:» + «wq».

Images, Containers

Одним із завдань на іспиті буде робота з контейнерами. Тому Ви повинні вміти білдити контейнери, навішувати теги, пушити в репозиторій і т.д.. І є один нюанс...це потрібно робити як за допомогою docker, так і за допомогою podman. Якщо ви не знайомі з podman — нічого страшного. Консольна утиліта podman має майже ідентичне api відносно docker.

$ podman build -t vieux/apache:2.0 .
$ docker build -t vieux/apache:2.0 .

kubectl

А тепер до самого цікавого :) Два основних способи взаємодії з Kubernetes API для створення та управління додатками — це імперативний і декларативний підходи до керування Kubernetes.

Імперативний підхід передбачає виконання конкретних команд у терміналі або використання API, щоб напряму вказати Kubernetes, що треба зробити. Наприклад, ви можете створити деплоймент за допомогою команди:

$ kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1

додати сервіс за допомогою команди kubectl expose:

$ kubectl expose service nginx --port=443 --target-port=8443 --name=nginx-https

або змінити кількість реплік деплойменту за допомогою команди kubectl scale:

$ kubectl scale --replicas=3 rc/foo

Імперативний підхід дуже простий та швидкий, але не надто гнучкий і потенційно може призвести до проблем з сумісністю та версіями.

Рис. 1

Декларативний підхід передбачає використання YAML-файлів (приклад рис. 1), які містять опис стану застосунку та його компонентів. У цьому підході ви не вказуєте Kubernetes, що треба зробити, а вказуєте, який стан застосунку має бути відтворений. Kubernetes автоматично порівнює стан застосунку, описаний в YAML-файлі, з актуальним станом кластера та забезпечує збіг. Наприклад, ви можете створити деплоймент за допомогою YAML-файлу, що містить опис реплік та контейнера, або створити сервіс за допомогою YAML-файлу, що містить опис порту та відповідних підмереж.

Декларативний підхід дозволяє зберігати та контролювати стан застосунку за допомогою коду та забезпечує більшу гнучкість та масштабованість.

Для успішного виконання завдань на екзамені потрібно впевнено працювати з kubectl.

Вбудована в kubectl документація (опція — help) містить розділ Examples, який може вам допомогти швидко створювати базові абстракції Kubernetes.

А надзвичайно корисні опції --dry-run (дає змогу виконати команду «в холосту») та -o (формат виводу) дозволять вам швидко створювати YAML-файли з описом ваших деплойментів, сервісів і т.д. Далі я покажу, як використовувати цю хитрість на прикладі створення ConfigMap.

Для початку скористаємось документацією kubectl

$ kubectl create configmap --help

Знайдіть приклад, який нам підходить, та відредагуйте його так, щоб результатом виконання команди був YAML-файл:

$ kubectl create configmap my-config --from-literal=RUS=ні --from-literal=PEACE=да --dry-run=client -o yaml > my-cm.yaml

Команда з прикладу вище, форматує свій output в yaml та перенаправляє в файл my-cm.yaml.

Щоб застосувати yaml файл до Kubernetes кластера потрібно використати команду apply

$ kubectl apply -f my-cm.yaml

Для успішного проходження сертифікації важливо розуміти структуру Kubernetes YAML-файлів. Тому що при виконанні завдань їх доведеться як створювати, так і редагувати.

Також важливою навичкою є вміння працювати з командами kubectl describe та kubectl get. Це інструменти, які дозволяють отримати детальну інформацію про ресурси Kubernetes, такі як поди, служби, реплікаційні контролери тощо. Вони дозволяють перевірити стан ресурсів, їх конфігурацію та статус, а також надають важливі метадані, такі як IP-адреси, поточний стан, обмеження ресурсів та іншу інформацію, яка допомагає адміністраторам і розробникам зрозуміти, як працюють їх додатки в кластері Kubernetes. Ось для прикладу команда, яка виведе на екран статус пода:

$ kubectl get pods nginx-689d6856cb-kv4jc -o=jsonpath='{.status.phase}{"\n"}'

Також на екзамені можуть бути питання стосовно менеджера пакетів helm. І хоча великої уваги йому не приділяють, все ж базове розуміння потрібне.

Організаційні моменти

При реєстрації на екзамен обов’язково спілкуватися з ботом в чаті. Він вам надасть персональну знижку :)

Після оплати у вас з’явиться можливість користуватись сервісом Killer Shell. Не ігноруйте — пройдіть тестові завдання. Вони не супер схожі на ті, що будуть в реальному екзамені, але все ж трішки вас підготують.

В день екзамену приділіть увагу місцю, де ви будете проходити його. В кімнаті крім вас не повинно бути нікого (ви повинні будете це довести). На столі повинен бути тільки ваш комп’ютер. Блокноти, книжки, чашки, ручки і т.д. — все забороняється. І під столом теж :)

Зі сторонніх предметів дозволяється пляшечка води без етикетки. Також Ви повинні будете продемонструвати ваш телефон.

Ну, і наприкінці бажаю всім міцного здоров’я та успіхів. Як сказав один відомий українець: «Борітеся — поборете!»

👍ПодобаєтьсяСподобалось13
До обраногоВ обраному6
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Порада всім хто збирається складати, курс на Юдемі, і моніторте акції в кібер понеділок взагалі до 50% дісконт

Порекомендую ось цей курс
www.udemy.com/...​es-application-developer
На кожну тему вони дають практичні завдання у своїй пісочниці, що дуже допомагає попрактикуватись і краще засвоїти теми

Від нього хоч комусь толк є?

Компанія що має 3 СКА має акредитацію партнера

Скад легше але нічого не дає

А такивнколи показник намкільки ти можеш нудити той екзамен.

Я готувався

Переплктав дату, прийшов уинеділю замість суботи.
Забив

Є. Коли бубернетес для девелопера перестає виглядати як чорна магія це непогано так покращує якість життя як девелопера так і девопса. Перестають задаватись питання чому тут були 503 при деплої і тд. А підготовка до цієї сертифікації гарно розставляє знання по поличках.

У мене є девелопери для яких ефімерний диск д у ажур віртуалки це відкриття

Так розробники з бубернетеса по факту єдине, що мають знати, це як підключитись до контейнера в поді через kubectl, решта не їх зона відповідальності і якщо там щось було тимчасово недоступне, то питання до деплоймент процесів, котрі десь структуровано описують девопси.

Ага, так-так. А healthcheck endpoints з graceful termination писати за них будуть девопси. Бо бубернетеси то складно, хай девопси розбираються. Ну і будем ставити request=100Mi і limit=100Gi для всіх подів. Для надійності. А ще будем бігати до девопсів хай вони нам читають логи!

Перше це вимоги до процесу розробки, які спускає зверху техлід після узгодження з вами, а якщо нема техліда, то самі говорите, як треба. Тут проблем не бачу.

Розробник за ресурси не відповідає, то ви з техлідом чи інжінірінг менеджером вирішуєте.

Ну ок, ще логи можна через kubectl глянути :)

От я б замість оце писать, час свій витрачають, таки почитав би про шо той CKAD взагалі. Дякую.

Це точно краще всіх клауд есеншал сертифікатів для не технічного персоналу

vim наше все :)

Не все
Мало ооготна новій екзамен платформі він псує табуляцію.

Треба або конфіг фіксити або нано прописувати як дефолтний редактор

Підписатись на коментарі