如何设置 okd 以使用外部联系 docker 注册表?
How to setup okd to use external nexus docker registry?
我想用 OKD 中现有的 Nexus Docker 注册表替换 OKD 中的默认 docker 注册表。如何用 Nexus Docker 注册表替换 OKD 中存在的 docker 注册表?
我的想法是在 Nexus 存储库中托管我所有的图像。例如当我使用 S2I.
本主题(如@GhostCat 所示)让您的选择余地很大,直到您做出一些额外的决定。您可能需要调查几个 resources/topics 以帮助磨练您想要的结果:
1) Pushing/Pulling 来自外部注册表
在本主题中,我建议您不要 "replace" 内部注册表,而是 运行 与内部注册表一起使用的联结注册表。内部注册表仍然可以用于存储系统组件、s2i 映像生成器等,而 Nexus 可以作为您的应用程序的主要注册表。
- 对于图像拉取:每个 docker 主机都可以配置额外的外部注册表来搜索,只需编辑图像流或在部署/statefulset 等中包含完整的图像路径。
- 您可以修改构建配置以将构建的映像存储在外部注册表中https://blog.openshift.com/pushing-application-images-to-an-external-registry/
2) 将所有注册表 features/components 移动到 Nexus
在本主题中,您将需要阅读有关 OpenShift 的断开连接安装说明,并根据您自己的 Nexus 配置进行调整。本质上,您需要加载 Nexus 中的所有图像并修改 openshift 中的所有 templates/imagestreams 以指向新存储库。
- 按照此处的指导进行相应修改https://blog.openshift.com/pushing-application-images-to-an-external-registry/
- 这是一种不太常见的模式,实际上只有在完全断开连接的环境中的团队才会遵循。我们遇到的大多数团队都遵循上面 #1 中的指导。
感谢这篇文章,它很有帮助,但是没有办法将此设置为默认自动 select 吗?这样一来,我所有的构建映像都会转到我的外部 Nexus Docker 存储库吗?因为如果它转到内部注册表,那么我们会因内部注册表容器崩溃而重新启动而丢失图像。
尤其是S2I图像。
我看到一些想法需要讨论;
1) 如果你只是想让你的构建输出以另一个外部仓库而不是默认的内部仓库为目标,这可以在你的任何外部 ci/cd 系统中作为构建配置的一部分进行编码。 openshift 中最常见的方法是让 Jenkins 通过代码存储库中的 Jenkinsfile 创建构建配置。
我不知道有一种简单的记录方式可以覆盖系统中所有构建输出的默认配置或设置。
2) 如果您丢失了内部注册表中的图像,那么您没有利用持久存储,应该考虑这一点。请参阅[此处] (https://docs.okd.io/3.10/install_config/registry/extended_registry_configuration.html#docker-registry-configuration-reference-storage)
我想用 OKD 中现有的 Nexus Docker 注册表替换 OKD 中的默认 docker 注册表。如何用 Nexus Docker 注册表替换 OKD 中存在的 docker 注册表?
我的想法是在 Nexus 存储库中托管我所有的图像。例如当我使用 S2I.
本主题(如@GhostCat 所示)让您的选择余地很大,直到您做出一些额外的决定。您可能需要调查几个 resources/topics 以帮助磨练您想要的结果:
1) Pushing/Pulling 来自外部注册表
在本主题中,我建议您不要 "replace" 内部注册表,而是 运行 与内部注册表一起使用的联结注册表。内部注册表仍然可以用于存储系统组件、s2i 映像生成器等,而 Nexus 可以作为您的应用程序的主要注册表。
- 对于图像拉取:每个 docker 主机都可以配置额外的外部注册表来搜索,只需编辑图像流或在部署/statefulset 等中包含完整的图像路径。
- 您可以修改构建配置以将构建的映像存储在外部注册表中https://blog.openshift.com/pushing-application-images-to-an-external-registry/
2) 将所有注册表 features/components 移动到 Nexus
在本主题中,您将需要阅读有关 OpenShift 的断开连接安装说明,并根据您自己的 Nexus 配置进行调整。本质上,您需要加载 Nexus 中的所有图像并修改 openshift 中的所有 templates/imagestreams 以指向新存储库。
- 按照此处的指导进行相应修改https://blog.openshift.com/pushing-application-images-to-an-external-registry/
- 这是一种不太常见的模式,实际上只有在完全断开连接的环境中的团队才会遵循。我们遇到的大多数团队都遵循上面 #1 中的指导。
感谢这篇文章,它很有帮助,但是没有办法将此设置为默认自动 select 吗?这样一来,我所有的构建映像都会转到我的外部 Nexus Docker 存储库吗?因为如果它转到内部注册表,那么我们会因内部注册表容器崩溃而重新启动而丢失图像。
尤其是S2I图像。
我看到一些想法需要讨论;
1) 如果你只是想让你的构建输出以另一个外部仓库而不是默认的内部仓库为目标,这可以在你的任何外部 ci/cd 系统中作为构建配置的一部分进行编码。 openshift 中最常见的方法是让 Jenkins 通过代码存储库中的 Jenkinsfile 创建构建配置。 我不知道有一种简单的记录方式可以覆盖系统中所有构建输出的默认配置或设置。
2) 如果您丢失了内部注册表中的图像,那么您没有利用持久存储,应该考虑这一点。请参阅[此处] (https://docs.okd.io/3.10/install_config/registry/extended_registry_configuration.html#docker-registry-configuration-reference-storage)