Доступ к Git (GitHub/GitLab) с правами на создание репозитория и push. Рекомендуется общий репозиторий типа GitHub/GitLab.
Минимум 10 ГБ свободного места на диске для образов, сетевой порт 443 (HTTPS) для доступа к UI, порт 8080 для локального проброса.
Рекомендуется SSL-терминация через Nginx 1.26 (2026) или Ingress контроллер в облаке.
Что такое GitOps?
0
Статья была полезной?
Комментарии (0)
Войдите или зарегистрируйтесь, чтобы оставить комментарий
Загрузка комментариев…
GitOps — это модель операционной практики, в которой Git служит единственным источником правды для декларативных конфигураций инфраструктуры и приложений. При GitOps изменения в кластере инициируются синхронизацией состояния кластера с тем, что хранится в репозитории Git: мерж в main/master триггерит автоматическую доставку.
Ключевые элементы: декларативные манифесты (Helm, Kustomize, plain YAML), контроллер синхронизации (в нашем случае Argo CD 2.8.0, выпущенный в 2026), и аудит через Git. Типичная выгода — воспроизводимость, откаты через Git revert и прозрачность изменений для команд.
Шаг 1: установка Argo CD
Команда. Установите Argo CD 2.8.0 в namespace argocd с помощью официального манифеста и проверкой состояний. Это займёт 3–7 минут при хорошем соединении (обычно ~40–120 МБ скачиваемых образов).
Объяснение. Первый вызов создаёт пространство имён, второй — разворачивает контроллеры, server, repo-server, redis и redis HA. Образы Argo CD версии 2.8.0 занимают ~200–300 МБ суммарно на нодах при скачивании.
Ожидаемый вывод (успех):
namespace/argocd created
secret/argocd-secret created
serviceaccount/argocd-server created
deployment.apps/argocd-server created
... (другие ресурсы)
Типичная ошибка и её фикс:
Ошибка: ErrImagePull / ImagePullBackOff
Причина: ноды не имеют доступа к реестру образов или нет разрешений.
Фикс: проверьте интернет/registry credentials, выполните на ноде:
docker pull argoproj/argocd:v2.8.0
kubectl describe pod -n argocd <имя-pod>
Если используется приватный реестр — добавьте imagePullSecrets в ServiceAccount.
Доступ к UI и argocd CLI
Команда. Пробросьте порт и получите пароль администратора (initial admin password хранится в secret argocd-initial-admin-secret):
Типичная ошибка: порт занят или base64 недоступен.
Error: address already in use
Фикс: закройте приложение, слушающее порт 8080, или используйте другой порт: 8443:443
kubectl -n argocd port-forward svc/argocd-server 8443:443 &
Скриншот Argo CD UI с dashboard и приложениями
Шаг 2: application manifests
Команда. Создайте базовую структуру репозитория и manifest для приложения. Мы используем Helm chart для сервиса и plain YAML для Deployment. В репозитории создайте каталог apps/my-service с двумя файлами: Chart.yaml и values.yaml, а также base/deployment.yaml.
Объяснение. Репозиторий содержит Helm chart и базовый Deployment. Argo CD поддерживает синхронизацию из Git по пути в репо. Рекомендуется хранить окружения в отдельных директориях (prod, staging) и использовать Kustomize или Helm values для различий.
Ожидаемый вывод (успех): файлы созданы и готовы к коммиту.
Ошибка: repository not reachable / unauthorized
Причина: репозиторий приватный или URL указан неверно.
Фикс: добавьте репозиторий через Argo CD CLI или UI с credentials:
argocd repo add https://github.com/your/repo.git --username --password
Структура репозитория с каталогами apps и base, скриншот tree
Шаг 3: sync policies
Команда. Настройте политику синхронизации: сначала manual для контроля, затем automated с опциями prune и selfHeal. Пример для automated:
Объяснение. automated.prune=true удаляет ресурсы, которые удалены из Git; selfHeal=true автоматически возвращает расхождения в кластере к состоянию в Git. Эти опции ускоряют delivery, но требуют строгой политики доступа.
Ожидаемый вывод (успех):
application.argoproj.io/my-service patched
Проверка статуса синхронизации:
argocd app get my-service
Name: my-service
Project: default
Sync Policy: Automated (Prune, SelfHeal)
Sync Status: Synced to main (abc123)
Health Status: Healthy
Типичная ошибка и её фикс:
Ошибка: sync failed — resources not found / invalid manifest
Причина: манифесты содержат синтаксические ошибки или ссылка на несуществующий CRD.
Фикс: проверьте манифесты локально:
kubectl apply --dry-run=client -f base/deployment.yaml
kubectl api-resources | grep Если CRD отсутствует — установите CRD в кластер до синка.
Шаг 4: RBAC и SSO
Команда. Настройте RBAC в Argo CD и интеграцию с SSO (OIDC) для безопасного доступа команд. Пример добавления role в ConfigMap argocd-rbac-cm:
Комментарии (0)
Войдите или зарегистрируйтесь, чтобы оставить комментарий
Загрузка комментариев…