Openshift 复制镜像到另一个镜像仓库
Openshift copy image to another image repository
我有一个带有 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 中的内部注册表。
有什么办法可以实现吗?
我没有测试过这个,但是 oc image mirror
命令可能适合你的用例,参考 Transferring Images
了解更多详情。该命令可以将注册表中的镜像复制到多个注册表中。例如,它显示了如何将内部图像“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
对于自动化,您可以通过使用 Configuring Post Commit Build Hooks trigger, or you may need to more complicated build process like Jenkins Pipeline 实现上述复制任务的脚本来实现。
我有一个带有 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 中的内部注册表。
有什么办法可以实现吗?
我没有测试过这个,但是 oc image mirror
命令可能适合你的用例,参考 Transferring Images
了解更多详情。该命令可以将注册表中的镜像复制到多个注册表中。例如,它显示了如何将内部图像“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
对于自动化,您可以通过使用 Configuring Post Commit Build Hooks trigger, or you may need to more complicated build process like Jenkins Pipeline 实现上述复制任务的脚本来实现。