Вопрос или проблема
Я хотел заняться использованием Harbor в течение довольно долгого времени и развернул график Helm на своем кластере, но хочу сохранить репозиторий внутренним и, следовательно, не использовать Ingress, а вместо этого использовать IP кластера. Однако, когда я пытаюсь его развернуть, даже с настройками по умолчанию из репозитория harbor-helm, я продолжаю получать ошибку 405 метод не разрешен, когда захожу в портал с правильными учетными данными через порт-прокси. Я видел и прочитал множество постов об этом в интернете, и многие просто меняют порядок правил Ingress, но, как я уже упоминал, я даже не использую Ingress, а вместо этого используем IP кластера. Прилагаю мой файл пользовательских значений, который переписывает некоторые из значений по умолчанию. В настоящее время я использую последний график и значения из репозитория harbor-helm на GitHub. Несколько человек указали на свойство externalUrl, и я пытался установить его так, как указано в документации для clusterIP, но я также пробовал его как localhost:8082, так как это был порт, на который я проксировал. Посмотрите ниже строку ошибки в логах: 127.0.0.1 – – [10/Nov/2024:00:16:58 +0000] “POST /c/login HTTP/1.1” 405 559 “http://localhost:8082/account/sign-in?redirect_url=%2Fharbor%2Fprojects” “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, как Gecko) Chrome/130.0.0.0 Safari/537.36” (отредактировано)
Смотрите ниже мои пользовательские значения, которые в настоящее время используются для переписывания значений по умолчанию в графике:
Ниже также изображение, показывающее ошибку:
Любая помощь, чтобы просто заставить это работать с порт-прокси, будет очень признательна, так как я потратил вчера весь день, пытаясь это уладить.
Ответ или решение
Ошибка 405 "Method Not Allowed" при входе в Harbor Registry
Ошибка 405 "Method Not Allowed", возникающая при попытке входа в Harbor Registry, может быть результатом различных проблем, особенно когда вы настраиваете систему для работы с ClusterIP
, без использования Ingress. Давайте подробно рассмотреть потенциальные причины и дать рекомендации по устранению этой проблемы.
1. Понимание ошибки
Ошибка 405 указывает на то, что веб-сервер понимает HTTP-метод, который используется в запросе, но не поддерживает его для запрашиваемого ресурса. В вашем случае это происходит при попытке выполнить POST
запрос на URL /c/login
.
2. Проверка конфигурации
Вы упомянули, что используете пользовательский файл значений, который изменяет значения по умолчанию. Обратите внимание на несколько ключевых параметров, которые могут влиять на вашу конфигурацию:
-
externalUrl: Убедитесь, что этот параметр правильно настроен. Если ваш Harbor работает на
ClusterIP
, настройтеexternalUrl
на адрес, который будет доступен за пределами кластера. Например, если вы используетеlocalhost
сport-forward
, то следовало бы указать что-то вродеhttp://localhost:8082
. Обратите внимание, что использованиеlocalhost
в настройках может привести к некорректной работе, если запрос идет из браузера, так как браузер не сможет правильно направить его на внутренний IP-адрес. -
Service Type: Проверьте, что у вас настроен тип сервиса как
ClusterIP
.
3. Настройка Helm Chart
При развертывании Harbor через Helm Chart, важно убедиться, что другие параметры сервиса не противоречат вашим намерениям использовать только ClusterIP
. Убедитесь, что у вас нет конфигураций, связанных с Ingress:
ingress:
enabled: false
Также проверьте, что порты, которые вы используете, правильно настроены в ваших значениях. Пример:
service:
type: ClusterIP
port: 8080
4. Логи и отладка
Просмотрите логи вашего Harbor контейнера, чтобы найти более подробную информацию о причине ошибки. Обратите внимание на ошибки, связанные с аутентификацией или маршрутизацией запросов. Используйте команду:
kubectl logs <имя-pod>
Также можно выполнить базовую проверку состояния сервиса и его доступности:
kubectl get svc
kubectl describe svc <имя-сервиса>
5. Test Query
Попробуйте выполнить тестовый curl
запрос к вашему сервису через port-forward
:
kubectl port-forward svc/harbor 8082:80
Затем выполните:
curl -X POST http://localhost:8082/c/login -d 'username=admin&password=Harbor12345'
Если вы получите 405 ошибку, это подтвердит, что проблема связана с конфигурацией сервиса. Также убедитесь, что все необходимые параметры для аутентификации правильно настроены.
6. Общие рекомендации
- Проверьте наличие обновлений для Helm Chart, так как они могут содержать исправления ошибок.
- Перезапустите Pods, если изменения в конфигурации были внесены. Это может автоматически обновить конфигурацию сервиса.
- Обратитесь к официальной документации Harbor для дополнительной информации и примеров конфигурации.
Следуя этим рекомендациям, вы сможете устранить ошибку 405 и успешно зарегистрироваться в вашем Harbor Registry. Если проблема сохраняется, возможно, стоит обратиться за помощью в сообщество разработчиков Harbor или на соответствующие форумы.