目前,我们的 CI/CD 环境是基于 Kubernetes 的云。由于性能优势,Kubernetes 云提供商最近删除了 docker 守护程序。例如,Google Kubernetes Engine 或 IBM Cloud Kubernetes 仅具有 Containerd 运行时,用于运行但不构建容器映像。
像kaniko或jib这样的许多工具可以弥补这一差距。它们提供了一种非常有效地构建 docker 映像的方法,而无需 docker 守护程序。
问题来了:
- 图像“registry-x.com/repo/app1:v1-snapshot”从 CI 中的 jib 构建到 registry-x。
- 然后在某个时间点部署和测试图像“registry-x.com/repo/app1:v1-snapshot”,如果测试成功,则需要将其交付到注册表 Y,并且需要标记为稳定版本在注册表 X 中。
因此图像“registry-x.com/repo/app1:v1-snapshot”需要从“registry-x.com/repo/app1:v1-snapshot”标记为“registry-x.com/web/app1:v1” -release”,然后需要另外标记“registry-y.com/web/app1:v1-release”,并且都需要推送。
结果:开发中的快照映像在两个注册表中都可用,并带有发布标签。
那么如何在没有 docker 守护进程的情况下完成这 3 个简单的操作(Pull、Tag、Push)呢?似乎 kaniko 和 jib 不是办法。
我不想订购 VM 只是为了让 docker 守护程序来执行这些操作。而且我也知道 Jib 能够推送到多个注册表。但它不能只重命名图像。
也与去年的这个问题有关: 将图像从 docker 注册表克隆到另一个
问候,莱昂