Дисципліна GitOps
Git як єдине джерело істини для інфраструктури та застосунків.
Огляд
Розділ «Огляд»GitOps — це операційний фреймворк, який застосовує найкращі практики DevOps для автоматизації інфраструктури — контроль версій, співпраця, відповідність вимогам та CI/CD — до конфігурації інфраструктури. У GitOps вся система описується декларативно в Git, а автоматизовані процеси забезпечують відповідність фактичного стану бажаному.
Цілі навчання
Розділ «Цілі навчання»Після завершення цього треку ви зможете:
- Пояснювати принципи GitOps та модель узгодження (reconciliation)
- Проєктувати стратегії репозиторіїв для різних структур команд
- Впроваджувати воркфлоу просування між середовищами (promotion)
- Налаштовувати виявлення дрейфу конфігурації та автоматичне виправлення
- Безпечно керувати секретами у воркфлоу GitOps
- Проєктувати мультикластерний GitOps для управління флотом кластерів
Передумови
Розділ «Передумови»Перед початком цього треку ви повинні:
- Розуміти основи Kubernetes (deployments, services, namespaces)
- Вміти працювати з Git (гілки, PR, мерджі)
- Мати досвід роботи з конфігураційними файлами YAML
- Пройти базовий трек Системне мислення (рекомендовано)
Модулі
Розділ «Модулі»| # | Модуль | Складність | Час | Опис |
|---|---|---|---|---|
| 3.1 | Що таке GitOps? | MEDIUM | 35-45 хв | Принципи GitOps, pull vs push, reconciliation |
| 3.2 | Стратегії репозиторіїв | MEDIUM | 35-45 хв | Monorepo vs polyrepo, додатки vs конфігурація |
| 3.3 | Просування по середовищах | MEDIUM | 40-50 хв | Promotion на основі директорій, progressive delivery |
| 3.4 | Виявлення дрейфу | MEDIUM | 40-50 хв | Типи дрейфу, стратегії auto-heal vs alert |
| 3.5 | Секрети в GitOps | COMPLEX | 50-60 хв | Sealed Secrets, SOPS, External Secrets Operator |
| 3.6 | Мультикластерний GitOps | COMPLEX | 55-65 хв | Управління флотом, bootstrapping, hub-spoke патерни |
Загальний час: ~4-5 годин
Шлях навчання
Розділ «Шлях навчання»Модуль 3.1: Що таке GitOps? │ ├── Розуміння чотирьох принципів ├── Вивчення моделей pull vs push └── Reconciliation у дії │ ▼Модуль 3.2: Стратегії репозиторіїв │ ├── Вибір monorepo vs polyrepo ├── Розділення додатків та конфігурації └── Дизайн структури директорій │ ▼Модуль 3.3: Просування по середовищах │ ├── Promotion на основі директорій ├── Стратегії тегування образів └── Патерни progressive delivery │ ▼Модуль 3.4: Виявлення дрейфу │ ├── Ідентифікація типів дрейфу ├── Налаштування детекції └── Вибір стратегії виправлення │ ▼Модуль 3.5: Секрети в GitOps │ ├── Розуміння проблеми секретів ├── Впровадження патернів шифрування └── Використання зовнішніх сховищ │ ▼Модуль 3.6: Мультикластерний GitOps │ ├── Дизайн архітектури флоту ├── Автоматизація bootstrapping кластерів └── Впровадження успадкування конфігураціїКлючові концепції
Розділ «Ключові концепції»Чотири принципи GitOps (OpenGitOps)
Розділ «Чотири принципи GitOps (OpenGitOps)»- Декларативність - стан системи виражається декларативно
- Версіонованість та незмінність - бажаний стан зберігається так, що забезпечується незмінність та версіонування
- Автоматичне отримання (Pull) - агенти автоматично затягують бажаний стан із джерела
- Безперервне узгодження - агенти безперервно спостерігають та узгоджують стан системи
Pull vs Push
Розділ «Pull vs Push»| Аспект | Модель Push | Модель Pull (GitOps) |
|---|---|---|
| Хто деплоїть | Конвеєр CI/CD | Агент у кластері |
| Креденшали | Конвеєр потребує доступу до кластера | Кластер потребує лише доступу до Git |
| Дрейф | Може виникнути непомітно | Автоматично виправляється |
| Аудит | Розкиданий по логах конвеєрів | Централізований в історії Git |
Петля узгодження (Reconciliation Loop)
Розділ «Петля узгодження (Reconciliation Loop)»┌─────────────────────────────────────────────────────────┐│ Git Репозиторій ││ (Бажаний стан) │└────────────────────────┬────────────────────────────────┘ │ │ 1. Агент перевіряє зміни ▼┌─────────────────────────────────────────────────────────┐│ GitOps Агент ││ (ArgoCD, Flux тощо) ││ ││ 2. Порівнює бажаний стан vs фактичний стан ││ 3. Якщо є різниця, узгоджує │└────────────────────────┬────────────────────────────────┘ │ │ 4. Застосовує зміни до кластера ▼┌─────────────────────────────────────────────────────────┐│ Kubernetes Кластер ││ (Фактичний стан) │└─────────────────────────────────────────────────────────┘Пов’язані треки
Розділ «Пов’язані треки»Основи (почніть тут, якщо ці концепції нові для вас):
- Системне мислення - петлі зворотного зв’язку та емерджентність
- Надійність інженерних систем - принципи управління змінами
Дисципліни (застосування GitOps у контексті):
- SRE Дисципліна - операціоналізація GitOps для надійності
- DevSecOps Дисципліна - безпека в конвеєрах GitOps
- Platform Engineering - самообслуговувані GitOps платформи
- IaC Дисципліна - Infrastructure as Code з доставкою через GitOps
Інструменти (глибоке занурення в конкретний софт):
- GitOps Інструменти - ArgoCD, Flux та супутні інструменти
Інструменти, з якими ви зустрінетеся
Розділ «Інструменти, з якими ви зустрінетеся»| Інструмент | Призначення |
|---|---|
| ArgoCD | Kubernetes-native GitOps контролер |
| Flux | Набір інструментів GitOps від CNCF |
| Kustomize | Кастомізація конфігурацій |
| Helm | Управління пакетами (чартами) |
| Sealed Secrets | Шифрування секретів для Git |
| SOPS | Шифрування секретів |
| External Secrets Operator | Синхронізація із зовнішніми сховищами |
План вивчення
Розділ «План вивчення»- Модуль 3.1: Що таке GitOps? - розуміння принципів
- Модуль 3.2: Стратегії репозиторіїв - дизайн структури
- Модуль 3.3: Просування по середовищах - впровадження flow
- Модуль 3.4: Виявлення дрейфу - налаштування детекції та auto-heal
- Модуль 3.5: Секрети в GitOps - безпечне управління секретами
- Модуль 3.6: Мультикластерний GitOps - масштабування до флоту кластерів
“GitOps: Операції через Pull Requests.”