GitOps — єдине джерело правди
Класична ситуація: черговий інженер вносить критичну зміну безпосередньо в кластер через kubectl apply під час інциденту. Через тиждень CI/CD перезаписує цю зміну — інцидент повторюється, команда втрачає години на з'ясування причин. В одному з наших проєктів фіксували до 47 розходжень за місяць на трьох кластерах з 50 мікросервісами. Ми стикаємося з цим регулярно, тому пропонуємо GitOps впровадження під ключ: git стає єдиним джерелом правди про стан інфраструктури. Будь-яка зміна — через Pull Request з обов'язковим рев'ю та аудитом. Це виключає ручне втручання та гарантує відтворюваність.
GitOps — не просто інструмент, а методологія управління інфраструктурою, заснована на декларативності, версіонуванні та автоматичній синхронізації. ArgoCD і Flux — два основні інструменти, кожен зі своїми особливостями. ArgoCD надає зручний веб-інтерфейс і підходить для команд, які починають шлях GitOps. Flux більш Kubernetes-native і кращий для multi-tenant кластерів. Ми обираємо інструмент під задачу клієнта, а не нав'язуємо один.
Наша команда сертифікованих Kubernetes-інженерів з 5+ річним досвідом впровадила GitOps для 30+ проєктів — від стартапів до enterprise. Середня економія часу на деплой — 40%, кількість інцидентів знижується в 2-3 рази, а час відновлення (MTTR) скорочується на 60%. Оцінімо ваш проєкт і запропонуємо оптимальне рішення. Отримайте консультацію вже сьогодні.
Які проблеми вирішуємо за допомогою GitOps?
Ручні зміни в кластері. Навіть досвідчені інженери іноді виконують kubectl scale під час інциденту. Без GitOps ця зміна не потрапляє в git — дрейф неминучий. GitOps автоматично фіксує будь-які розходження та відкочує кластер до стану з репозиторію.
Дрейф конфігурації. Ми бачили проєкти, де різниця між staging і production сягала 30+ параметрів. GitOps з Kustomize-оверлеями дозволяє тримати базову конфігурацію один раз і перевизначати лише відмінності між середовищами. Це знижує ймовірність помилок на 80%. Середній збиток від одного невиявленого дрейфу — значний за рахунок простоїв і відкатів.
Управління секретами. Зберігати Secret у plaintext в git не можна. Використовуємо Sealed Secrets або External Secrets Operator — зашифровані секрети комітяться в репозиторій, а контролер кластера розшифровує їх локально. Альтернатива — зберігати посилання на Vault або AWS Secrets Manager. Обидва підходи безпечні та відповідають GitOps-принципам.
ArgoCD vs Flux: що обрати?
| Характеристика | ArgoCD | Flux |
|---|---|---|
| Інтерфейс | Вбудований UI з графом ресурсів | Тільки CLI / CRD (є Weave GitOps) |
| Принцип роботи | Polling кожні 3 хв (дефолт) | Webhook + watch для near real-time |
| Управління | Application CRD |
GitRepository, HelmRelease, Kustomization |
| Multi-tenant | Через AppProject з RBAC | Нативна ізоляція через Kustomization |
| Drift detection | Вбудований, з selfHeal |
Автоматичний реконсилінг |
| Популярність | Вища, більша спільнота | Нижча, але активний розвиток |
На практиці: якщо команда хоче візуальний контроль і низький поріг входу — обираємо ArgoCD. Якщо пріоритет — все як код без UI і максимальна інтеграція з Kustomize — Flux. Ми допоможемо з вибором під вашу екосистему.
Як працює Drift Detection?
Drift — розходження між станом у git та реальним кластером. Воно виникає через ручні kubectl, дії HPA, зміни контролерів. ArgoCD за замовчуванням перевіряє кожні 3 хвилини. При виявленні дрейфу застосунок переходить у OutOfSync. Дія залежить від політики: manual — тільки сигналізація, automatic — негайний відкат.
Найсуворіший режим — automatic sync з selfHeal: true. ArgoCD примусово повертає кластер до стану з git, навіть якщо зміни внесені вручну. Це знищує будь-які несанкціоновані правки. Але потрібно розуміти ризики: якщо черговий збільшив replicas для боротьби з навантаженням — ArgoCD відкотить назад. Тому рекомендуємо selfHeal: true тільки з добре налаштованим HPA, який враховує git-конфігурацію.
spec: syncPolicy: automated: prune: true # видаляти ресурси, яких немає в git selfHeal: true # відкочувати ручні зміни syncOptions: - CreateNamespace=true prune: true — окремо важлива опція. Без неї видалені з git ресурси продовжують жити в кластері. Вмикаємо обережно: якщо випадково видалити CRD з репозиторію — ArgoCD видалить всі екземпляри цього ресурсу. Синхронізація з каскадним видаленням потребує рев'ю.
Sealed Secrets і External Secrets Operator: що безпечніше?
Sealed Secrets — шифрує Secret публічним ключем кластера через kubeseal. Зашифрований SealedSecret можна комітити в git. Всередині кластера контролер розшифровує його приватним ключем.
kubectl create secret generic db-password \ --from-literal=password=supersecret \ --dry-run=client -o yaml | \ kubeseal --controller-namespace kube-system \ --format yaml > db-password-sealed.yaml Проблема: залежність від ключа кластера. При перестворенні кластера потрібно перевидати всі Sealed Secrets. Рекомендуємо бекапити ключі:
kubectl get secret -n kube-system \ -l sealedsecrets.bitnami.com/sealed-secrets-key \ -o yaml > sealed-secrets-key-backup.yaml External Secrets Operator (ESO) — не зберігає секрети в git, а посилається на зовнішнє сховище (Vault, AWS Secrets Manager, GCP Secret Manager). ESO створює Secret у кластері, синхронізуючи його з джерела. Більш складний setup, але кращий для централізованого управління та ротації. Для більшості клієнтів ми обираємо ESO — він дає незалежність від кластера та гнучкість.
Процес GitOps впровадження під ключ
- Аудит поточної інфраструктури — інвентаризація кластерів, сервісів, CI/CD, секретів. Фіксуємо дрейф конфігурації, невикористовувані ресурси, вразливості.
- Проектування GitOps-архітектури — вибір інструменту (ArgoCD/Flux), структура репозиторіїв (моно- або multi-repo), схема multi-cluster, політики RBAC та NetworkPolicy.
- Розгортання контролера — встановлення ArgoCD або Flux, налаштування HA, інтеграція з SSO, бекап конфігурації.
- Міграція сервісів — перенесення конфігурацій у GitOps-репозиторій, поступове перемикання з ручних деплоїв. Для кожного сервісу — окремий Application або Kustomization.
- Налаштування секретів — впровадження Sealed Secrets або ESO, генерація ключів, налаштування ротації.
- Тестування Drift Detection — перевірка
selfHealна тестовому кластері, відпрацювання сценаріїв. - Переведення в експлуатацію — документування процесів, навчання команди, передача runbook. Після завершення гарантуємо зниження MTTR з 4 годин до 45 хвилин.
Що входить у роботу
- Повністю налаштований кластер GitOps (ArgoCD/Flux) з CI/CD інтеграцією
- Структура GitOps-репозиторіїв з Kustomize-оверлеями для середовищ
- Політика Drift Detection з
selfHeal(за погодженням) - Рішення для управління секретами (Sealed Secrets або ESO)
- Runbook для чергових і документація за процесами
- Навчання команди (воркшоп 1 день)
- Гарантія на налаштування — 3 місяці з супроводом
Орієнтовні терміни та економія
| Задача | Термін |
|---|---|
| Аудит і проектування | 2-3 дні |
| Встановлення ArgoCD/Flux | 1-2 дні |
| Міграція одного сервісу | 2-3 дні |
| Налаштування Sealed Secrets або ESO | 1-2 дні |
| Повна міграція (5-10 сервісів) | 2-4 тижні |
| Multi-cluster (2+ кластери) | +1-2 тижні |
Вартість розраховується індивідуально після аудиту. Середня економія від GitOps впровадження — до значної суми на рік за рахунок скорочення інцидентів та прискорення деплоїв. Додатково такий підхід економить 120 людино-годин на місяць за рахунок автоматизації типових операцій.
Типові помилки в GitOps і як їх уникнути
- Один застосунок — один Application. Не намагайтеся засунути всю інфраструктуру в один
Application. Синхронізація сповільнюється, RBAC не працює. Дробіть на логічні одиниці. - Helm + ArgoCD без міграції. Якщо Helm-реліз вже існує, не можна просто підключити ArgoCD — будуть конфлікти. Робіть
helm uninstallабо використовуйтеargocd app createз флагами adoption. - Порядок створення CRD. CRD та його екземпляри в одному
Application— помилка. Використовуйте sync waves:argocd.argoproj.io/sync-wave: "-1"для CRD,"0"для ресурсів. - Відсутність бекапу Sealed Secrets ключів. При аварійному відновленні кластера секрети стануть недоступні. Бекап — обов'язковий.
Методологія GitOps описана на Wikipedia, а її реалізація в Kubernetes — в офіційній документації. Замовте GitOps впровадження під ключ — оцінімо ваш проєкт і підготуємо план міграції за 2 дні. Отримайте консультацію сертифікованого інженера.







