Argo CD не читает репозиторий: credentials, URL и доступ repo-server
Репозиторий клонируется локально, а Argo CD не может сгенерировать манифесты. Локальный Git использует ваши ключи, credential helper, proxy и доверенные сертификаты. Repo-server работает в другом окружении и получает собственные credentials. Поэтому успешный clone на ноутбуке подтверждает доступность репозитория только для этого клиента.
Определяем этап отказа
argocd repo list
argocd app get demo-api --refresh
kubectl -n argocd get application demo-api -o yaml
kubectl -n argocd logs deployment/argocd-repo-server --tail=100Имена установки могут отличаться. Сопоставьте время ошибки с repoURL и targetRevision Application. Authentication failed, repository not found, x509, host key verification failed и timeout требуют разных проверок. Некоторые Git-сервисы скрывают приватный репозиторий ответом not found, поэтому этот текст не всегда означает опечатку. Не выводите Secret с токеном целиком ради проверки его существования.
Отделите доступ к Git от следующего шага. Argo CD мог успешно получить chart из Git, а затем не скачать приватную Helm-зависимость. В сообщении будет другой адрес. В multi-source Application каждый источник имеет собственные URL и revision. Исправление credentials первого репозитория не открывает автоматически остальные.
Сопоставляем URL и механизм credentials
Проверьте protocol, hostname, порт и полный путь. HTTPS URL и SSH URL одного проекта используют разные способы аутентификации. У некоторых Git-сервисов требуется суффикс .git: Argo CD не должен полагаться на HTTP redirect к такому URL. Лучше сразу использовать окончательный адрес, принимаемый вашим Git-сервером.
apiVersion: v1
kind: Secret
metadata:
name: team-repo-creds
namespace: argocd
labels:
argocd.argoproj.io/secret-type: repo-creds
type: Opaque
stringData:
url: https://git.example.com/team
username: token-user
password: REPLACE_WITH_READ_TOKENЭто схема credential template с явным заполнителем, а не файл для коммита с настоящим токеном. В рабочей среде значение передаётся принятой системой секретов. Credential template выбирается по префиксу URL; при нескольких совпадениях важен наиболее подходящий длинный префикс. Слишком широкий префикс способен выдать credentials лишним репозиториям.
Репозиторий с собственными явно заданными credentials может не использовать ожидаемый template. Проверьте обе конфигурации. Токен должен иметь право чтения именно нужного проекта и не быть просроченным. Успешная аутентификация пользователя ещё не доказывает право скачать конкретный private repository или submodule.
Для SSH проверяем два независимых доверия
SSH-ключ доказывает серверу право клиента, а known_hosts позволяет клиенту проверить сервер. Если host key не известен или изменился, замена приватного ключа не устранит ошибку. Получите ожидаемый fingerprint по доверенному каналу и обновите конфигурацию SSH known hosts Argo CD. Для нестандартного порта проверьте корректную форму SSH URL; scp-подобная запись не подходит для произвольного порта так же, как ssh://.
Для HTTPS x509 проверьте цепочку и имя сервера, затем добавьте доверенный CA через конфигурацию Argo CD. Отключение проверки TLS меняет модель доверия и не является ремонтом цепочки сертификатов. Сертификат может быть доверен на ноутбуке и отсутствовать в repo-server. Аналогично корпоративный proxy может требовать отдельной настройки окружения компонента.
Проверяем сеть из правильного места
При timeout проверьте DNS, маршрут, NetworkPolicy и egress repo-server. Если диагностика выполняется отдельным Pod, согласуйте namespace, политику и proxy, чтобы она воспроизводила тот же путь. Пароль не исправит закрытый TCP-порт. Установка пакетов в рабочий repo-server ради проверки создаёт лишнее изменение; используйте утверждённый диагностический способ.
После исправления обновите статус репозитория и повторите генерацию манифестов Application. Успех чтения Git и успех Sync — отдельные этапы: дальше могут обнаружиться запрет AppProject или ошибка схемы ресурса. Сохраните точный URL без credentials, причину отказа и изменённую настройку. Это позволит проверить следующую ротацию ключа без повторного перебора всех способов аутентификации.
Ещё по теме
- Argo CD не запускает Sync: проверяем sync windows и ручной запуск
- Argo CD и Helm: где искать values, которые реально попали в релиз
Продолжить изучение
Хотите выстроить доставку изменений из Git в кластер? Синхронизация, окружения и восстановление после неудачного релиза — темы программы «Argo CD и GitOps: деплой в Kubernetes».
Продолжить на практике
- Argo CD и GitOps: деплой в Kubernetes ↗
Превратите Git в источник правды для Kubernetes. Настройте Argo CD, управляемую синхронизацию и окружения, научитесь находить drift и откатывать изменения через Git. Итог — воспроизводимый GitOps-процесс для приложения.
