0

我们正在尝试设置一个尽可能接近默认值的 OpenShift 流程,而不必使用 Jenkins。

到目前为止,我已经设法使 s2i 生成的 Dockerfile 适应我们的需求(以获得 s2i 映像的好处)并设置一个简单的“oc new-app”管道,该管道在 git 存储库推送生成的 docker 映像之后创建一个构建到一个镜像流和一个由镜像流更新触发的部署,推送到一个默认的 pod。这很好用。

现在,我们还希望将此 docker 映像推送到外部 docker 存储库(OpenShift 已知的 RED HAT CONTAINER REGISTRY),我基本上希望保留现有流程,而不是将其调整为使用外部注册表而不是内部注册表。

那么,我可以设置一个“构建”或类似的东西,除了获取该图像并将其推送到 docker 注册表之外什么都不做?如何使用oc命令进行设置?

4

2 回答 2

1

您想将构建的图像推buildConfig送到外部注册表,对吗?我认为工作流程是这样的:Using Docker Credentials for Private Registries

  • 创建凭据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>

我希望它对你有帮助。

于 2019-03-28T12:30:42.767 回答
1

您可以使用skopeo命令行工具将容器映像从一个 docker 注册表复制到另一个,而无需再次构建映像。

这是 Red Hat 官方支持的工具,它是新工具套件(buildah、podman、skopeo 等)的一部分,用于支持在无守护进程的 cri-o 容器运行时而不是 docker 之上运行 OpenShift 和 Kubernetes。

docker login通过或使用--src-credsand--dest-creds标志登录到源和目标注册表。

skopeo copy \
  --src-creds=testuser:testpassword \
  --dest-creds=otheruser:otherpassword \
  docker://myregistrydomain.com:5000/dockerimage:tag \
  docker://mysecondregistrydomain.com:5000/dockerimage:tag
于 2019-03-28T18:47:01.500 回答