Artifactory Docker 404 после обновления до 7.4.1

После обновления Artifactory до 7.4.1 с 6.10.4 я внес необходимые изменения порта, и пользовательский интерфейс работает нормально, но я вижу следующее в журнале artifactory-service при попытке использовать вход в докер через метод

Artifactory работает в кластере Kubernetes за контроллером входящего трафика nginx, вход которого настроен специально для обслуживания https: // ‹local-docker-repo›. ‹Artifactory-url› .com через тот же сервер, что и пользовательский интерфейс Artifactory. Похоже, что некоторые функции перезаписи URL не работают, я просто не уверен, как я неправильно их сконфигурировал, поскольку в предыдущей версии у меня не было проблем.

Завиток получается следующим образом:

curl -i -L -k http://docker-local.<artifactory-url>.com/v2/
HTTP/1.1 308 Permanent Redirect
Server: nginx/1.15.9
Date: Mon, 21 Sep 2020 00:25:32 GMT
Content-Type: text/html
Content-Length: 171
Connection: keep-alive
Location: https://docker-local.<artifactory-url>.com/v2/
X-JFrog-Override-Base-Url: ://docker-local.\<artifactory-url>.com:80
X-Forwarded-Port: 80
Host: docker-local.artifactory.<artifactory-url>.com
X-Forwarded-For: 10.60.1.1

HTTP/2 401 
server: nginx/1.15.9
date: Mon, 21 Sep 2020 00:25:32 GMT
content-type: application/json;charset=ISO-8859-1
content-length: 91
www-authenticate: Basic realm="Artifactory Realm"
x-artifactory-id: ea0c76c54c1ef5de:45761df0:174ad9a6887:-8000
x-artifactory-node-id: artifactory-0
x-jfrog-override-base-url: ://docker-local.<artifactory-url>.com:443
x-forwarded-port: 443
host: docker-local.<artifactory-url>.com
x-forwarded-for: 10.60.x.x
strict-transport-security: max-age=15724800; includeSubDomains

{
  "errors" : [ {
    "status" : 401,
    "message" : "Authentication is required"
  } ]

Любая помощь будет принята с благодарностью!

Изменить: в качестве обходного пути я включил путь к репозиторию в качестве метода доступа Docker, который работает нормально - все еще не уверен, где поддомен идет не так.


person exit-code0    schedule 20.09.2020    source источник
comment
Что вы получите, если curl -i https://<local-docker-repo>.<artifactory-url>.com/v2/   -  person BMitch    schedule 21.09.2020
comment
Вот что я получаю: HTTP/1.1 308 Permanent Redirect Server: nginx/1.15.9 Date: Mon, 21 Sep 2020 00:17:54 GMT Content-Type: text/html Content-Length: 171 Connection: keep-alive Location: https://docker-local.<artifactory-url>/v2/ X-JFrog-Override-Base-Url: ://docker-local.<artifactory-url>:80 X-Forwarded-Port: 80 Host: docker-local.<artifactory-url>.com X-Forwarded-For: 10.62.x.x   -  person exit-code0    schedule 21.09.2020
comment
Включен ли в завиток косую черту в конце? Вы можете использовать -L в curl, чтобы следовать перенаправлениям. Кроме того, пожалуйста, отредактируйте вопрос, многострочные блоки кода в комментариях трудно читать.   -  person BMitch    schedule 21.09.2020
comment
Извините, обновил вопрос. Спасибо!   -  person exit-code0    schedule 21.09.2020
comment
О, вам не хватало https, и вы были перенаправлены с http. Этот ответ выглядит нормально, вы разговариваете с сервером реестра. Для базовой аутентификации вы должны иметь возможность передать -u 'user:pass' замену пользователя и передать свои кредиты, и я заключил их в одинарные кавычки, чтобы избежать проблем со специальными символами.   -  person BMitch    schedule 21.09.2020
comment
Когда я передаю свои учетные данные, я вижу HTTP 404 как последний ответ curl, аналогичный тому, о котором сообщает вход в докер.   -  person exit-code0    schedule 21.09.2020
comment
Сгенерируйте конфигурацию обратного прокси-сервера Nginx из Artifactory v7 для метода субдомена и сравните правила перезаписи из сгенерированной конфигурации Nginx с входящей информацией Nginx.   -  person Muhammed Kashif    schedule 21.09.2020
comment
Важная часть 404 - это увидеть, исходит ли он от артефакта, кубернетов или чего-то еще, что видно в заголовках. Если вы знаете, что это искусственно, пора покопаться в журналах контейнеров и проконсультироваться с поставщиком.   -  person BMitch    schedule 21.09.2020


Ответы (1)


Проблема заключалась в том, что переменная $ repo в правилах перезаписи nginx, предоставляемых Artifactory, по какой-то причине не заполнялась. Поскольку в методе поддомена используется только один реестр, я обновил правило перезаписи, чтобы указать имя репо, которое решило проблему.

Проиллюстрировать:

rewrite ^/(v1|v2)/(.*) /artifactory/api/docker/$repo/$1/$2;

был изменен на:

rewrite ^/(v1|v2)/(.*) /artifactory/api/docker/docker-local/$1/$2;

person exit-code0    schedule 17.02.2021