Короткий ответ
ArgoCD продолжает считать Git источником истины: если включена автоматическая синхронизация (`automated sync`) с `selfHeal: true`, он автоматически откатит ручное изменение обратно к тому, что описано в репозитории; правильный способ внести изменение — сначала поправить манифест в Git и дождаться синхронизации, а не менять ресурс напрямую в кластере.
Как это работает подробнее
ArgoCD периодически (и по webhook) сравнивает фактическое состояние ресурсов в кластере с desired state из Git. Статус `OutOfSync` означает обнаруженное расхождение. С `selfHeal: true` расхождение исправляется автоматически в течение следующего цикла сверки; без `selfHeal` ресурс просто помечается как рассинхронизированный, пока кто-то не нажмёт Sync вручную или не исправит разницу.
Пример кода
example.sh
argocd app get myapp
# Sync Status: OutOfSync
# HEALTH: Healthy
# Через несколько минут автоматической сверки (selfHeal: true):
argocd app get myapp
# Sync Status: Synced <- ручное изменение было отменено автоматическиЧто использовать на практике
- На практике. ручные изменения прямо в кластере («kubectl edit в проде») — частая причина путаницы в GitOps-командах: инженер решает проблему «здесь и сейчас», а через несколько минут ArgoCD незаметно откатывает фикс, и проблема возвращается. Правильный процесс — экстренный hotfix через Git (можно с ускоренным, но всё равно через pull request/прямой коммит процессом) либо временная приостановка auto-sync (`argocd app set --sync-policy none`) на время ручного вмешательства с последующим обязательным переносом изменений в Git.
- Пример. Ожидаемое поведение: без обновления Git ручная правка исчезает при следующей сверке; если изменение действительно нужно — оно вносится коммитом в репозиторий манифестов, и уже оттуда ArgoCD применяет его штатно.
Подводные камни
- Частые ошибки. считают, что `kubectl edit` — быстрый и безопасный способ исправить прод в GitOps-модели; забывают вернуть `selfHeal`/auto-sync обратно после временного отключения, оставляя кластер без защиты от дрифта надолго.