Як підготуватись до іспиту Certified Kubernetes Application Developer (CKAD)
Усі статті, обговорення, новини про DevOps — в одному місці. Підписуйтеся на DOU | DevOps!
Вітаю! Мене звати Журавель Роман, я — Backend Developer в продуктовій компанії OpenTag. Всі наші бекенд сервіси «крутяться» в Kubernetes. Тому майже кожен день я маю справу з K8s Deployments, Pods, Services та іншими абстракціями Kubernetes.
Маючи вже певний досвід роботи з Kubernetes, я вирішив розширити та структурувати свої знання. Ця мета і привела мене до CKAD Certification.
Базові поняття
(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 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
Імперативний підхід дуже простий та швидкий, але не надто гнучкий і потенційно може призвести до проблем з сумісністю та версіями.
Декларативний підхід передбачає використання 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. Не ігноруйте — пройдіть тестові завдання. Вони не супер схожі на ті, що будуть в реальному екзамені, але все ж трішки вас підготують.
В день екзамену приділіть увагу місцю, де ви будете проходити його. В кімнаті крім вас не повинно бути нікого (ви повинні будете це довести). На столі повинен бути тільки ваш комп’ютер. Блокноти, книжки, чашки, ручки і т.д. — все забороняється. І під столом теж :)
Зі сторонніх предметів дозволяється пляшечка води без етикетки. Також Ви повинні будете продемонструвати ваш телефон.
Ну, і наприкінці бажаю всім міцного здоров’я та успіхів. Як сказав один відомий українець: «Борітеся — поборете!»
12 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів