OpenShift: Могу ли я настроить сборку, которая копирует образ докера из потока изображений во внешний репозиторий докеров?

Мы пытаемся настроить поток OpenShift как можно ближе к значениям по умолчанию, без использования Jenkins.

Пока мне удалось адаптировать сгенерированный s2i файл Dockerfile к нашим потребностям (чтобы получить преимущества образов s2i) и настроить простой конвейер «oc new-app», который создает сборку после репозитория git, проталкивая сгенерированный образ докера. в поток изображений и развертывание, инициированное отправкой обновления потока изображений в модуль по умолчанию. Это хорошо работает.

Теперь мы хотим дополнительно отправить этот образ докера во внешний репозиторий докеров (РЕЕСТР КОНТЕЙНЕРА RED HAT, известный OpenShift), и я бы по существу хотел сохранить существующий поток вместо того, чтобы адаптировать его для использования внешнего реестра вместо внутреннего.

Итак, могу ли я настроить «сборку» или что-то в этом роде, которое ничего не делает, кроме как берет этот образ и отправляет его в реестр докеров? Как мне настроить его с помощью команды oc?


person Thorbjørn Ravn Andersen    schedule 28.03.2019    source источник


Ответы (2)


Вы бы хотели отправить созданный buildConfig образ во внешний реестр, верно? Я думаю, что рабочий процесс выглядит так: Использование учетных данных Docker для частных реестров.

  • Создать учетные данные secret
$ oc create secret generic <secret_name> \
    --from-file=.dockerconfigjson=<path/to/.docker/config.json> \
    --type=kubernetes.io/dockerconfigjson
  • Свяжите secret с builder ServiceAccount.

  • Настройте целевой объект push образа сборки в buildConfig следующим образом.

spec:
  output:
    to:
      kind: DockerImage   
      name: external.registry.io/subpath/imagename:latest
    pushSecret:
      name: <secret_name>

Надеюсь, это вам поможет.

person Daein Park    schedule 28.03.2019
comment
Спасибо. Я бы предпочел не изменять существующую конфигурацию сборки, созданную oc new-app, а вместо этого добавить другую, отвечающую только за это. - person Thorbjørn Ravn Andersen; 28.03.2019
comment
Это хорошая идея, вы можете запустить «oc start-build» со своим новым. - person Daein Park; 29.03.2019

Вы можете использовать инструмент командной строки skopeo для копирования образов контейнеров из одного реестра докеров в другой без необходимости построить образ второй раз.

Это официально поддерживаемый Red Hat инструмент, который является частью новый набор инструментов (buildah, podman, skopeo и т. д.) для поддержки запуска OpenShift и Kubernetes поверх бездемонной среды выполнения контейнера cri-o вместо docker.

Войдите в реестр источника и назначения через docker login или используйте флаги --src-creds и --dest-creds.

skopeo copy \
  --src-creds=testuser:testpassword \
  --dest-creds=otheruser:otherpassword \
  docker://myregistrydomain.com:5000/dockerimage:tag \
  docker://mysecondregistrydomain.com:5000/dockerimage:tag
person Nick    schedule 28.03.2019