Структура GitOps-репозитория
Вопрос
Интервьюер: «Спроектируйте структуру GitOps для 50 сервисов, трёх окружений и двух кластеров прода. Как продвигается релиз?»
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Разделение репозиториев: код приложений и deploy-репозиторий (или монорепо с чёткими каталогами)
Base плюс overlays по окружениям (Kustomize) или values по окружениям (Helm)
Генерация Application через ApplicationSet по каталогам и кластерам
Продвижение: автоматически в dev, через MR с ревью в prod, тот же тег
Права: AppProject на команду, защищённые ветки и CODEOWNERS для prod
Секреты через External Secrets, мониторинг синхронизации и дрейфа
Что могут спросить следом
- Как выкатить в два прод-кластера не одновременно?
- Что делать, если сервису нужна срочная правка в проде ночью?
Разбор
Образцовый ответ: «Код сервисов в своих репозиториях, желаемое состояние в одном deploy-репозитории: apps/<сервис>/base и apps/<сервис>/overlays/{dev,stage,prod}. Application генерирует ApplicationSet с matrix-генератором: каталоги сервисов на кластеры. CI сервиса после сборки сам коммитит тег в overlay dev. В stage и prod тег переносит merge request, prod требует ревью владельца через CODEOWNERS. Два прод-кластера обновляются по очереди: сначала один, после проверки метрик второй, отдельным коммитом или через progressive sync. На команду свой AppProject с её namespace. Секреты через External Secrets из Vault. Ночная срочная правка тоже коммит, просто с упрощённым ревью, иначе selfHeal её откатит».
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.