Не удается развернуть модифицированный образ Jenkins в openshift

Я использовал образ «jenkins-1-centos7» для развертывания в моем openshift для запуска проектов на моем образе jenkins. Это успешно сработало, и после многих конфигураций я продублировал новый образ из этого контейнера jenkins. Теперь я хочу использовать этот образ в качестве основы для дальнейшей разработки, но при развертывании модуля на этом образе возникает ошибка «ErrImagePull».

В ходе моих исследований я обнаружил, что openshift необходимо, чтобы образ присутствовал в реестре докеров для успешного развертывания модулей. Я развернул другое приложение для реестров докеров, и теперь, когда я пытаюсь поместить свой обновленный образ в этот реестр докеров, возникает ошибка с сообщением "Требуется аутентификация". Я дал права администратора своему пользователю.

docker push <local-ip>:5000/openshift/<new-updated-image>
The push refers to a repository [<local-ip>:5000/openshift/<new-updated-image>] (len: 1)
c014669e27a0: Preparing
unauthorized: authentication required

Как я могу убедиться, что модифицированный образ успешно развернут?


person Akshaya Khare    schedule 25.07.2016    source источник
comment
Насколько я понимаю, вы строите свой образ Дженкинса. Вставить его в реестр OpenShift, а затем попытаться использовать в OpenShift? Какую команду вы выполняете для аутентификации в реестре докеров OpenShift?   -  person lvthillo    schedule 28.07.2016


Ответы (2)


Вероятно, этот ответ потребует редактирования, потому что ваша проблема может быть вызвана многими причинами. (Я предполагаю, что вы используете источник OpenShift? (с открытым исходным кодом)). Потому что я вижу образ Centos7 для Дженкинса.

Прежде всего, вам нужно развернуть реестр openshift в проекте по умолчанию.

$ oc project default
$ oadm registry --config=/etc/origin/master/admin.kubeconfig \
    --service-account=registry  

Модуль реестра будет развернут. Над реестром будет создана служба (своего рода конечная точка, которая будет функционировать как балансировщик нагрузки над вашими модулями).

IP-адрес этой службы находится в диапазоне 172.30. Вы можете проверить этот IP-адрес в веб-консоли или выполнить (при условии, что вы все еще находитесь в проекте по умолчанию): $ oc get svc

NAME              CLUSTER-IP      EXTERNAL-IP   PORT(S)                   AGE
docker-registry   172.30.22.11   <none>        5000/TCP                  8d
kubernetes        172.30.32.13      <none>        443/TCP,53/UDP,53/TCP     9d
router            172.30.42.42    <none>        80/TCP,443/TCP,1936/TCP   9d

Поэтому вам нужно будет использовать служебный IP-адрес вашего реестра докеров для аутентификации. Вам также понадобится токен:

$ oc whoami -t
D_OPnWLdgEbiKJzvG1fm9dYdX..

Теперь вы можете выполнить вход и нажать изображение:

$ docker login -u admin -e [email protected] \
-p D_OPnWLdgEbiKJzvG1fm9dYdX 172.30.22.11:5000
WARNING: login credentials saved in /root/.docker/config.json
Login Succeeded

$ docker tag myimage:latest 172.30.22.11/my-proj/myimage:latest

$ docker push 172.30.22.11/my-proj/myimage:latest

надеюсь это поможет. Вы можете оставить отзыв об этом ответе и рассказать, работает ли он для вас или с какими новыми проблемами вы столкнулись.

person lvthillo    schedule 28.07.2016
comment
Я использую Openshift Enterprise ... и шаги, которые вы указали, точно такие же, как и я, я развернул модуль реестра, я смог войти в систему, используя токен и IP-адрес реестра, а затем я пометил свой образ. Я получаю ошибку при нажатии на изображение... - person Akshaya Khare; 29.07.2016
comment
в качестве какого пользователя вы нажимаете изображение? у вас есть права на нажатие изображения? (например, у вас есть роль администратора кластера) - person lvthillo; 29.07.2016
comment
Я использовал свой личный идентификатор ‹khare.ak› для отправки изображения: я предоставил права администратора пользователю с помощью следующей команды: oadm policy add-role-to-user admin khare.ak Хотя я решил проблема с использованием локального реестра докеров и развертывание моего приложения с использованием этого локального реестра докеров - person Akshaya Khare; 29.07.2016
comment
Я думаю, вам нужно добавить роль кластера к пользователю. Вы не используете реестр openshift-docker? - person lvthillo; 30.07.2016
comment
хорошо, это может быть проблемой ... Я попробую с этим, на данный момент я удалил реестр openshift-docker и использовал локальный реестр докеров для развертывания своего приложения. Я вернусь к этому через неделю и попробую с реестром openshift-docker, приняв во внимание ваш совет... до тех пор это локальный реестр докеров... - person Akshaya Khare; 30.07.2016

Все в порядке, только последняя строка получает ошибку аутентификации

докер толчок 172.30.22.11/мой-проект/мойизображение: последний

????

person Rahul Jain    schedule 01.08.2016
comment
Пытались ли вы добавить своему пользователю права администратора добавить кластерную роль-пользователю, как предложил Lorenzvth7 выше? - person Akshaya Khare; 01.08.2016
comment
я добавил себя в качестве администратора: - person Rahul Jain; 11.08.2016