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 ответа
Решение зависит от вашей конкретной конфигурации инфраструктуры, но вот несколько советов, которые сработали для меня -
- Если в вашем частном внешнем реестре есть сертификаты, проверьте, правильно ли импортированы эти сертификаты, если это не так, то добавьте реестр как ненадежный.
- Docker pull, сборка конфигурации, imagestream pull - все работает по-разному.
- Также рекомендуется, чтобы имя секретного ключа совпадало с именем хоста конечной точки аутентификации реестра. (Если не использовать небезопасный реестр).
- Например Имя полного доменного имени в реестре: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