Стратегія іспиту CGOA та огляд програми
Напрямок CGOA | Складність: Середня | Час на проходження: 90 хвилин | Передумови: Досвід експлуатації Kubernetes не потрібен, але базове знання термінології Git і CI/CD буде корисним
Результати навчання
Розділ «Результати навчання»- Оцінювати сценарні питання CGOA, визначаючи домен програми, принцип GitOps, що перевіряється, і той варіант відповіді, який зберігає операційну модель.
- Порівнювати GitOps із CI/CD, інфраструктурою як кодом та автоматизацією конфігурації, не зводячи ці практики до однієї розпливчастої категорії «автоматизація».
- Проєктувати план підготовки, зважений за програмою, який відводить більше часу на практику для областей із вищою вагою, але все ж охоплює інструменти, патерни та суміжні практики з належною глибиною.
- Аналізувати дистрактори у питаннях із вибором варіанта, простежуючи, чи кожен варіант зберігає Git як джерело істини, чи використовує автоматизоване узгодження на основі витягування (pull), і чи підтримує цикл зворотного зв’язку.
- Будувати та перевіряти власну стратегію іспиту за допомогою класифікації сценаріїв, виключення варіантів та процесу хронометрованого огляду практики.
Чому цей модуль важливий
Розділ «Чому цей модуль важливий»Інженерка платформи на ім’я Прія рік користувалася ArgoCD, переглядала Helm-чарти і спостерігала за сповіщеннями про дрейф у продакшені. Вона відкриває пробний іспит CGOA, очікуючи питань про дрібниці інструментів, а потім не може відповісти на питання, які запитують, чи зміна належить до CI, Git, контролера GitOps чи кластера середовища виконання. Її практичний досвід реальний, але іспит винагороджує здатність назвати операційну модель за інструментом, а не просто пам’ятати, що інструмент уміє робити.
Ця прогалина важлива, бо CGOA — це теоретичний іспит про GitOps як дисципліну. Іспит не намагається довести, що ви знаєте кожен екран ArgoCD, кожну команду Flux чи функцію шаблонів Helm. Він перевіряє, чи можете ви розпізнати здоровий дизайн GitOps, відхилити дизайни, які тихо повертають ручне розгортання, і пояснити, чому декларативний бажаний стан плюс узгодження змінюють те, як працюють команди.
Цей модуль перетворює програму іспиту на систему ухвалення рішень. Ви дізнаєтеся, як домени поєднуються між собою, як читати питання з огляду на їхній намір, як розрізняти близькі варіанти відповіді та як практикуватися так, щоб покращити судження, а не лише збільшити обсяг карток для запам’ятовування. Мета сеньйорного рівня — не «запам’ятати п’ять доменів»; мета сеньйорного рівня — «діагностувати, що насправді вимірює питання, а потім обрати відповідь, яка зберігає систему керованою». Саме ця зміна перспективи відрізняє кандидата, який вгадує, від кандидата, який міркує, і саме її іспит насправді винагороджує.
Основний зміст
Розділ «Основний зміст»1. Читайте програму як карту суджень
Розділ «1. Читайте програму як карту суджень»Програма CGOA — це сигнал про те, де іспит очікує судження. Домени з вищою вагою заслуговують більше часу, але вони також заслуговують глибшої практики, бо саме вони закладають основу для багатьох питань у менших доменах. Якщо питання про інструменти запитує про Flux чи ArgoCD, найкраща відповідь часто залежить від принципу — наприклад, бажаного стану під контролем версій, узгодження на основі витягування, чи різниці між автоматизацією збірки та узгодженням розгортання.
| Домен | Вага | Що насправді перевіряється | Як це вивчати |
|---|---|---|---|
| Термінологія GitOps | 20% | Чи можете ви тлумачити бажаний стан, дрейф, узгодження, сховище стану і цикл зворотного зв’язку у формулюваннях сценаріїв | Будуйте робочий словник, пояснюючи кожен термін через невеликий інцидент |
| Принципи GitOps | 30% | Чи можете ви оцінити робочий процес за ідеями OpenGitOps, а не за вподобанням інструмента | Практикуйте виключення відповідей, які порушують декларативну, контрольовану версіями, витягнуту чи узгоджену поведінку |
| Суміжні практики | 16% | Чи можете ви порівняти GitOps із IaC, CaC, DevOps, DevSecOps, CI, CD та прогресивною доставкою | Використовуйте таблиці контрастів і запитуйте, яка система володіє яким рішенням |
| Патерни GitOps | 20% | Чи можете ви міркувати про просування, відкат, середовища, багатокластерну схему та обробку дрейфу | Опрацьовуйте сценарії на основі послідовностей і визначайте джерело істини |
| Інструменти | 14% | Чи можете ви розмістити ArgoCD, Flux, Helm, Kustomize та інструменти політик у моделі | Вивчайте ролі та компроміси інструментів, але тримайте принципи попереду назв продуктів |
Найпоширеніша помилка — трактувати відсотки як окремі скриньки для підготовки. На практиці домени вкладаються один в одного. Термінологія дає вам іменники, принципи дають вам цикл управління, суміжні практики окреслюють межі, патерни показують операційні вибори, а інструменти дають приклади реалізацій. Коли питання здається неоднозначним, запитайте, який шар воно насправді перевіряє, перш ніж порівнювати варіанти відповіді. Цей один навик — визначення правильного шару — економить більше балів, ніж будь-яка кількість додатково завчених фактів про окремі продукти.
+--------------------------- ПИТАННЯ CGOA ----------------------------+| || Формулювання сценарію || | || v || +------------------+ +------------------+ || | Сигнал домену | ----> | Сигнал принципу | || | термінологія? | | джерело істини? | || | патерни? | | узгодження? | || | інструменти? | | цикл зв'язку? | || +------------------+ +------------------+ || | || v || +------------------+ +------------------+ || | Перевірка | ----> | Кінцева відповідь| || | дистрактора | | найкраще зберігає| || | push-розгортання?| | модель GitOps | || | ручний дрейф? | | у сценарії | || | дрібниці інстр.? | | | || +------------------+ +------------------+ || |+----------------------------------------------------------------------+Корисна ментальна модель — уявляти кожне питання CGOA як невеликий огляд архітектури. Питання описує команду, робочий процес, збій або запропоноване покращення. Ваше завдання — рекомендувати варіант, який тримає бажаний стан задекларованим, збереженим, переглянутим, під контролем версій, автоматично застосованим і безперервно порівнюваним зі станом середовища виконання. Саме тому чисте зазубрювання відчувається крихким: відповідь часто залежить від того, як частини взаємодіють між собою.
Зупиніться та подумайте: Питання каже: «Команда хоче, щоб CI-сервер застосовував маніфести напряму до продакшену після проходження тестів». Який домен програми перевіряється першим, і який принцип GitOps найімовірніше під загрозою? Не відповідайте з огляду на вподобання інструмента. Відповідайте, називаючи домен, потім принцип, потім операційний наслідок.
Відповідь — не просто «CI/CD — це погано», бо CI/CD не є поганим. Проблема у володінні узгодженням розгортання. CI може зібрати, протестувати, просканувати, спакувати і запропонувати зміну бажаного стану, але модель GitOps очікує, що механізм узгодження на боці кластера витягне схвалений бажаний стан зі сховища стану. Коли CI пушить напряму у продакшен, Git перестає бути операційним джерелом істини, і про дрейф стає важче міркувати.
2. Вивчайте терміни GitOps як операційні сигнали
Розділ «2. Вивчайте терміни GitOps як операційні сигнали»Термінологія GitOps має значення, бо формулювання іспиту вміщує багато сенсу в кілька повторюваних фраз. Бажаний стан — це не просто «файли конфігурації в репозиторії»; це задекларована ціль, з якою контролер може порівнювати спостережуваний стан середовища виконання. Дрейф — це не кожна різниця у середовищі виконання; це значуща різниця між керованим бажаним станом і фактичним станом. Узгодження — це не одноразове розгортання; це повторюване порівняння та виправлення.
| Термін | Безпечне для іспиту значення | Що може мати на увазі дистрактор | Краща звичка міркування |
|---|---|---|---|
| Бажаний стан | Задекларований цільовий стан, збережений у джерелі істини під контролем версій | Будь-який локальний скрипт, тікет чи людська пам’ять можуть визначати ціль | Запитайте, де живе цільовий стан і чи можна його переглянути |
| Фактичний стан | Поточна спостережувана умова середовища виконання системи | Стан середовища виконання завжди миттєво збігається з Git | Запитайте, що бачить контролер і чи відбулася конвергенція |
| Дрейф | Різниця між наміреним керованим станом і спостережуваним станом | Кожна динамічна зміна середовища виконання є дрейфом | Запитайте, чи має це поле контролюватися декларативно |
| Узгодження | Автоматизований повторюваний рух від фактичного стану до бажаного | Команда ручного розгортання еквівалентна узгодженню | Запитайте, який компонент виконує порівняння та виправлення |
| Сховище стану | Авторитетне місце під контролем версій для бажаного стану, зазвичай Git | Будь-який дашборд чи об’єкт кластера може стати джерелом істини | Запитайте, де відбуватимуться відкат, аудит і огляд |
| Цикл зворотного зв’язку | Інформація про статус, що повідомляє про конвергенцію, справність і розбіжності | Застосувати маніфести достатньо, без спостереження за результатами | Запитайте, як команда дізнається, чи бажаний стан набув чинності |
| Відкат | Повернення бажаного стану до попередньої переглянутої версії та узгодження | Ручне редагування продакшену — найчистіший відкат | Запитайте, чи зберігає відкат можливість аудиту та відтворюваність |
Іспит часто перевіряє терміни, розміщуючи їх усередині історії замість запиту визначень. Наприклад, команда може зробити гарячий фікс Deployment напряму через kubectl edit, а потім помітити, що значення повертається до версії з Git. Поверхнева деталь — це команда, але концепція, що перевіряється, — це узгодження, яке виправляє дрейф. Якщо ви запам’ятовуєте лише визначення, ви можете пропустити механізм; якщо ви розумієте механізм, деталь команди менше відволікає.
Термінологія також захищає вас від надмірних узагальнень. «Стан» з’являється у багатьох системах, але GitOps дбає про бажаний стан як декларативну ціль і фактичний стан як спостережувану умову середовища виконання. Таблиця бази даних зі змінними даними користувачів — це стан, але зазвичай це не той самий вид декларативного платформного стану, який узгоджує GitOps. Хороші відповіді на іспиті тримають цю межу чіткою, замість того щоб стверджувати, що Git має зберігати кожен байт, що змінюється в системі.
Досвідчений фахівець читає словник через наслідки. Якщо Git є сховищем стану, то огляд, аудит, відкат і просування зосереджені навколо Git. Якщо контролер узгоджує, то ручні зміни є тимчасовими, доки їх не закомітять назад у бажаний стан. Якщо зворотний зв’язок обов’язковий, то конвеєр, який «вистрілив і забув», є неповним. Словник не академічний; він передбачає, як система поводиться під час збою.
Зупиніться та подумайте: Ваша команда бачить запущений Под з іншим тегом образу, ніж маніфест Deployment у Git. Перш ніж вирішити, що це дрейф, що ви маєте перевірити? Розгляньте, чи є маніфест керованим бажаним станом, чи володіє цим полем інший контролер, і чи повідомив контролер GitOps про статус синхронізації або справності.
Уважна відповідь перевіряє володіння і час. Якщо Deployment керується контролером GitOps і тег образу відрізняється після того, як узгодження мало завершитися, розбіжність є дрейфом або симптомом невдалого узгодження. Якщо поле навмисно змінюється іншим контролером, або якщо новий коміт ще не узгоджено, діагноз змінюється. Питання CGOA винагороджують саме таке умовне мислення.
3. Розглядайте чотири принципи як один цикл управління
Розділ «3. Розглядайте чотири принципи як один цикл управління»Чотири принципи OpenGitOps найлегше запам’ятати як цикл, а не як гасло. Система починається з декларативного опису бажаного стану. Цей опис перебуває під контролем версій і є незмінним, тож історія змін піддається огляду та відновленню. Програмні агенти автоматично витягують бажаний стан у середовище виконання. Агенти безперервно узгоджують фактичний стан із бажаним і повідомляють про зворотний зв’язок.
+----------------------+ +----------------------+ +----------------------+| Декларативний | ----> | Версіонована | ----> | Витягується || бажаний стан описує, | | незмінна історія | | автоматично || що має існувати | | робить зміни оглядн. | | програмним агентом |+----------------------+ +----------------------+ +----------------------+ ^ | | v | +----------------------+ | | Безперервно | +--------------------------------------------------------| узгоджується зі | | зв'язком та дрейфом | +----------------------+Цикл важливий, бо багато хибних відповідей зберігають один принцип, порушуючи інший. Відповідь може використовувати декларативний YAML, але застосовувати його вручну з ноутбука. Інша відповідь може використовувати історію Git, але дозволяти дашборду кластера стати авторитетним джерелом після розгортання. Третя відповідь може запускати автоматизацію, але лише як push з CI, без безперервного спостереження. На іспиті найкраща відповідь зазвичай зберігає весь цикл цілим.
Опрацьований приклад: Команда зберігає маніфести Kubernetes у Git, і CI-завдання запускає kubectl apply після кожного злиття. Маніфести декларативні та перебувають під контролем версій, тож два принципи частково присутні. Однак шлях розгортання базується на push і може не узгоджувати стан кластера безперервно після завершення завдання. Сильніша відповідь GitOps мала б, щоб CI збирав і тестував артефакти, комітив чи оновлював бажаний стан, а внутрішньокластерний або підключений до кластера контролер витягував і узгоджував з Git.
Цей опрацьований приклад показує, чому питання CGOA рідко виграються виявленням одного ключового слова. Якщо відповідь каже «Git», але прибирає узгодження на основі витягування, це не найкраща відповідь GitOps. Якщо відповідь каже «автоматизація», але не надає циклу зворотного зв’язку, вона неповна. Якщо відповідь каже «ручне затвердження», але робить так, що ручний крок оновлює переглянутий бажаний стан перед узгодженням, вона все ще може вписуватися у GitOps залежно від сценарію.
Цикл управління також пояснює, чому GitOps покращує відновлення. Команда може відновитися після випадкових змін кластера, бо узгоджувач порівнює фактичний стан із бажаним і повертає систему до задекларованої цілі. Команда може відновитися після хибної зміни бажаного стану, відкотивши або виправивши стан під контролем версій і дозволивши узгодженню застосувати нову ціль. Обидві форми відновлення залежать від збереження джерела істини чистим.
Коли ви оцінюєте варіанти відповіді, простежуйте цикл по порядку. Запитайте, чи ціль декларативна, чи ціль перебуває під контролем версій і є оглядною, чи агент витягує ціль, і чи фактичний стан безперервно порівнюється з ціллю. Якщо відповідь порушує цикл, їй потрібна вагома причина, щоб залишатися правдоподібною. Більшість дистракторів іспиту порушують цикл тихо.
4. Відокремлюйте GitOps від сусідніх практик
Розділ «4. Відокремлюйте GitOps від сусідніх практик»CGOA очікує, що ви розумієте GitOps у контексті, а не ізольовано. Інфраструктура як код, конфігурація як код, DevOps, CI, CD, прогресивна доставка та автоматизація політик часто з’являються в одному операційному середовищі. Вони пов’язані, бо допомагають командам безпечно керувати змінами, але не всі вони володіють одним і тим самим кроком у системі доставки.
| Практика | Основне питання, на яке вона відповідає | Як вона стосується GitOps | Поширена пастка іспиту |
|---|---|---|---|
| Інфраструктура як код | Як ми декларуємо ресурси інфраструктури відтворювано? | IaC може надавати файли бажаного стану, які GitOps узгоджує чи навколо яких провізує | Припущення, що весь IaC автоматично є GitOps |
| Конфігурація як код | Як ми зберігаємо конфігурацію в переглянутих файлах під контролем версій? | CaC підтримує GitOps, роблячи конфігурацію декларативною та придатною для аудиту | Трактування збереженої конфігурації як достатньої без узгодження |
| CI | Як ми збираємо, тестуємо, скануємо і пакуємо зміни? | CI може валідувати артефакти й оновлювати бажаний стан через переглянуті зміни | Дозволити CI стати органом розгортання у продакшен |
| CD | Як зміни надійно досягають середовищ? | GitOps може бути операційною моделлю CD для узгодження розгортання | Прирівнювання кожного конвеєра розгортання до GitOps |
| DevOps | Як команди покращують потік, зворотний зв’язок і спільне володіння? | GitOps підтримує цілі DevOps придатними для аудиту автоматизованими операціями | Трактування DevOps як конкретного інструмента чи послідовності команд |
| DevSecOps | Як засоби контролю безпеки працюють на шляху доставки? | DevSecOps вбудовує сканування зі зсувом ліворуч і політику в конвеєр; GitOps керує тим, як бажаний стан під контролем версій витягується й узгоджується агентами | Трактування лише сканування безпеки як узгодження GitOps |
| Прогресивна доставка | Як ми зменшуємо ризик під час викочування? | GitOps може керувати бажаною конфігурацією викочування для патернів canary чи blue-green | Припущення, що стратегія викочування замінює дисципліну джерела істини |
| Політика як код | Як ми визначаємо й автоматично примушуємо дотримання правил? | Політика може валідувати бажаний стан перед узгодженням чи під час нього | Припущення, що лише перевірки політик забезпечують узгодження розгортання |
DevSecOps ортогональний до GitOps так само, як і CI: він керує тим, які захисні бар’єри безпеки спрацьовують на шляху до продакшену (сканування зі зсувом ліворуч, перевірки політик, контроль ланцюга постачання), тоді як GitOps керує тим, як переглянутий бажаний стан досягає кластера через узгодження на основі витягування. Конвеєр може бути сильним щодо DevSecOps і все ж слабким щодо GitOps, якщо CI пушить маніфести напряму після проходження сканувань.
Межа між CI та GitOps є особливо важливою. CI чудово вміє виробляти докази того, що зміна достатньо безпечна, щоб її запропонувати: тести пройдено, образи зібрано, вразливості проскановано, а маніфести відрендерено. GitOps стосується переглянутого бажаного стану та узгодження цього бажаного стану в середовищах виконання. Практики співпрацюють, але іспит каратиме відповіді, які зводять їх в один push-конвеєр.
Інфраструктура як код має схожу межу. Terraform, Crossplane, Pulumi та маніфести Kubernetes можуть усі описувати ресурси, але GitOps не визначається лише форматом файлу. Визначальна поведінка — це бажаний стан під контролем версій, який автоматично витягується й безперервно узгоджується. Робочий процес IaC, що вимагає від інженера запускати команду apply з робочої станції, може бути доброю автоматизацією, але він не є автоматично GitOps.
Конфігурація як код може бути ще тоншою. Команда може зберігати конфігурацію застосунку в Git і все ж копіювати її вручну у продакшен. Це дає історію огляду, але не автоматизоване узгодження. Інша команда може зберігати конфігурацію контролера в Git і мати агента, який узгоджує її безперервно. Обидві використовують Git, але лише другий приклад завершує операційну модель GitOps.
Що сталося б, якби: Команда безпеки додає перевірки політик, які відхиляють несхвалені реєстри контейнерів, але розгортання все одно відбуваються через людину, яка запускає скрипти з ноутбука. Чи робить система політик цей робочий процес GitOps? Краща відповідь — ні. Політика покращує врядування і може підтримувати GitOps, але вона не замінює вимог щодо джерела істини та узгодження.
Сеньйорна відповідь також уникає інструментального трайбалізму. ArgoCD і Flux — поширені контролери GitOps, але їхня присутність не робить автоматично кожен супутній процес здоровим. Helm і Kustomize можуть рендерити чи кастомізувати маніфести, але вони самі по собі не визначають усю операційну модель. Іспит часто запитує про найбільш узгоджену з GitOps практику, а не про найвідомішу назву інструмента.
5. Використовуйте патерни, щоб міркувати про середовища та просування
Розділ «5. Використовуйте патерни, щоб міркувати про середовища та просування»Патерни — це місце, де іспит переходить від словника до компромісів дизайну. Одне середовище може узгоджувати одну гілку чи шлях з одного репозиторію. Кілька середовищ можуть використовувати окремі гілки, каталоги, репозиторії чи pull request’и для просування. Кілька кластерів можуть спільно використовувати базову конфігурацію, застосовуючи специфічні для кластера накладки (overlays). Жодна з цих схем не є універсально найкращою, тож ви маєте міркувати з огляду на ризик, врядування, радіус ураження та робочий процес команди.
+-------------------+ pull request +-------------------+| репо коду застос. | -------------------------> | репо конфіг. сер. || код і тести | | бажаний стан |+-------------------+ +-------------------+ | | | збірка і скан образу | контролер витягує v v+-------------------+ +-------------------+| реєстр контейнерів| | середовище викон. || незмінний образ | | фактичний стан |+-------------------+ +-------------------+Патерни просування перевіряють, чи розумієте ви, що має переміщуватися між середовищами. Поширена модель просування GitOps не пушить живий стан кластера з dev у staging. Натомість вона просуває переглянуту зміну до бажаного стану для наступного середовища, часто оновлюючи тег образу, версію чарту, накладку Kustomize чи шлях середовища. Узгоджувач для цього середовища потім витягує оновлений бажаний стан.
Відкат дотримується тієї самої логіки. Дружній до GitOps відкат повертає бажаний стан до відомої справної версії, а потім дозволяє узгодженню привести стан середовища виконання до конвергенції. Менш узгоджений відкат вручну редагує кластер, доки він не виглядатиме виправленим, залишаючи Git застарілим, а майбутні узгодження непередбачуваними. Іспит може представляти обидві відповіді як «швидкі»; краща відповідь зберігає можливість аудиту та майбутню узгодженість.
Розділення середовищ — ще один частий сигнал дизайну. Окремі репозиторії можуть посилити ізоляцію та контроль доступу, але вони додають витрати на координацію. Окремі каталоги в одному репозиторії можуть спростити спільний огляд і зменшити дублювання, але вони вимагають ретельних дозволів і правил огляду. Просування на основі гілок може здаватися знайомим розробникам, але воно також може створювати складність злиття, якщо стан середовищ сильно розходиться. Найкраща відповідь залежить від обмежень сценарію.
| Вибір патерну | Корисний, коли | Ризик, за яким слідкувати | Підказка для міркування на іспиті |
|---|---|---|---|
| Одне репо з каталогами середовищ | Команди хочуть простої спільної видимості та узгодженого огляду | Слабкі дозволи можуть допустити випадкові правки продакшену | Шукайте малі команди чи низькі вимоги до розділення |
| Окремі репо на середовище | Продакшен потребує суворішого контролю доступу чи меж володіння | Дублювання та координація просування можуть зростати | Шукайте потреби у відповідності, ізоляції чи окремих затверджувачах |
| Просування на основі гілок | Команда вже керує просуванням через робочі процеси гілок | Дрейф довгоживучих гілок може стати заплутаним | Шукайте питання про дисципліну злиття та історію |
| Просування за тегом образу | Зібрати раз і розгорнути той самий незмінний артефакт у всіх середовищах | Змінні теги підривають відтворюваність | Шукайте незмінність артефакту та простежуваність |
| Кастомізація на основі накладок | Середовища спільно використовують базу, але потребують специфічних відмінностей | Розростання накладок може приховувати важливі зміни | Шукайте Kustomize, значення Helm чи специфічні для середовища налаштування |
| Багатокластерне узгодження | Багато кластерів потребують узгоджених базисів і локальних перевизначень | Широкі помилки можуть вплинути на багато кластерів, якщо огляд слабкий | Шукайте керування флотом, орендарів чи регіональні кластери |
Опрацьований приклад: Компанія має кластери dev, staging і production. Розробники можуть зливати у dev після звичайного огляду, але продакшен вимагає затвердження від операцій. Команда хоче просувати той самий дайджест образу через кожне середовище. Сильний дизайн GitOps зберігає бажаний стан середовищ у переглянутих шляхах чи репозиторіях Git, оновлює дайджест образу через pull request’и, обмежує затвердження продакшену і дозволяє контролеру кожного середовища узгоджувати власну ціль. Слабша відповідь має CI, що розгортає напряму до кожного кластера після ручної галочки.
Цей приклад демонструє різницю між «ручним затвердженням» і «ручним розгортанням». Ручне затвердження може бути частиною GitOps, коли воно слугує бар’єром для зміни бажаного стану в Git. Ручне розгортання порушує модель, коли людина застосовує зміни напряму до кластера, а Git стає історичним паперовим супроводом. Питання CGOA часто ховають цю відмінність у формулюваннях, тож сповільніться, коли бачите затвердження, аварійну ситуацію, відкат чи продакшен.
6. Вивчайте інструменти через ролі, а не через зазубрювання продуктів
Розділ «6. Вивчайте інструменти через ролі, а не через зазубрювання продуктів»Інструменти — найменший домен за вагою, але вони з’являються у всіх сценарних питаннях. Найбезпечніший підхід до підготовки — вивчити, яку роль кожен інструмент зазвичай відіграє в системі GitOps. Контролер узгоджує бажаний стан. Інструмент пакування виробляє чи рендерить маніфести. Інструмент кастомізації накладає відмінності середовищ. Інструмент політики валідує чи обмежує зміни. Інструмент секретів захищає чутливий матеріал, водночас підтримуючи декларативні робочі процеси.
| Інструмент чи категорія | Поширена роль у вивченні GitOps | Що знати для міркування рівня CGOA | На чому не варто надмірно зосереджуватися |
|---|---|---|---|
| ArgoCD | Контролер GitOps з орієнтованим на застосунки узгодженням і видимістю через UI | Він витягує бажаний стан, порівнює статус синхронізації, повідомляє про справність і підтримує патерни застосунків | Зазубрювання кожного прапорця CLI чи назви екрана |
| Flux | Набір інструментів GitOps з контролерами для джерел, Kustomization, релізів Helm та автоматизації образів | Він узгоджує джерела та робочі навантаження через нативні для Kubernetes контролери | Трактування його лише як простого скрипта синхронізації |
| Helm | Система пакування та шаблонізації маніфестів Kubernetes | Він може виробляти бажані маніфести, які узгоджує контролер GitOps | Припущення, що Helm сам по собі забезпечує безперервне узгодження GitOps |
| Kustomize | Система накладок і патчів для кастомізації Kubernetes YAML | Він підтримує специфічний для середовища бажаний стан без шаблонізації | Припущення, що накладки усувають потребу в дисципліні огляду |
| Jsonnet | Мова шаблонізації даних для генерування конфігурації | Вона може моделювати складну багаторазову конфігурацію | Очікування глибоких питань про синтаксис на рівні associate |
| SOPS чи sealed secrets | Підходи до обробки секретів, що часто використовуються з GitOps | Вони допомагають безпечно тримати зашифрований чи запечатаний матеріал секретів у Git | Твердження, що секрети у відкритому тексті в Git є прийнятними |
| Рушії політик | Валідація та врядування для бажаного чи допущеного стану | Вони доповнюють GitOps, примушуючи дотримання правил перед узгодженням чи під час нього | Трактування політики як заміни узгодження |
Назви продуктів важать менше, ніж відповідальність за управління. Якщо питання запитує, чи Helm, чи Kustomize є доречнішим, зосередьтеся на тому, яку проблему розв’язують. Helm часто використовується для запакованих застосунків зі значеннями та релізами. Kustomize часто використовується для компонування баз і накладок без шаблонів. Обидва можуть вписуватися у GitOps, і жоден сам по собі не гарантує GitOps.
Питання про ArgoCD і Flux часто перевіряють узгодження, виявлення дрейфу та відстеження джерел. Вам не потрібно зазубрювати кожне поле конфігурації, щоб відповісти на питання рівня associate. Вам потрібно знати, що ці інструменти спостерігають за джерелами бажаного стану, порівнюють їх із фактичним станом кластера і застосовують зміни через контролери. Якщо відповідь робить їх пасивними системами документації, вона, ймовірно, хибна.
Питання про секрети вимагають ретельного міркування про компроміси. GitOps віддає перевагу Git як джерелу істини, але секрети у відкритому тексті в Git є небезпечними. Іспит може очікувати розпізнавання зашифрованих секретів, запечатаних секретів, зовнішніх менеджерів секретів чи посилань на секрети як безпечніших патернів. Ключ — зберегти декларативне керування та можливість аудиту, не розкриваючи чутливих значень.
Звичка підготовки сеньйорного рівня — спершу писати нейтральні щодо інструментів відповіді. Перш ніж назвати ArgoCD чи Flux, опишіть здатність: «контролер витягує бажаний стан під контролем версій і повідомляє про справність синхронізації». Перш ніж назвати Helm чи Kustomize, опишіть потребу: «команді потрібні відтворювані специфічні для середовища маніфести». Це не дає назвам інструментів відволікати вас від принципу, що перевіряється.
7. Перетворіть питання з вибором варіанта на повторюваний процес
Розділ «7. Перетворіть питання з вибором варіанта на повторюваний процес»Найкраща стратегія іспиту — це повторюваний процес, який зменшує тривогу і ловить дистрактори. Почніть із визначення операційної проблеми сценарію. Потім класифікуйте домен програми. Далі простежте цикл GitOps. Після цього виключіть варіанти відповіді, які порушують джерело істини, оглядність, автоматизацію на основі витягування чи узгодження. Лише тоді порівняйте варіанти, що залишилися, на предмет найкращої відповідності.
+---------------------+| Прочитати сценарій || один раз |+----------+----------+ | v+---------------------+| Назвати проблему || дрейф? просування? || межа CI? інструмент?|+----------+----------+ | v+---------------------+| Зіставити з програм.|| домен і принцип |+----------+----------+ | v+---------------------+| Виключити варіанти, || що порушують цикл |+----------+----------+ | v+---------------------+| Обрати найкращу || відповідь для сцен. |+---------------------+Опрацьований приклад: Питання каже, що команда має маніфести продакшену в Git, але інженери часто редагують живі ресурси під час інцидентів. Після кожного інциденту продакшен іноді знову змінюється, коли контролер GitOps синхронізується. Команда запитує, як зменшити плутанину. Найсильніша відповідь — вимагати, щоб виправлення інцидентів фіксувалися як переглянуті зміни бажаного стану, а потім дозволяти контролеру узгоджувати, використовуючи аварійні процеси, що оновлюють Git якнайшвидше. Найслабша відповідь — зупинити контролер на невизначений термін і покладатися на ручні правки.
Міркування механічне. Сценарій про дрейф і плутанину з джерелом істини. Релевантні принципи — бажаний стан під контролем версій і безперервне узгодження. Спокуслива відповідь може наголошувати на швидкості, дозволяючи операторам редагувати кластер напряму, але це лікує симптом, роблячи модель менш надійною. Інша спокуслива відповідь може згадувати оновлення інструмента, але самі лише інструменти не виправляють володіння бажаним станом.
Опрацьований приклад: Питання каже, що команда збирає образи контейнерів у CI і хоче найшвидший узгоджений з GitOps спосіб розгорнути протестований образ у staging. Найкраща відповідь зазвичай — оновити бажаний стан staging, наприклад дайджест образу чи версію чарту, через контрольовану зміну в Git і дозволити узгоджувачу staging застосувати її. Відповідь, яка має CI, що запускає kubectl set image напряму проти staging, може бути швидкою, але вона обходить модель огляду та узгодження бажаного стану.
Цей процес також допомагає з питаннями про «найкращу відповідь». Іноді дві відповіді частково правильні, але одна повніша. Віддавайте перевагу відповіді, яка зберігає операційну модель упродовж усього життєвого циклу: запропонована зміна, огляд, стан під контролем версій, автоматизоване витягування, узгодження, зворотний зв’язок і відкат. Якщо відповідь працює лише для щасливого шляху, але провалює аудит чи відновлення, вона зазвичай слабша.
8. Будуйте план підготовки, що відповідає програмі
Розділ «8. Будуйте план підготовки, що відповідає програмі»Хороший план підготовки починається з принципів і термінології високої ваги, а потім нашаровує патерни, суміжні практики та інструменти. Не витрачайте перший тиждень на зазубрювання списків функцій продуктів. Спершу вивчіть цикл управління, бо він пояснює, чому існують функції продуктів і як тлумачити формулювання сценаріїв. Щойно модель стане стабільною, порівняння інструментів стануть легшими.
| Фаза підготовки | Основна мета | Практична діяльність | Доказ готовності рухатися далі |
|---|---|---|---|
| Фаза 1: Терміни | Пояснювати основний словник через інциденти | Напишіть один сценарій у стилі продакшену для кожного терміна | Ви розрізняєте дрейф, узгодження, бажаний стан і зворотний зв’язок без нотаток |
| Фаза 2: Принципи | Простежувати цикл GitOps через робочі процеси | Класифікуйте робочі процеси як узгоджені, часткові чи неузгоджені | Ви можете пояснити, який принцип порушує поганий робочий процес |
| Фаза 3: Межі | Порівнювати GitOps із сусідніми практиками | Розподіліть відповідальності між CI, Git, контролером і середовищем виконання | Ви можете сказати, що має робити CI, а що — узгоджувач |
| Фаза 4: Патерни | Оцінювати дизайни просування, відкату та середовищ | Накресліть діаграми потоку репозиторіїв і середовищ | Ви можете обґрунтувати патерн потребами ризику, доступу й аудиту |
| Фаза 5: Інструменти | Зіставляти інструменти зі здатностями | Будуйте картки ролей інструментів зі сценаріями, а не визначеннями | Ви можете відповідати на питання про інструменти без опори на бренд-лояльність |
| Фаза 6: Хронометрований огляд | Практикувати процес іспиту під тиском часу | Переглядайте кожне пропущене питання за доменом і порушеним принципом | Ваші помилки групуються у виправні звички міркування, а не у випадкові здогадки |
Процес огляду важить більше, ніж сира кількість практичних питань. Після кожного набору практики позначте кожне пропущене питання однією причиною: плутанина у словнику, порушення принципу, плутанина з межами, компроміс патерну, роль інструмента чи недбале читання. Потім спершу вивчайте причину з найвищою частотою. Це перетворює помилки на цілеспрямований план покращення замість розпливчастого відчуття, що вам потрібно «вчитися більше».
Уникайте підготовки лише за картками. Картки допомагають зі словником, але питання CGOA достатньо сценарні, тож вам потрібна практика застосування. Для кожного терміна напишіть невелику операційну історію. Для кожного принципу напишіть один узгоджений і один неузгоджений робочий процес. Для кожного інструмента напишіть, яку роль він відіграє в циклі. Це змушує згадування й аналіз працювати разом.
Керування часом у день іспиту має захищати міркування. Якщо питання довге, прочитайте останнє речення першим, щоб знайти, про що воно запитує, а потім прочитайте сценарій. Якщо дві відповіді виглядають близькими, порівняйте їх із циклом GitOps, а не порівнюйте елегантність слів. Якщо ви застрягли, виключіть варіанти відповіді, які перетворюють Git на документацію постфактум, замінюють узгодження ручною дією чи плутають CI з конвергенцією кластера.
9. Рекомендований шлях огляду KubeDojo
Розділ «9. Рекомендований шлях огляду KubeDojo»Використовуйте наступні модулі як скерований шлях огляду, але не читайте їх як ізольовані довідники. Для кожного модуля запишіть один сценарій у стилі CGOA, на який він допомагає відповісти. Це перетворює пасивний огляд на практику і дає вам особистий банк прикладів, перш ніж ви візьметеся за повні набори практики.
- Що таке GitOps?
- Стратегії репозиторіїв
- Просування між середовищами
- Виявлення дрейфу
- Секрети в GitOps
- Багатокластерний GitOps
- Основи IaC
- ArgoCD
- Flux
- Helm і Kustomize
Читаючи модулі дисципліни GitOps, зосередьтеся на операційних наслідках. Запитуйте, що ламається, коли Git не є джерелом істини, що ламається, коли узгодження не безперервне, і що ламається, коли просування не представлене як переглянутий бажаний стан. Ці питання прямо узгоджуються з міркуванням на іспиті та з реальними рішеннями інженерії платформи.
Читаючи модулі про інструменти, зосередьтеся на межах здатностей. ArgoCD і Flux узгоджують бажаний стан, але вони не усувають потреби в чистій стратегії репозиторіїв. Helm і Kustomize допомагають формувати маніфести, але вони не замінюють огляд, аудит і зворотний зв’язок. Інструменти секретів зменшують ризик розкриття, але вони все одно потребують дизайну, який уникає чутливих значень у відкритому тексті в Git.
Наведений вище шлях навмисно ширший за шпаргалку. CGOA — це іспит рівня associate, але найсильніша підготовка — це зрозуміти, чому GitOps існує як операційна модель. Якщо ви можете пояснити компроміс за кожним патерном, ви впораєтеся з незнайомими формулюваннями, бо міркуєте з перших принципів, а не пригадуєте завчену відповідь. Цей самий спосіб мислення слугуватиме вам і після іспиту, коли ви проєктуватимете реальні системи доставки, де жоден варіант не позначений як «правильний».
Патерни та антипатерни
Розділ «Патерни та антипатерни»Стратегія іспиту, яка працює найкраще, — це та сама стратегія, що працює у виробничому огляді дизайну: назвіть межу володіння, перш ніж назвати інструмент. У здоровій відповіді GitOps запропонована зміна представлена як декларативний бажаний стан, бажаний стан зберігається в переглянутому місці під контролем версій, програмний агент витягує цей стан, а система середовища виконання безперервно перевіряється на конвергенцію. Цей патерн не дає питанню перетворитися на конкурс здогадок про те, чи екзаменатор віддає перевагу ArgoCD, Flux, Helm, Kustomize чи іншій деталі реалізації.
Перший сильний патерн — конвергенція, керована контролером. Використовуйте його, коли питання описує кластер, середовище чи флот, який має залишатися узгодженим із Git з часом. Причина, чому цей патерн працює, у тому, що орган розгортання залишається в узгоджувача, а не в ноутбука, одноразового CI-завдання чи кнопки дашборда. Він масштабується, бо кожне середовище може мати власну сферу узгодження, дозволи та зворотний зв’язок про справність, водночас використовуючи ту саму ментальну модель для відкату й розслідування дрейфу.
Другий сильний патерн — переглянуте просування незмінних артефактів. Використовуйте його, коли питання описує переміщення з розробки в staging чи production, особливо коли той самий протестований образ має пройти через кілька середовищ. Найкраща відповідь зазвичай змінює дайджест образу, версію чарту чи значення накладки в бажаному стані наступного середовища, а потім дозволяє контролеру цього середовища узгодити. Цей патерн тримає просування придатним для аудиту і не дає командам копіювати живі об’єкти середовища виконання вперед з усіма їхніми випадковими мутаціями.
Третій сильний патерн — нейтральне щодо інструментів зіставлення здатностей. Використовуйте його щоразу, коли варіант відповіді називає продукт, бо назви продуктів часто є дистракторами, якщо роль не зрозуміла. ArgoCD і Flux зазвичай узгоджують бажаний стан; Helm пакує й рендерить застосунки; Kustomize компонує бази та накладки; рушії політик валідують правила; інструменти секретів захищають чутливий матеріал, зберігаючи декларативні робочі процеси. Кандидат, який зіставляє здатність перед інструментом, може відповісти на незнайоме формулювання про продукт, не відмовляючись від принципів GitOps.
Четвертий сильний патерн — огляд помилок за режимом збою. Використовуйте його під час підготовки після кожного хронометрованого набору практики, бо сирий бал сам по собі не каже вам, що ремонтувати. Позначайте кожну помилку як плутанину термінології, порушення принципу, межу суміжної практики, компроміс патерну, плутанину з роллю інструмента чи недбале читання. Після кількох наборів патерн помилок підкаже вам, чи перечитати домен, чи перебудувати діаграму, чи практикувати виключення відповідей, і це ефективніше, ніж перечитувати кожен модуль з однаковою вагою.
Найнебезпечніший антипатерн — Git як паперовий супровід розгортання. Команди потрапляють у нього, бо вони щиро зберігають маніфести чи значення в Git, але зміна середовища виконання все одно відбувається деінде через пряму команду, дію в дашборді чи push конвеєра. Це здається близьким до GitOps, бо Git присутній, але це ламає аудит, відкат і узгодження, бо Git записує намір постфактум, а не володіє бажаним станом. На іспиті відхиляйте відповіді, де Git є лише записом того, що хтось уже зробив.
Інший поширений антипатерн — ручний дрейф під час інциденту з відкладеним прибиранням. Він стається, бо інциденти продакшену винагороджують негайну дію, а пряме редагування може виглядати найшвидшим способом відновити сервіс. Пастка в тому, що контролер може пізніше відкотити правку, або майбутні розгортання можуть поводитися непередбачувано, бо бажаний стан і фактичний стан розповідають різні історії. Краща відповідь дозволяє аварійну дію лише в межах процесу, який фіксує виправлення в Git швидко, документує причину і повертає узгоджувачу повноваження конвергенції.
Тонший антипатерн — силосна підготовка за програмою. Кандидати бачать ваги доменів і створюють окремі стоси карток, а потім дивуються, коли питання про інструмент залежить від принципу, а питання про патерн залежить від термінології. Програма є шаруватою, а не ізольованою: термінологія дає імена, принципи визначають цикл, суміжні практики визначають межі, патерни показують вибори дизайну, а інструменти надають реалізації. Діяльність з підготовки має перетинати ці шари, щоб кожне практичне питання будувало судження, а не ізольоване згадування.
| Патерн чи антипатерн | Використовувати чи уникати, коли | Чому це важливо для міркування CGOA | Турбота про масштабування |
|---|---|---|---|
| Конвергенція, керована контролером | Використовуйте, коли стан середовища виконання має залишатися узгодженим із переглянутим бажаним станом | Зберігає узгодження на основі витягування та зворотний зв’язок | Окреслюйте контролери та дозволи на середовище чи кластер |
| Переглянуте просування незмінних артефактів | Використовуйте, переміщуючи протестовані релізи між середовищами | Тримає просування придатним для аудиту та відтворюваним | Уникайте змінних тегів і нечіткого володіння станом продакшену |
| Нейтральне щодо інструментів зіставлення здатностей | Використовуйте, коли у варіантах з’являються назви продуктів | Не дає дрібницям інструментів приховувати порушення принципів | Тримайте коротку карту ролей для поширених інструментів замість зазубрювання екранів |
| Огляд помилок за режимом збою | Використовуйте після кожного хронометрованого набору практики | Перетворює хибні відповіді на цілеспрямований план підготовки | Позначайте помилки послідовно, інакше дані стануть шумом |
| Git як паперовий супровід розгортання | Уникайте, коли Git записує зміни після дії в середовищі виконання | Ламає міркування про джерело істини | Сліди аудиту слабшають, а відкат стає вгадуванням |
| Ручний дрейф під час інциденту з відкладеним прибиранням | Уникайте, коли прямі правки не фіксуються в Git | Створює конфлікт між фактичним станом і бажаним станом | Аварійні шляхи потребують володіння, обмежень часу та огляду |
| Силосна підготовка за програмою | Уникайте, готуючись по доменах | Породжує крихкі відповіді на змішані сценарні питання | Шляхи огляду мають з’єднувати терміни, принципи, патерни й інструменти |
Структура ухвалення рішень
Розділ «Структура ухвалення рішень»Використовуйте цю структуру щоразу, коли питання CGOA здається неоднозначним, бо неоднозначність зазвичай означає, що іспит просить вас порівняти операційні наслідки, а не пригадати визначення. По-перше, знайдіть точку рішення сценарію: шлях розгортання, відкат, реакцію на дрейф, просування середовища, вибір інструмента чи вибір пріоритету підготовки. По-друге, запитайте, який домен програми найвидиміший і який нижчорівневий принцип його підтримує. По-третє, простежте цикл GitOps і виключіть варіанти відповіді, які роблять Git застарілим, роблять людей сталим механізмом розгортання, прибирають безперервне узгодження чи приховують зворотний зв’язок.
Структура починається з бажаного стану, бо бажаний стан є якорем для кожного іншого рішення на іспиті. Якщо відповідь не каже, де живе цільовий стан, хто може його переглянути і як він змінюється, відповідь, ймовірно, неповна, навіть якщо вона згадує автоматизацію. Бажаний стан також відокремлює платформну конфігурацію Kubernetes від непов’язаних даних середовища виконання: кількість реплік Deployment, ArgoCD Application чи накладка Kustomize можуть керуватися декларативно, тоді як транзакції користувачів у базі даних зазвичай не просуваються через GitOps як YAML. Ця межа запобігає надмірно широким відповідям, які стверджують, що Git має містити кожне змінне значення в системі.
Після бажаного стану оцініть шлях виконання. У GitOps контролер чи програмний агент має витягувати схвалений стан і узгоджувати середовище виконання; CI зазвичай має збирати, тестувати, сканувати, пакувати, рендерити і пропонувати зміни, а не ставати довгостроковим механізмом конвергенції кластера. Ця відмінність не робить CI менш важливим. Вона робить передачу чистішою: CI виробляє впевненість і артефакти, Git записує бажану операційну ціль, а узгоджувач застосовує і спостерігає за ціллю всередині середовища, де може виникати дрейф.
Далі оцініть зворотний зв’язок і відновлення. Розгортання, яке не може повідомити про синхронізацію, справність, дрейф чи збій узгодження, не є повною операційною моделлю, бо команда не може сказати, чи намір став реальністю. Відкат, який редагує продакшен вручну, може бути швидким у момент, але він залишає під сумнівом наступний цикл узгодження і наступний огляд аудиту. Віддавайте перевагу відповідям, де відкат — це зміна бажаного стану до відомої справної версії з подальшою конвергенцією і спостереженням, бо це зберігає і швидкість, і керованість.
Нарешті, порівняйте варіанти, що залишилися, з формулюванням сценарію, а не з особистими вподобаннями. Якщо сценарій наголошує на регулюванні, найкращий патерн може ізолювати дозволи продакшену, навіть якщо один репозиторій простіший. Якщо сценарій наголошує на малій команді, що вивчає GitOps, один репозиторій із чіткими шляхами середовищ може бути легшим для розуміння, ніж багаторепозиторійна схема. Якщо сценарій наголошує на Kubernetes 1.35 чи новішій поведінці платформи, припускайте сучасні примітиви Kubernetes і узгодження на основі контролерів, а не старіші звички ручної експлуатації кластера.
Зробіть паузу і спрогнозуйте: якщо питання каже, що команда використовує зашифровані секрети в Git, але вимикає контролер під час кожної зміни продакшену, яка частина циклу GitOps захищена, а яка порушена? Проблему конфіденційності оброблено краще, ніж секрети у відкритому тексті, але модель узгодження все одно порушена, якщо контролеру не довіряють застосовувати і спостерігати за бажаним станом. Саме тому питання про «найкращу відповідь» часто вимагають вибору варіанта, який зберігає найважливіші операційні властивості разом, а не варіанта, що виправляє лише один симптом.
Та сама послідовність працює, коли питання згадує Kubernetes напряму. Для Kubernetes 1.35 і новіших припускайте, що декларативні об’єкти API, контролери, валідація на боці сервера та звітування про статус є нормальними частинами платформи, тож відповідь GitOps має використовувати ці сильні сторони, а не обходити їх. Якщо у запиті згадується kubectl, пам’ятайте, що іспит зазвичай перевіряє, чи команда належить до аварійного розслідування, одноразового завантаження чи сталого шляху розгортання; псевдонім k зручний для практики, але він не змінює операційної межі.
Ця відмінність корисна, бо багато реалістичних команд тримають невелику кількість імперативних команд для діагностики, завантаження чи відновлення, водночас очікуючи, що звичайна доставка протікатиме через переглянутий бажаний стан. Іспит не просить вас удавати, що цих команд ніколи не існує; він просить вас вирішити, чи є вони тимчасовими допоміжними діями, чи регулярним механізмом, який змінює продакшен. Ця різниця часто відокремлює просто правдоподібну відповідь від найсильнішої відповіді GitOps.
Перед запуском хронометрованого набору практики запишіть наступну послідовність рішень на чернетці чи у нотатках. Послідовність достатньо коротка, щоб використовувати її під тиском іспиту, але вона все одно захищає шлях міркування. Якщо питання забирає забагато часу, припиніть перечитувати те саме речення і рухайтеся через послідовність обдумано: проблема, домен, принцип, хибні варіанти відповіді, найкращий операційний наслідок.
+-------------------------+| 1. Назвати проблему || дрейф, просування, || інструмент, межа, план |+-----------+-------------+ | v+-------------------------+| 2. Зіставити домен || термінологія, принцип, || практика, патерн, інстр.|+-----------+-------------+ | v+-------------------------+| 3. Простежити цикл || бажаний, контр. версій, || витягнутий, узгоджений |+-----------+-------------+ | v+-------------------------+| 4. Виключити порушення || застарілий Git, ручний || push, відсутній зв'язок |+-----------+-------------+ | v+-------------------------+| 5. Обрати наслідок || найбезпечніший для || аудиту, відновл., масшт.|+-------------------------+Чи знали ви?
Розділ «Чи знали ви?»-
GitOps визначається операційною моделлю, а не лише Git. Репозиторій дає історію версій, але модель також вимагає декларативного бажаного стану, автоматизованого застосування на основі витягування, безперервного узгодження та зворотного зв’язку про конвергенцію.
-
Ручне затвердження все ще може вписуватися у GitOps, коли воно слугує бар’єром для зміни бажаного стану. Затвердження стає проблемою лише тоді, коли воно перетворюється на людину, яка вручну змінює продакшен, тоді як Git стає застарілою документацією.
-
Виявлення дрейфу корисне, бо воно захищає і надійність, і можливість аудиту. Воно повідомляє командам, коли стан середовища виконання більше не збігається з переглянутою ціллю, що допомагає їм відрізнити навмисну зміну від випадкової чи несанкціонованої.
-
Програма CGOA зважена на користь принципів. Принципи GitOps — це єдиний найважчий домен на 30%, за яким ідуть Термінологія GitOps і Патерни GitOps по 20% кожен, Суміжні практики на 16% та Інструменти на 14% — тож міркування рівня принципів приносить більше, ніж дрібниці інструментів.
Типові помилки
Розділ «Типові помилки»| Помилка | Чому це шкодить | Краща відповідь |
|---|---|---|
| Трактування GitOps як «використання Git для конфігурації» | Це визначення пропускає автоматизацію на основі витягування, узгодження та зворотний зв’язок, тож воно не може відрізнити хороші робочі процеси від поверхневого зберігання в Git | Поясніть весь цикл: декларативний бажаний стан, джерело під контролем версій, автоматизоване витягування, безперервне узгодження та спостережуваний зворотний зв’язок |
| Змішування GitOps із CI/CD | CI та GitOps співпрацюють, але CI зазвичай збирає і валідує, тоді як GitOps узгоджує схвалений бажаний стан у середовища | Відокремте відповідальності за збірку і тестування від керування бажаним станом і конвергенції кластера |
| Зазубрювання інструментів без моделі | Назви інструментів можуть відволікати від принципу, що перевіряється, особливо коли кілька інструментів можуть підтримувати той самий патерн | Почніть із визначення потрібної здатності, а потім зіставте інструменти з цією здатністю |
| Плутання дрейфу зі звичайним динамічним станом | Не кожна зміна середовища виконання є порушенням бажаного стану, бо деякі поля генеруються, спостерігаються чи належать іншим контролерам | Запитайте, чи є різниця частиною декларативного стану, яким GitOps має керувати |
| Вибір швидкості над джерелом істини у сценаріях інцидентів | Ручні гарячі фікси можуть виглядати швидкими, але вони створюють прихований стан, який узгодження чи майбутні розгортання можуть перезаписати | Використовуйте аварійні робочі процеси, що фіксують виправлення в Git і повертають володіння узгоджувачу якнайшвидше |
| Припущення, що IaC автоматично дорівнює GitOps | IaC описує ресурси, але людина, яка запускає команду apply, — це не те саме, що безперервне узгодження на основі витягування | Оцініть, чи має робочий процес бажаний стан під контролем версій і автоматизований узгоджувач |
| Читання відсотків програми як ізольованих силосів | Інструменти, патерни та суміжні практики часто залежать від термінології та принципів, тож вивчення їх окремо породжує крихкі відповіді | Використовуйте програму як шарувату карту, де принципи пояснюють інші домени |
| Довіра до правильно звучної фрази без перевірки наслідків | Дистрактори часто містять слова на кшталт Git, автоматизація чи декларативний, тихо порушуючи огляд, витягування чи зворотний зв’язок | Простежте запропонований робочий процес від початку до кінця, перш ніж обрати відповідь |
Тест
Розділ «Тест»Ваша команда зберігає маніфести Kubernetes у Git, і CI-завдання застосовує їх напряму до продакшену після проходження тестів. Сценарне питання CGOA запитує, чи це найсильніший дизайн GitOps. Як ви маєте оцінити цей робочий процес?
Робочий процес має декларативні частини під контролем версій, але це не найсильніший дизайн GitOps, бо розгортання базується на push з CI і може не включати безперервного узгодження. Краща відповідь відокремлює CI від узгодження: CI збирає, тестує, сканує і пропонує чи оновлює бажаний стан, тоді як контролер GitOps витягує схвалений стан і тримає кластер у конвергенції. Концепція, що перевіряється, — це межа між CI/CD та GitOps, а не те, чи корисний CI. Це оцінює сценарій, спершу локалізуючи домен програми, а потім перевіряючи, який принцип GitOps під загрозою.
Інцидент продакшену виправляється редагуванням живого Deployment у кластері. Наступного ранку значення повертається до версії з Git, і команда збентежена. Яку концепцію ви маєте застосувати першою, і яку зміну процесу ви б рекомендували?
Застосуйте концепції дрейфу, бажаного стану та узгодження. Жива правка створила різницю в середовищі виконання з бажаним станом, збереженим у Git, і узгоджувач повернув кластер до задекларованої цілі. Кращий процес — зафіксувати виправлення інциденту як переглянуту зміну бажаного стану в Git, а потім дозволити контролеру узгодити її, з аварійним шляхом, який все одно відновлює Git як джерело істини. Ця відповідь зберігає можливість аудиту, водночас пояснюючи, чому початкова зміна лише в середовищі виконання не протрималася.
Питання описує команду, що обирає між окремими репозиторіями для продакшену й staging чи одним репозиторієм з каталогами середовищ. Яка відповідь найімовірніше правильна, якщо продакшен має суворіші вимоги до затвердження й аудиту?
Сильніша відповідь — це, ймовірно, дизайн, який примушує специфічні для продакшену межі затвердження та доступу, що може означати окремий репозиторій продакшену чи сильно захищений шлях продакшену. Міркування має згадувати врядування, радіус ураження та вимоги до огляду, а не стверджувати, що один патерн репозиторію завжди найкращий. Питання про патерни CGOA зазвичай винагороджують відповідність стратегії репозиторію ризику й обмеженням володіння. Це рішення дизайну, тож найкраща відповідь має пояснювати компроміс, а не просто обирати найбільш ізольовану схему.
Команда використовує Helm-чарти для пакування застосунку і зберігає файли значень у Git. Розгортання відбуваються, коли інженер запускає Helm з ноутбука. Питання запитує, чи робить Helm цей робочий процес GitOps. Що ви маєте відповісти?
Helm підтримує робочий процес, рендерячи й пакуючи маніфести, але Helm сам по собі не робить його GitOps. Команда, запущена з ноутбука, є ручною push-дією, і сценарій не описує безперервного узгодження на основі витягування чи зворотного зв’язку. Більш узгоджений з GitOps дизайн зберігав би бажану версію чарту та значення в Git і мав би контролер, який узгоджує цей бажаний стан у кластер. Ця відповідь порівнює здатність інструмента з операційною моделлю, замість того щоб трактувати знайомий інструмент Kubernetes як доказ GitOps.
Команда безпеки хоче зберігати секрети в Git, щоб кожне середовище можна було повністю відтворити. Одна відповідь пропонує комітити маніфести Kubernetes Secret у відкритому тексті, бо Git є джерелом істини. Чому ця відповідь слабка, і що було б сильнішим?
Відповідь слабка, бо вона застосовує ідею джерела істини, ігноруючи конфіденційність. GitOps не вимагає розкриття чутливих значень у відкритому тексті. Сильніша відповідь використовує безпечніший декларативний патерн секретів, як-от зашифровані секрети, запечатані секрети чи посилання на зовнішні секрети, зберігаючи при цьому оглядний бажаний стан і автоматизоване узгодження. Міркування важливе, бо безпечна відповідь GitOps має задовольняти і врядування, і таємність, а не одне за рахунок іншого.
Під час пробного іспиту два дистрактори з вибором варіанта обидва згадують ArgoCD. Один каже, що ArgoCD має показувати статус синхронізації та справності, узгоджуючи з Git. Інший каже, що ArgoCD має використовуватися як дашборд після того, як CI вже запушив зміни в кластер. Як ви обираєте?
Оберіть відповідь, де ArgoCD узгоджує з Git і повідомляє про статус синхронізації та справності. Ця відповідь зберігає роль контролера в циклі GitOps. Відповідь «лише дашборд» використовує назву інструмента, але передає орган розгортання CI, що послаблює модель узгодження на основі витягування і може перетворити Git на документацію постфактум. Це хід аналізу дистрактора: ігноруйте спільну назву продукту і простежте, який варіант зберігає джерело істини, узгодження та зворотний зв’язок цілими.
Команда хоче швидшого просування зі staging у production. Одна пропозиція копіює живі об'єкти кластера staging у production. Інша пропозиція просуває той самий протестований дайджест образу, оновлюючи бажаний стан production через переглянутий pull request. Яка пропозиція більш узгоджена з GitOps, і чому?
Просування протестованого дайджесту образу через переглянутий бажаний стан production є більш узгодженим з GitOps. Воно тримає продакшен керованим джерелом істини під контролем версій, зберігає можливість аудиту і дозволяє узгоджувачу production застосувати схвалену ціль. Копіювання живих об’єктів кластера може переносити випадковий стан середовища виконання і обходити оглядну модель бажаного стану. Сценарій про дизайн просування, тож найкраща відповідь має зберігати незмінність артефакту та специфічне для середовища затвердження, а не переміщувати спостережуваний стан вручну.
Учень постійно не може відповісти на питання, що порівнюють GitOps з інфраструктурою як кодом, CI/CD та автоматизацією конфігурації. Його інстинкт — відповідати, що будь-який декларативний файл у Git є GitOps. Як би ви виправили його міркування та скоригували план підготовки?
Декларативні файли в Git є необхідними складниками багатьох систем GitOps, але вони не є всією моделлю. Учень має перевірити, чи бажаний стан перебуває під контролем версій і є незмінним, чи програмний агент витягує його автоматично, і чи фактичний стан безперервно узгоджується зі зворотним зв’язком. IaC, CI/CD та автоматизація конфігурації можуть підтримувати GitOps, але вони не постачають автоматично весь цикл управління. План підготовки має додати вправи на порівняння меж і позначення пропущених питань, щоб учень міг перевіряти прогрес, а не перечитувати ті самі визначення.
Практична вправа
Розділ «Практична вправа»Завдання: Побудуйте особистий аркуш рішень для іспиту CGOA, який класифікує сценарії за доменом програми, визначає принцип GitOps, що під загрозою, і записує правило виключення відповіді. Ця вправа практична, бо ви створите конкретний навчальний артефакт, перевірите його на сценаріях і переконаєтеся, що ваше міркування узгоджується з результатами навчання.
Набір сценаріїв: Використовуйте наведені нижче сценарії як ваші вихідні дані. Вони навмисно схожі на запити іспиту, але вони не просять згадування. Для кожного сценарію вирішіть, який домен найрелевантніший, який принцип чи межа перевіряється, який тип відповіді буде слабким, а який тип відповіді буде сильним.
- CI-система збирає образ, запускає тести, а потім застосовує маніфести продакшену напряму до кластера.
- Оператор вручну змінює живий Deployment під час інциденту, а контролер GitOps пізніше відновлює значення з Git.
- Команда зберігає значення Helm у Git, але запускає Helm вручну з ноутбука для кожного розгортання.
- Регульоване середовище продакшену вимагає інших правил затвердження, ніж staging.
- Команда хоче тримати секрети декларативними, не розкриваючи значень у відкритому тексті в репозиторії.
- Багатокластерна команда платформи хоче спільну базову конфігурацію зі специфічними для кластера відмінностями.
- Практичне питання запитує, чи є GitOps, IaC та DevOps взаємозамінними назвами для тієї самої практики.
- Дашборд повідомляє, що застосунок не синхронізований з бажаним станом у Git.
Крок 1: Створіть робочий каталог і навчальний аркуш. Наведені нижче команди створюють простий Markdown-аркуш, який ви можете редагувати в будь-якому текстовому редакторі. Команда запускається на локальній машині з оболонкою POSIX і не потребує кластера Kubernetes.
mkdir -p cgoa-studycat > cgoa-study/exam-decision-sheet.md <<'EOF'# CGOA Exam Decision Sheet
## Decision Procedure
1. Name the scenario's operating problem.2. Map the problem to a blueprint domain.3. Identify the GitOps principle, boundary, or pattern being tested.4. Eliminate answers that break source of truth, reviewability, pull-based automation, reconciliation, or feedback.5. Choose the answer that best preserves the operating model in the scenario.
## Scenario Classifications
| Scenario | Domain | Principle or boundary | Weak answer pattern | Strong answer pattern ||---|---|---|---|---|| CI applies production manifests directly | Related Practices | CI versus GitOps reconciliation | CI becomes deploy authority | CI updates desired state; controller reconciles || Manual incident edit is reverted | Terminology | Drift and reconciliation | Disable reconciliation indefinitely | Capture fix in Git and reconcile || Helm values in Git, laptop deploy | Tooling | Tool role versus operating model | Helm alone equals GitOps | Controller reconciles chart desired state || Production requires stricter approval | Patterns | Environment governance | Same access for every environment | Protected production desired state || Declarative secrets without plaintext | Patterns | Source of truth plus confidentiality | Plaintext secrets in Git | Encrypted or external secret pattern || Shared multi-cluster baseline | Patterns | Fleet consistency with local variation | Duplicate unmanaged config | Shared base plus cluster overlays || GitOps, IaC, DevOps comparison | Related Practices | Practice boundaries | Treat all automation as identical | Separate goals and ownership || Application out of sync | Terminology | Desired versus actual state | Ignore feedback | Investigate drift and reconciliation |EOFКрок 2: Додайте власні нотатки міркувань. Відкрийте cgoa-study/exam-decision-sheet.md і додайте одне речення під кожним рядком, що пояснює, чому слабка відповідь порушує модель GitOps. Тримайте речення конкретним. Наприклад, не пишіть «бо це не GitOps»; напишіть «бо CI застосовує стан середовища виконання напряму, і контролер більше не володіє конвергенцією».
Крок 3: Створіть три власні нові сценарії. Один сценарій має стосуватися відкату, один — порівняння інструментів, а один — межі між GitOps та іншою практикою. Для кожного сценарію напишіть сильний патерн відповіді, перш ніж писати слабкий. Цей порядок змушує вас міркувати від моделі замість того, щоб спершу вигадувати дистрактори.
Крок 4: Обмежте час на прохід огляду. Дайте собі 12 хвилин на класифікацію початкових восьми сценаріїв і ваших трьох нових сценаріїв, не озираючись на модуль. Позначте будь-який сценарій, де вам знадобилися нотатки. Ці позначки визначають домен, який ви маєте переглянути далі.
Крок 5: Перевірте свій аркуш за допомогою процедури рішень. Для кожного рядка простежте цикл GitOps: декларативний бажаний стан, незмінне джерело під контролем версій, автоматизоване витягування, безперервне узгодження та зворотний зв’язок. Якщо ваша сильна відповідь не зберігає принаймні релевантну частину цього циклу, перегляньте її.
Критерії успіху:
- Ваш аркуш рішень містить усі вісім наданих сценаріїв плюс три оригінальні сценарії, які ви написали самі.
- Кожен сценарій має домен програми, принцип чи межу, слабкий патерн відповіді та сильний патерн відповіді.
- Принаймні один сценарій охоплює термінологію, один — принципи, один — суміжні практики, один — патерни, а один — інструменти.
- Ваш сценарій відкату пояснює, чому зміна бажаного стану сильніша за ручне редагування живого кластера.
- Ваш сценарій порівняння інструментів описує ролі інструментів перед називанням бажаного інструмента.
- Ваш сценарій межі CI чи IaC відокремлює відповідальності за збірку, валідацію, зберігання бажаного стану та узгодження.
- Ви можете класифікувати всі сценарії за прохід у 12 хвилин і пояснити кожну відповідь, не використовуючи фразу «бо GitOps так каже».
- Ви визначили один найслабший домен для подальшого огляду і пов’язали його з модулем у рекомендованому шляху KubeDojo.
Запит на рефлексію: Після завершення аркуша оберіть сценарій, що здався найбільш неоднозначним, і напишіть коротке пояснення того, що зробило його складним. Неоднозначність — корисний зворотний зв’язок. Якщо складність виникла зі словника, перегляньте термінологію. Якщо вона виникла з того, що дві відповіді звучали правильно, практикуйте простежування всього циклу управління. Якщо вона виникла з назв інструментів, перепишіть сценарій нейтральною щодо інструментів мовою і розв’яжіть його знову.
Перевірка для учня
Розділ «Перевірка для учня»DevSecOps ортогональний до GitOps так само, як і CI: він керує тим, які захисні бар’єри безпеки спрацьовують на шляху до продакшену (сканування зі зсувом ліворуч, перевірки політик, контроль ланцюга постачання), тоді як GitOps керує тим, як переглянутий бажаний стан досягає кластера через узгодження на основі витягування.
Джерела
Розділ «Джерела»- https://training.linuxfoundation.org/certification/certified-gitops-associate-cgoa/
- https://www.cncf.io/training/certification/cgoa/
- https://github.com/cncf/curriculum/blob/master/CGOA_Curriculum.pdf
- https://opengitops.dev/
- https://github.com/open-gitops/documents/blob/main/PRINCIPLES.md
- https://argo-cd.readthedocs.io/en/stable/
- https://fluxcd.io/flux/concepts/
- https://helm.sh/docs/
- https://kubectl.docs.kubernetes.io/references/kustomize/
- https://kubernetes.io/docs/concepts/configuration/secret/
- https://external-secrets.io/latest/
- https://getsops.io/docs/
- cncf.io: cgoa — Сторінка сертифікації CNCF прямо описує CGOA як онлайн-іспит з вибором варіанта під наглядом проктора і визначає його обсяг.
- github.com: PRINCIPLES.md — Документ принципів OpenGitOps є канонічним апстрім-визначенням цих чотирьох принципів.
- Argo CD Architectural Overview — Підкріплює архітектуру компонентів Argo CD та відповідальності, як-от API-сервер, репозиторійний сервер, контролер застосунків, опитування/узгодження Git, синхронізацію, відкат, делегування автентифікації та примусове застосування RBAC.
- fluxcd.io: concepts — Основні концепції Flux прямо визначають Sources і Reconciliation і наводять GitRepository, Kustomization та HelmRelease як конкретні приклади на основі контролерів.
- Helm Charts — Підкріплює структуру чарту Helm, Chart.yaml, values.yaml, шаблони, залежності, пакування чартів, типи чартів та загальні твердження про те, як Helm моделює багаторазові пакети застосунків Kubernetes.
- kubernetes.io: kustomization — Сторінка завдань Kustomize у Kubernetes прямо документує кастомізацію через файли kustomization і пояснює бази та накладки.
- kubernetes.io: secrets good practices — Документація з добрих практик секретів Kubernetes прямо попереджає, що спільне використання чи коміт маніфестів Secret у кодуванні base64 розкриває секрет і що base64 не є шифруванням.
- argo-cd.readthedocs.io: secret management — Настанови Argo CD з керування секретами прямо рекомендують керування секретами на цільовому кластері і називають Sealed Secrets та External Secrets Operator як приклади.
Наступний модуль
Розділ «Наступний модуль»Продовжуйте з Огляд принципів GitOps для CGOA.