首页 > 解决方案 > Openshift 将图像复制到另一个图像存储库

问题描述

我有一个带有 buildConfig 的 openshift 部署,如下所示:

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 pods 必须使用 openshift 内部注册表中的图像创建,但我只想在 AWS ECR 中将该图像的副本自动推送到内部注册表。

我有办法可以实现吗?

标签: amazon-web-servicesopenshiftamazon-ecr

解决方案


我尚未对此进行测试,但oc image mirror命令可能适合您的用例,有关详细信息,请参阅传输图像 。该命令可以将注册表中的一个镜像复制到多个注册表中。例如,它显示了如何将内部图像“image:latest”复制到docker.ioquay.io

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

对于自动化,您可以通过使用配置提交后构建挂钩触发器实现上述复制任务的脚本来执行此操作,或者您可能需要更复杂的构建过程,例如Jenkins Pipeline


推荐阅读