DevOps 2 мин чтения

Современный подход DevOps: Стратегии развертывания GitOps и автоматизация для приложений Kubernetes с помощью Argo CD

PROFSCODE Ekibi 19 июл 2026
Paylaş:
GitOps в Kubernetes: Руководство по декларативному непрерывному развертыванию с Argo CD

GitOps в Kubernetes: Руководство по декларативному непрерывному развертыванию с Argo CD

В современных процессах разработки программного обеспечения быстрое и надежное развертывание приложений имеет решающее значение. В то время как традиционные подходы CI/CD часто вносят операционные сложности, философия GitOps направлена на снижение этой сложности и упрощение процессов развертывания. В этом руководстве вы шаг за шагом узнаете, как реализовать GitOps в среде Kubernetes с использованием Argo CD, популярного инструмента.

Философия GitOps и ее преимущества

GitOps — это «декларативный» подход, который определяет вашу операционную инфраструктуру и состояние приложений через репозиторий Git. Git служит как единым источником истины (Single Source of Truth), так и журналом аудита (audit trail). Любое изменение инфраструктуры или приложения начинается с коммита в Git, и инструменты автоматизации обнаруживают этот коммит для применения желаемого состояния. Этот подход предлагает значительные преимущества, такие как легкий откат, аудит и стандартизация состояния ваших систем через историю Git.

Что такое Argo CD и почему его следует предпочесть?

Argo CD — это декларативный, основанный на GitOps инструмент непрерывной доставки для Kubernetes. Он работает как контроллер в вашем кластере Kubernetes и постоянно отслеживает целевое состояние приложения (манифесты Kubernetes), определенное в вашем репозитории Git. Если он обнаруживает расхождение (drift) между текущим состоянием кластера и целевым состоянием в Git, он автоматически синхронизирует это состояние. Основные преимущества Argo CD включают:

  • Декларативная и автоматическая синхронизация: Состояния приложений определяются в Git, и Argo CD автоматически синхронизирует это состояние с кластером.
  • Богатый веб-интерфейс: Предоставляет комплексный веб-интерфейс для мониторинга живого статуса приложения, здоровья синхронизации и истории.
  • Обнаружение и коррекция расхождений: Обнаруживает ручные изменения в кластере и может вернуть их к состоянию, определенному в Git (или уведомить).
  • Простой откат: Благодаря преимуществу контроля версий, предоставляемому Git, вы можете легко откатиться к любому предыдущему состоянию приложения.
  • Поддержка нескольких кластеров: Управляйте несколькими кластерами Kubernetes из одного экземпляра Argo CD.

Шаг 1: Установка Argo CD в ваш кластер Kubernetes

Установка Argo CD в ваш кластер Kubernetes довольно проста. Сначала создадим выделенное пространство имен для Argo CD, а затем применим манифесты установки:

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

После завершения установки убедитесь, что поды Argo CD работают:

kubectl get pods -n argocd

Для доступа к веб-интерфейсу Argo CD вы можете открыть службу argocd-server извне с помощью NodePort или Port Forwarding. Вот простой пример Port Forwarding:

kubectl port-forward svc/argocd-server -n argocd 8080:443

Теперь вы можете получить доступ к веб-интерфейсу по адресу https://localhost:8080. Имя пользователя для первого входа — admin. Используйте следующую команду для получения пароля:

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo

Шаг 2: Развертывание первого приложения с помощью GitOps

Теперь давайте развернем простое приложение Nginx, используя подход GitOps. Сначала создайте репозиторий Git, содержащий манифесты Kubernetes для приложения. Например, предположим, что репозиторий находится по адресу git@github.com:your-username/argocd-demo.git, и добавьте в него файл с именем nginx-app.yaml:

# nginx-app.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.19.10
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: ClusterIP

Закоммитьте и отправьте этот файл в ваш репозиторий Git. Далее мы создадим ресурс Application, чтобы представить это приложение Argo CD. Этот ресурс сообщает Argo CD, где находится приложение (репозиторий Git) и куда оно должно быть развернуто (кластер Kubernetes). Вы можете сделать это либо с помощью CLI Argo CD, либо напрямую применив к Kubernetes. Давайте используем CLI:

argocd app create nginx-gitops \
  --repo https://github.com/your-username/argocd-demo.git \
  --path . \
  --dest-server https://kubernetes.default.svc \
  --dest-namespace default \
  --sync-policy automated --self-heal --prune

Эта команда предписывает Argo CD создать новое приложение с именем nginx-gitops, использовать манифесты из указанного репозитория Git и развернуть их в пространстве имен default. --sync-policy automated включает автоматическую синхронизацию, --self-heal гарантирует, что изменения в кластере будут возвращены к состоянию, определенному в Git, а --prune гарантирует, что ресурсы, удаленные из Git, также будут удалены из кластера.

Шаг 3: Наблюдение и управление развертыванием

После создания приложения вы можете проверить его статус из веб-интерфейса Argo CD или с помощью CLI:

argocd app get nginx-gitops
argocd app sync nginx-gitops

Через некоторое время Argo CD извлечет манифесты из вашего репозитория и применит их к вашему кластеру Kubernetes. Вы увидите, что приложение работает исправно и синхронизировано с Git. Если вы внесете изменения в файл nginx-app.yaml в вашем репозитории Git и закоммитите его (например, изменив количество реплик на 3), Argo CD автоматически обнаружит это изменение и применит его к вашему кластеру.

Лучшие практики использования GitOps и Argo CD

  • Единый источник истины: Храните все конфигурации вашего приложения и инфраструктуры в одном репозитории Git, чтобы упростить аудит.
  • Стратегии для нескольких сред: Используйте отдельные каталоги или ветки для различных сред, таких как разработка, тестирование и производство. Настраивайте одни и те же базовые манифесты для разных сред с помощью таких инструментов, как Kustomize или Helm.
  • Развертывания с нулевым доверием: Работа Argo CD внутри кластера Kubernetes, требующая меньшего внешнего доступа, снижает риски безопасности.
  • Возможность отката: Используйте преимущества контроля версий Git для быстрого и надежного отката в случае неудачных развертываний.
  • Оповещения и уведомления: Интегрируйте Argo CD с инструментами мониторинга, такими как Prometheus, Grafana, и системами уведомлений, такими как Slack, Email, чтобы мгновенно узнавать об аномалиях или проблемах синхронизации.

Заключение

GitOps является краеугольным камнем современных практик DevOps, предлагая мощную методологию для упрощения, автоматизации и повышения безопасности развертывания приложений в среде Kubernetes. Благодаря таким инструментам, как Argo CD, управление вашей инфраструктурой и приложениями как кодом никогда не было таким простым. Следуя шагам этого руководства, вы сможете настроить свой собops-рабочий процесс и произвести революцию в процессах доставки программного обеспечения.

Назад к блогу

Комментарии (0)

Пока нет комментариев. Будьте первым!

Отправить комментарий