Перейти до вмісту

Дисципліна GitOps

Git як єдине джерело істини для інфраструктури та застосунків.

GitOps — це операційний фреймворк, який застосовує найкращі практики DevOps для автоматизації інфраструктури — контроль версій, співпраця, відповідність вимогам та CI/CD — до конфігурації інфраструктури. У GitOps вся система описується декларативно в Git, а автоматизовані процеси забезпечують відповідність фактичного стану бажаному.

Після завершення цього треку ви зможете:

  • Пояснювати принципи GitOps та модель узгодження (reconciliation)
  • Проєктувати стратегії репозиторіїв для різних структур команд
  • Впроваджувати воркфлоу просування між середовищами (promotion)
  • Налаштовувати виявлення дрейфу конфігурації та автоматичне виправлення
  • Безпечно керувати секретами у воркфлоу GitOps
  • Проєктувати мультикластерний GitOps для управління флотом кластерів

Перед початком цього треку ви повинні:

  • Розуміти основи Kubernetes (deployments, services, namespaces)
  • Вміти працювати з Git (гілки, PR, мерджі)
  • Мати досвід роботи з конфігураційними файлами YAML
  • Пройти базовий трек Системне мислення (рекомендовано)
#МодульСкладністьЧасОпис
3.1Що таке GitOps?MEDIUM35-45 хвПринципи GitOps, pull vs push, reconciliation
3.2Стратегії репозиторіївMEDIUM35-45 хвMonorepo vs polyrepo, додатки vs конфігурація
3.3Просування по середовищахMEDIUM40-50 хвPromotion на основі директорій, progressive delivery
3.4Виявлення дрейфуMEDIUM40-50 хвТипи дрейфу, стратегії auto-heal vs alert
3.5Секрети в GitOpsCOMPLEX50-60 хвSealed Secrets, SOPS, External Secrets Operator
3.6Мультикластерний GitOpsCOMPLEX55-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)»
  1. Декларативність - стан системи виражається декларативно
  2. Версіонованість та незмінність - бажаний стан зберігається так, що забезпечується незмінність та версіонування
  3. Автоматичне отримання (Pull) - агенти автоматично затягують бажаний стан із джерела
  4. Безперервне узгодження - агенти безперервно спостерігають та узгоджують стан системи
АспектМодель PushМодель Pull (GitOps)
Хто деплоїтьКонвеєр CI/CDАгент у кластері
КреденшалиКонвеєр потребує доступу до кластераКластер потребує лише доступу до Git
ДрейфМоже виникнути непомітноАвтоматично виправляється
АудитРозкиданий по логах конвеєрівЦентралізований в історії Git

Петля узгодження (Reconciliation Loop)

Розділ «Петля узгодження (Reconciliation Loop)»
┌─────────────────────────────────────────────────────────┐
│ Git Репозиторій │
│ (Бажаний стан) │
└────────────────────────┬────────────────────────────────┘
│ 1. Агент перевіряє зміни
┌─────────────────────────────────────────────────────────┐
│ GitOps Агент │
│ (ArgoCD, Flux тощо) │
│ │
│ 2. Порівнює бажаний стан vs фактичний стан │
│ 3. Якщо є різниця, узгоджує │
└────────────────────────┬────────────────────────────────┘
│ 4. Застосовує зміни до кластера
┌─────────────────────────────────────────────────────────┐
│ Kubernetes Кластер │
│ (Фактичний стан) │
└─────────────────────────────────────────────────────────┘

Основи (почніть тут, якщо ці концепції нові для вас):

Дисципліни (застосування GitOps у контексті):

Інструменти (глибоке занурення в конкретний софт):

Інструменти, з якими ви зустрінетеся

Розділ «Інструменти, з якими ви зустрінетеся»
ІнструментПризначення
ArgoCDKubernetes-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.”