Код-ревью Senior GitOps и ArgoCD обновлено

Код-ревью: Application для прода

Вопрос

Это Application для production-окружения. Найдите проблемы.

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: payments-prod
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://git.example.ru/team/payments.git
    targetRevision: HEAD
    path: k8s
  destination:
    server: https://kubernetes.default.svc
    namespace: payments
  syncPolicy:
    automated:
      prune: true
      selfHeal: false

Коротко

Здесь всё «работает», но прод не защищён: любой мерж сразу едет в продакшн, проект без ограничений, дрейф не исправляется, а случайное удаление файла снесёт данные. В нормальной схеме у prod свой каталог с явным тегом, AppProject с белым списком и продвижение через merge request.

Что должен найти ревьюер

  1. Безопасностьстрока 7
    Проект default разрешает любые источники и кластеры. Для прода нужен отдельный AppProject с ограничением репозиториев, namespace и типов ресурсов.
  2. Ошибкастрока 10
    targetRevision: HEAD для прода: в прод уходит любой коммит в основную ветку без продвижения. Нужен отдельный каталог или ветка окружения либо фиксированная ревизия.
  3. Ошибкастрока 11
    Один path: k8s без разделения окружений: stage и prod нельзя различить и продвигать отдельно. Нужны overlays или отдельные каталоги.
  4. Ошибкастрока 18
    selfHeal: false при автосинхронизации: ручные правки в проде останутся, видно будет только статус OutOfSync. Для прода стоит включить или явно мониторить дрейф.
  5. Ошибкастрока 17
    prune: true без защиты критичных ресурсов: удаление файла из git удалит, например, PVC с данными. Нужна аннотация Prune=false на таких ресурсах.

Разбор

Здесь всё «работает», но прод не защищён: любой мерж сразу едет в продакшн, проект без ограничений, дрейф не исправляется, а случайное удаление файла снесёт данные. В нормальной схеме у prod свой каталог с явным тегом, AppProject с белым списком и продвижение через merge request.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.