Финал GitOps — ArgoCD и деплой — Презентация
Длительность: ~10 минут Цель: Студенты понимают GitOps как философию, как ArgoCD её реализует и почему это меняет всё в их подходе к деплоям. Нагнетаем азарт — это кульминация курса.
Слайд 1: Проблема с “kubectl apply”
Начнём с истории-ужастика.
Два часа ночи. Продакшн-деплой упал. Команда в панике. Кто-то спрашивает: “Что вообще сейчас работает в кластере?” Никто не знает. Три разных инженера запускали kubectl apply в разное время сегодня. Один из них использовал манифест из ветки, которая так и не была смержена. Другой подправил что-то вручную через kubectl edit. Состояние кластера не соответствует ничему в Git.
Это называется дрейф конфигурации, и это самый частый источник кошмаров с деплоями.
А теперь представьте обратное. Каждое изменение в кластере проходит через Git. Каждое. Без исключений. Если этого нет в Git — оно не применяется. Хотите знать, что работает в продакшне? Смотрите ветку main. Вот и всё. Git — это истина.
Это и есть GitOps.
Интересный факт: Термин “GitOps” был придуман Алексисом Ричардсоном из Weaveworks в 2017 году. Начиналось всё с поста в блоге. Сегодня у CNCF есть целая рабочая группа, посвящённая GitOps, и даже самые осторожные в плане безопасности финансовые учреждения — банки, которые не позволят вам
sshна сервер без трёх согласований — используют GitOps для продакшн-деплоев.
Слайд 2: GitOps в одной диаграмме
Вот цикл. Запомните его, потому что когда вы поймёте этот цикл — вы поймёте GitOps:
Developer pushes code to Git
|
v
ArgoCD watches the Git repo (polling or webhook)
|
v
ArgoCD compares Git state vs. Cluster state
|
v
Are they different?
/ \
No Yes
| |
v v
Do nothing Sync: apply the diff to the cluster
|
v
Cluster now matches Git
|
v
Back to watching
Вот и всё. Вся модель. Git — это желаемое состояние. Kubernetes — это фактическое состояние. Единственная задача ArgoCD — привести их в соответствие.
Никакого kubectl apply. Никаких скриптов деплоя. Никаких Jenkins-пайплайнов, которые подключаются по ssh к серверу и запускают команды. Вы пушите в Git, и кластер конвергирует к нужному состоянию. Если кто-то вручную изменит что-то в кластере, ArgoCD обнаружит дрейф и откатит всё к тому, что объявлено в Git.
Git побеждает. Всегда.
Слайд 3: Почему ArgoCD
Есть несколько GitOps-инструментов: ArgoCD, Flux, Jenkins X, Rancher Fleet. Мы используем ArgoCD, потому что:
- Визуальный дашборд — веб-UI, который показывает, что синхронизировано, что рассинхронизировано и что сломано. Вы увидите его сегодня.
- Проверен в бою — graduated-проект CNCF. Используется Intuit (TurboTax), Red Hat, Tesla, IBM и тысячами команд поменьше.
- Декларативная конфигурация — вы описываете, что хотите, в YAML. ArgoCD делает остальное.
- Справляется со сложностью — поддерживает Helm-чарты, Kustomize-оверлеи, сырые манифесты и Jsonnet. Мы сегодня используем сырые манифесты, но тот же инструмент масштабируется до огромных деплоев.
- Самовосстановление — если кто-то выполнит
kubectl deleteна ресурсе, который должен существовать, ArgoCD вернёт его обратно. Кластер самовосстанавливается на основе того, что объявлено в Git.
Вот как выглядит модель ArgoCD на практике:
# argocd/application.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: ai-coderrank
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/YOUR_USER/ai-coderrank.git
targetRevision: main
path: k8s
destination:
server: https://kubernetes.default.svc
namespace: default
syncPolicy:
automated:
prune: true
selfHeal: true
Этот файл говорит: “Следи за директорией k8s/ в этом GitHub-репозитории. Когда она изменится, синхронизируй с namespace default. Если кластер дрейфует — восстанавливай автоматически.”
Один YAML-файл. Это вся конфигурация деплоя, которая вам нужна.
Слайд 4: Три принципа
GitOps стоит на трёх принципах. Давайте сделаем их конкретными:
1. Декларативная конфигурация Вы не пишете скрипты, которые говорят “выполни это, потом то, потом проверь вот это”. Вы пишете YAML, который говорит “я хочу 2 реплики этого контейнера на порту 3000 с такими переменными окружения”. Kubernetes и ArgoCD сами разбираются, как до этого добраться.
Аналогия: это разница между тем, чтобы дать человеку пошаговые указания (“поверните налево, потом направо, потом снова налево”) и дать ему адрес, позволив Google Maps проложить маршрут. Декларативный подход = адрес. Императивный = указания.
2. Git как единственный источник истины
Каждое изменение — это коммит. У каждого коммита есть автор, временная метка, сообщение и diff. Вы получаете полный журнал аудита бесплатно. Хотите знать, кто изменил количество реплик с 2 на 5 в прошлый вторник? git log. Хотите откатить? git revert. Ваша история деплоев — ЭТО ваша история Git.
3. Автоматическое согласование Система непрерывно сравнивает желаемое состояние (Git) с фактическим состоянием (кластер) и исправляет любой дрейф. Вы не запускаете деплои. Они происходят, потому что состояния разошлись.
Слайд 5: Что мы сейчас будем делать
Вот план практической части. Следите мысленно:
- Установить ArgoCD на k3s-кластер — одна команда
kubectl apply(последняя, которую вы когда-либо запустите вручную для деплоев) - Получить пароль администратора и открыть UI ArgoCD через port-forward
- Применить ArgoCD Application — указать на репозиторий ai-coderrank
- Наблюдать первую синхронизацию — ArgoCD читает манифесты из
k8s/и применяет их - Открыть приложение наружу — настроить NodePort для доступа из интернета
- Запушить тёмную тему — коммит и push, затем наблюдаем, как ArgoCD обнаруживает и деплоит изменение
- Открыть в браузере — ваше приложение, в интернете, с тёмной темой, задеплоенное через GitOps
А потом, потому что это Claude Code 101 и мы не останавливаемся на “оно работает”:
- Использовать
/loopдля мониторинга статуса синхронизации ArgoCD в реальном времени - Использовать
/scheduleдля настройки регулярной проверки здоровья - Использовать удалённое управление для мониторинга всего с телефона
Слайд 6: /loop, /schedule и удалённое управление
Три функции, которые превращают Claude Code из инструмента разработки в инструмент эксплуатации.
/loop — запускает любую команду или промпт с повторяющимся интервалом:
/loop 30s check if ArgoCD sync is complete for ai-coderrank
Claude будет проверять каждые 30 секунд и докладывать. Идеально для наблюдения за раскаткой деплоев, мониторинга статуса подов или ожидания завершения медленной миграции.
/schedule — создаёт повторяющиеся облачные задачи, которые выполняются по cron-расписанию:
/schedule create "Daily health check" --cron "0 9 * * *" \
--prompt "Check the status of all pods in the ai-coderrank namespace, \
verify the app responds on the health endpoint, and report any issues"
Это запускает Claude-агента в облаке — по расписанию, без необходимости сидеть за компьютером. Утренние проверки здоровья, ночные сканирования безопасности, еженедельные аудиты зависимостей. Настроил и забыл.
Удалённое управление — к сессиям Claude Code можно подключаться удалённо. Используйте /remote-control внутри активной сессии или запустите Claude с --remote-control, затем подключитесь через браузер телефона или приложение Claude. Можете отслеживать деплой с дивана, одобрить синхронизацию из такси или проверить логи подов из кровати. (Мы не осуждаем.)
Слайд 7: Общая картина
Давайте отступим на шаг назад. Посмотрите, что вы построили за эти 12 блоков:
You write code
|
v
Claude Code helps you implement, review, test
|
v
Git commit + push
|
v
GitHub Actions runs CI (Block 10)
|
v
ArgoCD detects the change (Block 12 — RIGHT NOW)
|
v
Kubernetes applies the new state
|
v
App is live on the internet
|
v
/schedule monitors health daily
/loop watches deploys in real time
Remote control lets you manage from anywhere
Это полноценный, современный, продакшн-качества пайплайн разработки и деплоя. Не учебная игрушка. Не симуляция. Настоящая вещь.
Вы всё это построили. С Claude Code.
Готовы проверить себя?
Пройти квиз →