Блок 12 Презентация

Финал 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, потому что:

  1. Визуальный дашборд — веб-UI, который показывает, что синхронизировано, что рассинхронизировано и что сломано. Вы увидите его сегодня.
  2. Проверен в бою — graduated-проект CNCF. Используется Intuit (TurboTax), Red Hat, Tesla, IBM и тысячами команд поменьше.
  3. Декларативная конфигурация — вы описываете, что хотите, в YAML. ArgoCD делает остальное.
  4. Справляется со сложностью — поддерживает Helm-чарты, Kustomize-оверлеи, сырые манифесты и Jsonnet. Мы сегодня используем сырые манифесты, но тот же инструмент масштабируется до огромных деплоев.
  5. Самовосстановление — если кто-то выполнит 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: Что мы сейчас будем делать

Вот план практической части. Следите мысленно:

  1. Установить ArgoCD на k3s-кластер — одна команда kubectl apply (последняя, которую вы когда-либо запустите вручную для деплоев)
  2. Получить пароль администратора и открыть UI ArgoCD через port-forward
  3. Применить ArgoCD Application — указать на репозиторий ai-coderrank
  4. Наблюдать первую синхронизацию — ArgoCD читает манифесты из k8s/ и применяет их
  5. Открыть приложение наружу — настроить NodePort для доступа из интернета
  6. Запушить тёмную тему — коммит и push, затем наблюдаем, как ArgoCD обнаруживает и деплоит изменение
  7. Открыть в браузере — ваше приложение, в интернете, с тёмной темой, задеплоенное через GitOps

А потом, потому что это Claude Code 101 и мы не останавливаемся на “оно работает”:

  1. Использовать /loop для мониторинга статуса синхронизации ArgoCD в реальном времени
  2. Использовать /schedule для настройки регулярной проверки здоровья
  3. Использовать удалённое управление для мониторинга всего с телефона

Слайд 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.


Готовы проверить себя?

Пройти квиз →