3.3. 镜像源
您可以使用镜像向构建过程添加其他文件。输入镜像的引用方式与定义 From
和 To
镜像目标的方式相同。这意味着可以引用容器镜像和镜像流标签。在使用镜像时,必须提供一个或多个路径对,以指示要复制镜像的文件或目录的路径以及构建上下文中要放置它们的目的地。
源路径可以是指定镜像内的任何绝对路径。目的地必须是相对目录路径。构建时会加载镜像,并将指定的文件和目录复制到构建过程上下文目录中。这与源存储库内容要克隆到的目录相同。如果源路径以 /.
结尾,则复制目录的内容,但不在目的地上创建该目录本身。
镜像输入在 BuildConfig
的 source
定义中指定:
source: git: uri: https://github.com/openshift/ruby-hello-world.git ref: "master" images: 1 - from: 2 kind: ImageStreamTag name: myinputimage:latest namespace: mynamespace paths: 3 - destinationDir: injected/dir 4 sourcePath: /usr/lib/somefile.jar 5 - from: kind: ImageStreamTag name: myotherinputimage:latest namespace: myothernamespace pullSecret: mysecret 6 paths: - destinationDir: injected/dir sourcePath: /usr/lib/somefile.jar
如果您的集群使用 ImageDigestMirrorSet
、ImageTagMirrorSet
或 ImageContentSourcePolicy
对象来配置存储库镜像,则只能使用镜像的 registry 的全局 pull secret。您不能在项目中添加 pull secret。
需要 pull secret 的镜像
如果输入镜像需要 pull secret,您可以将 pull secret 链接到构建所使用的服务帐户。默认情况下,构建使用 builder
服务帐户。如果 secret 包含与托管输入镜像的存储库匹配的凭证,pull secret 会自动添加到构建中。要将 pull secret 连接到构建使用的服务帐户,请运行:
$ oc secrets link builder dockerhub
使用自定义策略的构建不支持此功能。
位于 mirrorr registry 中的需要 pull secret 的镜像
当使用 mirrorr registry 中的输入镜像时,如果出现 build error: failed to pull image
信息,您可以使用以下方法之一解决这个错误:
- 创建一个输入 secret,其中包含构建器镜像的仓库和所有已知 mirror 系统的身份验证凭据。在本例中,为到镜像 registry 及其 mirror 的凭证创建一个 pull secret。
-
使用输入 secret 作为
BuildConfig
对象上的 pull secret。