Поведаю свою историю. Я Solution Architect в одной из больших компаний с бэкграундом Java Разработчика, ни разу не DevOps инженер. Постараюсь подробно рассказать про всё, что знаю и постараюсь не переводить на русский то, что лучше и правильнее звучит на английском. Сдавать экзамен нельзя на русском, поэтому готовьтесь к английскому, но на сколько я помню вариант был выбрать китайский и японский. Вдруг кому так проще ^-)
Краткое введение в существующие сертификации по Kubernetes
На данный момент существуют 5 сертификаций по Kubernetes от CNCF(Cloud Native Computing Foundation).
2 начального уровня(Associate): Kubernetes and Cloud Native Associate и Kubernetes Cloud Native Security Associate
и 3 серьезные сертификации: CKAD(Certified Kubernetes Application Developer), CKA(Certified Kubernetes Administator) и CKS(Certified Kubernetes Security Specialist).
Про сертификации начального уровня говорить не будем, они не заслуживают нашего внимания и серьезного уважения по моему субъективному мнению.
Если вы администратор или планируете им быть, то ваш путь это CKA, а затем CKS(если понадобится), CKS без CKA нельзя сдать. В CKA надо будет настраивать кластер, сети, storage'ы, troubleshoot'ить разные сценарии и немного настраивать безопасноcть.
Если вы разработчик/архитектор/инженер который хочет подтвердить что он может собирать, настраивать и разворачивать приложения в кубере, то вам сюда(настраивать storage'ы, PVC, troubleshoot'ить и играться с securityContext и тут придется)
Информация по экзамену
Ссылочка на сам экзамен
Стоимость экзамена 445 долларов, оплата только зарубежной картой. Криптовалюта и карты РФ не принимаются.
У вас будет за эти деньги 12 месяцев на то, чтобы выбрать время удобное для сдачи( можно переносить экзамен за 24 часа до экзамена спокойно, если переносите когда времени осталось меньше 24 часов, то попытка сгорает)
2 попытки в симуляторе killer.sh
2 попытки экзамена
Состав экзамена
20%: Application Design and Build
-
умение собирать container image'ы, учим docker/podman(на экзамене был вопрос с докером, но в симуляциях был и podman)
-
умение работы с Deployment, Job, CronJob и т.д.
-
сайдкары(sidecar) и инит контейнеры(initContainer)
-
volume'ы эфемерные и персистентные(pv)
20%: Application Deployment
-
умение реализовывать blue/green deployment и канарейку
-
умение работать с rolling upgrades
-
Helm
-
Kustomize
15%: Application Observability and Maintenance
-
устаревание API
-
пробы и health check'и
-
работа с логами, отладка приложений
-
мониторинг приложений с помощью metrics-server
25%: Application Environment, Configuration, and Security
-
CRD(Custom resource definitions). умение создавать CR по CRD
-
аутентификация, авторизация и admission control
-
request'ы и limit'ы
-
конфигмапы
-
resourceQuota'ы и LimitRange'и
-
Сикреты(Secret)
-
ServiceAccount'ы
-
безопасность(SecurityContext'ы, Capabilities и прочее)
20%: Services and Networking
-
сетевые политики(NetworkPolicies)
-
Service'ы (ClusterIp, NodePort)
-
ингрессы (именно ingress rule, ingress controller будет настроен за вас)
Подготовка
-
Книга Certified Kubernetes Application
Developer (CKAD) Study Guide. Автор Benjamin Muschko. Обязательно смотрите на второе издание, я когда начинал готовиться, то не мог найти его в интернете и готовился по первому в котором и не было многих тем, которые сейчас нужны для экзамена и как мне кажется не надо было так глубоко знать темы. Поэтому моя уверенность в готовности сдачи экзамена после проработки первого издания была очень ошибочна. Делайте задания обязательно, можете сразу, можете после прочтения книги, они хоть и сложные и даже местами сложнее экзамена, но какой никакой опыт. Единственное что желательно на двух мониторах работать с ней. На ноутбуке было не удобно и в консоли миникуба что-то делать и условие в книге читать и еще работать с репозиторием, который автор попросил скачать с его github -
Курсы Mumshad Manabeth'a, которые есть и на Udemy и на его платформе kodekloud и даже можно найти в инете(но так у вас не будет опыта решения задач по ходу курса, хотя конечно можно параллельно имитировать тоже самое в minikube. Очень классный преподаватель. Хоть и индус, но с английским, которому позавидуют многие. Нас интересует курс Certified Kubernetes Application Developer (ссылочка) и если вы совсем новичок, то можно пройти Kubernetes for the Absolute Beginners - Hands-on Tutorial (ссылочка)(он иногда бывает доступен бесплатно, мне коллега подсказала и я успел пробежаться и размяться чуточку. Уровень вопросов конечно слабенький, но даже такая практика тоже важна)
-
Бесплатные лабораторные по куберу на том же kodekloud - https://kodekloud.com/pages/free-labs/kubernetes (поиграться с docker, terraform, ansible и прочим можно тут)
-
GitHub репа. Довольно не простая, но хорошая практика, приступайте лучше после освоения всего материала по книге или курсу. Еще есть вот такая, её можно полистать и поиграться, но мне не понадобилось
-
Сценарии на killercoda. Это не прям эмуляция экзамена. Это просто возможность попробовать разные сценарии, они не все простые и очевидные. Я их в какой-то момент стал спидранить(проходить на скорость), чтобы имитировать экзамен и набить механический навык. Лично я, из-за того, что много разных ресурсов использовал и много практиковался в локальном кластере minikube, забывал эти сценарии напрочь спустя 2-3 недели и мог как с чистого листа проходить заново на скорость. Для спидрана использовал утилиту LiveSplit, у меня не так много было "забегов", но я на 30 минут быстрее закрывал все playground'ы кроме тех, которые выкинул, а именно (Playground, Vim Setup, SSH Basics, Kubectl Contexts).
-
Для наработки механического навыка я в какой-то момент просто набрал на скорость все команды и yaml манифесты из книги CKAD Study Guide из первого пункта уже после её прочтения и небольшого перерыва от неё. Я переживал за скорость, поэтому я посчитал лично для себя это полезным
-
Также у kodekloud есть классная платформа - https://engineer.kodekloud.com/practice. Это почти как leetcode для разработчиков, конечно не так всё классно в плане бесплатного доступа, но порешать несколько задачек в день вам дадут. Я даже задумывался, что если с первой попытки не сдам, то куплю подписку у них, чтобы прорешать как можно больше задач по куберу
-
И возможно самая важная мерила вашей готовности - это тестовый тренажер в которым вам дадут 2 попытки, предоставляемый killer.sh . В нем на момент написания было 22 основных вопроса по которым вас будут в конце оценивать и было 3 preview вопроса, которые могут включить в будущие основные вопросы тренажера. Дается 2 часа, как и на экзамене, не пугайтесь, если всё не успеете, я тоже не успевал и это отчасти сделано специально, чтобы и вы чувствовали стресс и было побольше практики. Доступ к среде тренажера открывается на полтора дня. Поэтому можно сделать такой лайфхак, как я. В пятницу поздно вечером сделал только то, что успел за 2 часа, посмотрел оценку, в субботу дорешал оставшееся и сделал работу над ошибками, сначала сам попытался исправить то, что killer.sh посчитал ошибочным. У вас будет отчет о том как вас оценивали и с каким этапами заданий вы не справились. После уже можно посмотреть решения, которые сделали сотрудники killer.sh и понять, что где-то можно было сделать быстрее и оптимальнее.
ВАЖНО! Не тратьте время на поиск dump'ов экзамена, они все попросят денежку после прочтения одной страницы с 4 заданиями и не будут на самом деле похожи на реальный экзамен.
Об алиасах
В других статьях про CKAD рекомендуют пользоваться алиасами. Например:
alias k=kubectl //алиас для комманды kubectl
alias kaf="k apply -f" //применения манифеста
alias kgp="k get pods" //получение под
alias now="--force --grace-period=0" //по умолчанию в кубере graceful удаление, так мы не будем ждать
Так вот из-за того, что на экзамене надо подключаться по ssh к новой машине на каждый вопрос, набор алиасов просто потеря драгоценного времени. У вас уже будет alias k для kubectl и этого в целом достаточно. Поэтому то, то я учил и набирал эти команды постоянно для работы в minikube отчасти является потерей времени. Не слушайте старые гайды и не читайте старые статьи, которые говорят, что нужно учить алиасы.
Советы
-
не пытайтесь руками набирать огромные yaml манифесты, доступна документация, пользуйтесь и смело копируйте и подправляйте под свои задания
-
но также какие-то вещи проще порой руками набрать, а именно limits, requests в поде
-
копируем названия всех ресурсов из задания, чтобы обидно не было из-за того, что просили file-name.yaml, а мы сделали file_name.yaml или fiel-name.yaml. Такие задания могут быть на экзамене по сохранению результатов в конкретный файл и такое будет и на симуляторе
-
обязательно привыкать к vim, нам нужно и редактировать в нем значения и быстро удалять, а не зажимать backspace/delete и уметь сдвигать куски yaml'a. Вас могут попросить переделать pod в deployment или job в cronjob и у вас уже есть нужный template, но нужно обязательно правильные отступы.
-
Очень много будет задач в конкретных namespace'ах, поэтому обязательно привыкайте и создавать их и создавать в них ресурсы и искать в них. Созданные pod'ы/deployment'ы/configmap'ы/secret'ы и т.д. не в том namespace - это проваленное задание
-
обязательно сначала читаем быстро вопрос, потом оцениваем хотим ли мы сразу же тратить на него время, я так отложил вопрос с networkpolicy, которые зачастую и хитрые и требуют отладки доступа изнутри контейнера, а также оставил вопрос про ingress, но он оказался довольно простым, там просто всё было сломано и deployment и service и ingress перенаправлял не на тот сервис и порт, но это тоже было относительно затратно по времени.
-
Вы будете сдавать экзамен в специальном PSI Secure Browser, он может попросить вас выключить телеграмм, другой браузер, прибить какие-то процессы, также за вами будут следить, попросят показать всю комнату, стол, под столом, телефон и т.д. О "надсмотрщике" расскажу поподробнее
-
Сдавать экзамен вы будете не на linuxfoundation напрямую, а на psiexams, вас будут редиректить сюда, не пугайтесь. Тут же вы будете и заполнять информацию перед экзаменом для регистрации его и выбора удобного времени.
-
Очень желательно использовать загранпаспорт, на одной из страниц было явно написано, что ваш паспорт(ID) должен быть с латинскими буквами и что если вы регистрировались с паспортом РФ например, то вам придется показать еще и загранник, никакие другие документы принимать они не будут, хотя в старых статьях есть упоминания, что люди сдавали с паспортом РФ. Попробуйте и расскажите в комментариях)
-
Вам очень желательно разумеется иметь базовые навыки работы с Linux и docker. Документацию по docker'у вы посмотреть не сможете на экзамене, готовимся писать Dockerfile, buildить, ставить тэги, запускать контейнер, пушить в репозиторий и даже экспортировать в .tar архив
-
Если что-то забыли/не знаете и не можете найти в документации, то читайте --help к команде. Живой пример: я ни на одном ресурсе не видел и не читал, чтобы запускали job'у из cronJob'ы, в документации не нашел такого, но нашел в --help и успешно справился с этой частью задания
-
Не закрывайте лицо, когда думаете или кашляете, вам может прилететь замечание, как и мне на экзамене
-
Не проговаривайте то, что вы делаете, бормотание карается предупреждением, которое выскочит на экран и повторение этого может привести к прекращению экзамена и сгоранию попытки. Также вас могут попросить как меня показать комнату снова во время экзамена, т.к. появляются подозрения, что кто-то есть в комнате
-
Ни в коем случае не делайте screenshot, если у вас на компьютере включен автозахват типа Ножниц в винде при нажатии "prt scr", то отключите это
-
Возможно одно из самых важных вещей, привыкайте запускать императивные команды с dry-run=client -o yaml > my-file.yaml. Очень часто будет требоваться создать какой-нибудь объект, но все манипуляции нельзя будет сделать из команды, например те же пробы.
-
В начале экзамена запускайте PSI Secure Browser с сайта, не пытайтесь открыть его просто так, вас может напугать фраза, что экзамен закончился, которая относится к вашей проверке работы браузера за день-два до экзамена.
Послесловие
Я рассчитывал, что на экзамене будет порядка 12-13 вопросов, как я читал на разных источниках, но мне попалось 16. Возможно это стандартное число вопросов в текущей версии экзамена
Также не ждите мгновенного результата проверки вашего экзамена, linuxfoundation и psi exams взяли сутки на обработку вашего экзамена, хотя во время прохождения тестового эмулятора killer.sh вы увидите, что он проверяет состояние кластеров каждый 3-5 минут. Возможно у них по процессу кто-то должен отсмотреть еще раз запись, которая была сделана, но и это не объясняет то, что результат я узнал чуть больше чем через 23 часа. Возможно у них какой-то Scheduler есть, который уведомляет кандидата по почте и переводит в конечный статус вам экзамен. Так что не тратим время на обновление странички экзамена
Надеюсь статья была довольно подробной и полезной для тех, кто собирается сдавать экзамен в обозримом будущем. Всем удачи

Автор: talismanov