1.8. 为什么使用镜像流
镜像流及其关联标签提供了一个用于从 OpenShift Container Platform 中引用容器镜像的抽象集。镜像流及其标签用于查看可用镜像,确保您使用所需的特定镜像,即使存储库中的镜像发生变化也是如此。
镜像流不含实际镜像数据,它提供了相关镜像的一个单独的虚拟视图,类似于镜像存储库。
您可配置构建(Build)和部署(Depolyment)来监测一个镜像流的通知。当新的镜像被添加时,执行相应的构建或部署。
例如,如果部署正在使用某个镜像并且创建了该镜像的新版本,则会自动执行部署以获取镜像的新版本。
但是,如果部署或构建所用的 imagestreamtag 没有更新,则即使更新了容器镜像 registry 中的容器镜像,构建或部署仍会继续使用之前的,已知良好的镜像。
源镜像可存储在以下任一位置:
- OpenShift Container Platform 集成的 registry。
- 一个外部 registry,如 registry.redhat.io 或 Quay.io。
- OpenShift Container Platform 集群中的其他镜像流。
当您定义引用镜像流标签的对象时,如构建或部署配置,您将指向镜像流标签而不是存储库。您在构建或部署应用程序时,OpenShift Container Platform 会使用 imagestreamtag 来查询 Docker 存储库,以找到相应的镜像 ID,并使用正确的镜像。
镜像流元数据会与其他集群信息一起存储在 etcd 实例中。
使用镜像流有以下几大优势:
- 您可以添加标签、回滚标签和快速处理镜像,而无需使用命令行重新执行 push 操作。
- 当一个新镜像被推送(push)到 registry 时,可触发构建和部署。另外,OpenShift Container Platform 还针对 Kubernetes 对象等其他资源提供了通用触发器。
- 您可以为定期重新导入标记标签。如果源镜像已更改,则这个更改会被发现并反应在镜像流中。取决于构建或部署的具体配置,这可能会触发构建和/或部署流程。
- 您可使用细粒度访问控制来共享镜像,快速向整个团队分发镜像。
- 如果源更改,imagestreamtag 仍将指向已知良好的镜像版本,以确保您的应用程序不会意外中断。
- 您可以通过镜像流对象的权限配置安全性,以了解谁可以查看和使用镜像。
- 在集群级别上缺少读取或列出镜像权限的用户仍可使用镜像流来检索项目中标记的镜像。
您可以管理镜像流,将镜像流 与 Kubernetes 资源一起使用,并触发镜像流更新。