Argo CD не может удалить приложение, если не может сгенерировать манифесты. Вам нужно либо:
--cascade=false
, а затем вручную удалить ресурсы.OutOfSync
?Смотрите Diffing Documentation для причин, по которым ресурсы могут быть OutOfSync, и способов настройки Argo CD для игнорирования полей, когда ожидаются различия.
Progressing
?Argo CD предоставляет проверку состояния для нескольких стандартных типов Kubernetes. Типы Ingress
, StatefulSet
и SealedSecret
имеют известные проблемы, которые могут привести к тому, что проверка состояния возвращает Progressing
вместо Healthy
.
Ingress
считается здоровым, если список status.loadBalancer.ingress не пуст и содержит хотя бы одно значение для hostname
или IP
. Некоторые ingress-контроллеры (contour, traefik) не обновляют поле status.loadBalancer.ingress
, из-за чего Ingress
застревает в состоянии Progressing
навсегда.
StatefulSet
считается здоровым, если значение поля status.updatedReplicas
совпадает с полем spec.replicas
. Из-за бага Kubernetes kubernetes#68573 поле status.updatedReplicas не заполняется. Поэтому, если вы используете версию Kubernetes без исправления kubernetes#67570, StatefulSet может оставаться в состоянии Progressing.
Ваш StatefulSet
или DaemonSet
использует стратегию OnDelete
вместо RollingUpdate
.
Для SealedSecret
смотрите Почему ресурсы типа SealedSecret
застревают в состоянии Progressing
?
В качестве обходного решения Argo CD позволяет настроить проверку состояния, которая переопределяет поведение по умолчанию.
Если вы используете Traefik для вашего Ingress, вы можете обновить конфигурацию Traefik, чтобы публиковать IP loadBalancer с помощью publishedservice, что решит эту проблему.
Добавьте admin.enabled: "false"
в ConfigMap argocd-cm
.
Argo CD может не сгенерировать манифесты Helm chart, если у чарта есть зависимости из внешних репозиториев. Чтобы решить проблему, убедитесь, что requirements.yaml
использует только внутренние Helm репозитории. Даже если чарт использует только зависимости из внутренних репозиториев, Helm может попытаться обновить репозиторий stable
. В качестве обходного решения переопределите URL репозитория stable
в ConfigMap argocd-cm
:
helm ls
и других командах Helm?При развертывании Helm приложения Argo CD использует Helm только как механизм шаблонизации. Он выполняет helm template
, а затем разворачивает полученные манифесты в кластере вместо helm install
. Это означает, что вы не можете использовать команды Helm для просмотра или проверки приложения. Управление полностью осуществляется Argo CD. Обратите внимание, что Argo CD нативно поддерживает некоторые возможности, которых может не хватать в Helm (например, команды истории и отката).
Такое решение принято, чтобы Argo CD был нейтрален к генераторам манифестов.
Проверьте, есть ли у секрета кластера метка argocd.argoproj.io/secret-type: cluster
. Если метка есть, но кластер все равно не виден, возможно, проблема с правами доступа. Попробуйте вывести список кластеров, используя пользователя admin
(например: argocd login --username admin && argocd cluster list
).
В некоторых случаях инструмент, который вы используете, может конфликтовать с Argo CD, добавляя метку app.kubernetes.io/instance
. Например, при использовании функции common labels в Kustomize.
Argo CD автоматически устанавливает метку app.kubernetes.io/instance
и использует её для определения ресурсов, входящих в приложение. Если инструмент делает то же самое, это вызывает путаницу. Вы можете изменить эту метку, установив значение application.instanceLabelKey в argocd-cm
. Рекомендуется использовать argocd.argoproj.io/instance
.
После этого изменения ваши приложения станут Out Of Sync и потребуют повторной синхронизации.
Интервал опроса по умолчанию — 3 минуты (180 секунд) с настраиваемым джиттером. Вы можете изменить настройки, обновив значения timeout.reconciliation
и timeout.reconciliation.jitter
в ConfigMap argocd-cm
. Если есть изменения в Git, Argo CD обновит только приложения с включенной настройкой auto-sync
. Если установить значение в 0, Argo CD прекратит автоматический опрос Git репозиториев, и вы сможете использовать только альтернативные методы, такие как webhooks
и/или ручная синхронизация
для создания приложений.
Argo CD использует JWT в качестве токена аутентификации. Вероятно, вы состоите во многих группах, и размер cookie превысил лимит в 4 КБ. Вы можете получить список групп, открыв "developer tools -> network":
<argocd_instance>/auth/callback?code=<random_string>
Декодируйте токен на jwt.io. Это покажет список команд, из которых вы можете удалить себя.
Возможно, вы находитесь за прокси, который не поддерживает HTTP 2? Попробуйте флаг --grpc-web
:
Контроллер ресурса SealedSecret
может выставлять статусное условие на ресурс, который он создал. Начиная с версии v2.0.0
Argo CD учитывает это статусное условие для определения состояния здоровья SealedSecret
.
Версии контроллера SealedSecret
до v0.15.0
страдают от проблемы с обновлением этих статусных условий, поэтому эта функция по умолчанию отключена в этих версиях. Обновления статусных условий можно включить, запустив контроллер SealedSecret
с параметром командной строки --update-status
или установив переменную окружения SEALED_SECRETS_UPDATE_STATUS
.
Чтобы отключить проверку Argo CD статусного условия у ресурсов SealedSecret
, добавьте следующую настройку кастомизации ресурсов в ConfigMap argocd-cm
через ключ resource.customizations.health.<group_kind>
.
Удалите секрет argocd-redis
в namespace, где установлен Argo CD.
Если вы используете Redis в HA режиме, перезапустите Redis в HA.
Если вы используете Redis в не-HA режиме, перезапустите Redis.
Перезапустите остальные компоненты.
Manifest generation error (cached)
означает, что при генерации манифестов произошла ошибка, и сообщение об ошибке было закэшировано, чтобы избежать бесконечных повторных попыток.
Жесткое обновление (игнорирование кэшированной ошибки) может помочь при временных проблемах. Но если причина ошибки генерации манифестов сохраняется, жесткое обновление не поможет.
Вместо этого попробуйте поискать в логах repo-server по имени приложения, чтобы определить ошибку, вызывающую сбой генерации манифестов.