Openshift imagestream "Ошибка импорта (неавторизована)" для частного внешнего безопасного реестра

Может быть, я что-то не так понимаю, но мой ImageStream возвращает "! Error: Ошибка импорта (неавторизована): у вас может не быть доступа к образу Docker" my_registry: 5000 / project / my_image: latest "".

Я настроил все необходимые шаги для подключения к внешнему реестру (создал секрет и добавил его в учетные записи serviceaccount/default и serviceaccount/builder текущих проектов). Все настройки развертывания с указанным image: my_registry:5000/project/my_image:latest отлично работают, узел может успешно вытащить изображение и создать модуль.

Но когда я делаю поток изображения с:

from:
      kind: DockerImage
      name: my_registry:5000/project/my_image:latest

Я получаю ошибку, что я не авторизован.

Так что я делаю не так? Есть ли какая-либо дополнительная учетная запись, которую я должен дать права на получение?

 oc describe sa/builder
Name:           builder
Namespace:      nginx
Labels:         <none>

Image pull secrets:     builder-dockercfg-8ogvt
                        my_registry

Mountable secrets:      builder-token-v6w8q
                        builder-dockercfg-8ogvt
                        my_registry

Tokens:                 builder-token-0j8p5
                        builder-token-v6w8q

а также

oc describe sa/default
Name:           default
Namespace:      nginx
Labels:         <none>

Image pull secrets:     default-dockercfg-wmm1h
                            my_registry

Mountable secrets:      default-token-st7k9
                        default-dockercfg-wmm1h

Tokens:                 default-token-m2aoq
                        default-token-st7k9

2 ответа

Решение зависит от вашей конкретной конфигурации инфраструктуры, но вот несколько советов, которые сработали для меня -

  1. Если в вашем частном внешнем реестре есть сертификаты, проверьте, правильно ли импортированы эти сертификаты, если это не так, то добавьте реестр как ненадежный.
  2. Docker pull, сборка конфигурации, imagestream pull - все работает по-разному.
  3. Также рекомендуется, чтобы имя секретного ключа совпадало с именем хоста конечной точки аутентификации реестра. (Если не использовать небезопасный реестр).
  4. Например Имя полного доменного имени в реестре:5000/yourapp: последнее (это необходимо для правильной работы сертификатов).

Пожалуйста, посмотрите здесь

oc secrets link default <pull_secret_name> --for=pull

Я столкнулся с той же проблемой, когда пытался импортировать образ из реестра докеров, размещенного в другом кластере Openshift. После некоторой отладки я обнаружил проблему: не удалось найти секретный ключ, соответствующий https://docker-dev.xxxx.com/openshift/token (docker-dev.xxxx.com:443/openshift/token)

Реестр Openshift Docker использует OAuth для Openshift. Таким образом, вы должны создать секрет, где --docker-server указывает на /openshift/token конечная точка. например:

oc secrets new-dockercfg registry.example.com \
    --docker-server=https://registry.example.com:443/openshift/token \
    --docker-username=default/puller-sa \
    --docker-password=<token> \
    --docker-email=someone@example.com
Другие вопросы по тегам