OpenShift: могу ли я создать сборку, которая копирует образ докера из imagestream во внешний репозиторий докеров? - PullRequest
0 голосов
/ 28 марта 2019

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

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

Теперь мы хотим дополнительно отправить этот образ докера во внешний репозиторий док-станции (RED HAT CONTAINER REGISTRY, известный в OpenShift), и я бы хотел сохранить существующий поток вместо того, чтобы адаптировать его для использования внешнего реестра вместо внутренний.

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

Ответы [ 2 ]

1 голос
/ 28 марта 2019

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

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

Либо войдите в исходную и целевую реестры через 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
1 голос
/ 28 марта 2019

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

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

  • Сконфигурируйте целевой объект для создания образа в buildConfig следующим образом.

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

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

...