Openshift копирование изображения в другое хранилище изображений

#amazon-web-services #openshift #amazon-ecr

#amazon-web-services #openshift #amazon-ecr

Вопрос:

У меня есть развертывание openshift с BuildConfig следующим образом:

 apiVersion: v1
kind: BuildConfig
metadata:
  name: '#OKD_COMPONENT_NAME#'
spec:
  output:
    to:
      kind: ImageStreamTag
      name: '#OKD_COMPONENT_NAME#:latest'
  runPolicy: SerialLatestOnly
  source:
    git:
      uri: '#CI_REPOSITORY_URL#'
      ref: '#CI_COMMIT_REF_NAME#'
    type: Git
    contextDir: #OKD_COMPONENT_NAME#
  strategy:
    dockerStrategy:
      buildArgs:
        - name: "CA_HOSTS_LIST"
          value: "get-ca-cert.apps.test.fr:443 get-ca-cert.apps.test.fr:443  get-ca-cert.apps.test.fr:443"
    type: Docker
  triggers:
  - type: ConfigChange
  - imageChange: {}
    type: ImageChange
  

В конце сборки openshift создает изображение и помещает его во внутренний реестр.

Проблема в том, что я хочу скопировать эту сборку изображения и перенести ее во внутренний реестр openshift в AWS ECR. Модули openshift должны создаваться с изображениями во внутреннем реестре openshift, но я просто хочу, чтобы копия этого изображения также автоматически помещалась во внутренний реестр в AWS ECR.

Есть ли способ, которым это можно достичь?

Ответ №1:

Я не тестировал это, но oc image mirror команда может подойти для вашего варианта использования, см. Передача изображений для получения более подробной информации. Эта команда может скопировать изображение из реестра в несколько реестров. Например, показано, как скопировать внутреннее изображение «image: latest» в docker.io и quay.io .

 oc image mirror docker-registry.default.svc.cluster.local/project/image:latest 
   docker.io/project/image:stg 
   quay.io/project/image:prod
  

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