8.3.6. 输入 Secret
在某些情况下,构建操作需要凭证才能访问依赖的资源,但这些凭证最好不要在通过构建生成的最终应用程序镜像中可用。您可以定义 输入 secret 来实现这一目的。
例如,在构建 Node.js 应用程序时,您可以为 Node.js 模块设置私有镜像。要从该私有镜像下载模块,您必须为包含 URL、用户名和密码的构建提供自定义 .npmrc 文件。为安全起见,不应在应用程序镜像中公开您的凭证。
这个示例描述了 Node.js,但您可以使用相同的方法将 SSL 证书添加到 /etc/ssl/certs 目录,以及添加 API 密钥或令牌、许可证文件等。
8.3.6.1. 添加输入 secret
将输入 secret 添加到现有的 BuildConfig
中:
如果 secret 不存在,则进行创建:
$ oc create secret generic secret-npmrc \ --from-file=.npmrc=<path/to/.npmrc>
这会创建一个名为 secret-npmrc 的新 secret,其包含 ~/.npmrc 文件的 base64 编码内容。
将该 secret 添加到现有
BuildConfig
的source
部分中:source: git: uri: https://github.com/openshift/nodejs-ex.git secrets: - secret: name: secret-npmrc
要在新 BuildConfig
中包含该 secret,请运行以下命令:
$ oc new-build \ openshift/nodejs-010-centos7~https://github.com/openshift/nodejs-ex.git \ --build-secret secret-npmrc
在构建期间,.npmrc 文件将复制到源代码所在的目录中。在 OpenShift Container Platform S2I 构建器镜像中,这是镜像的工作目录,使用 Dockerfile 中的 WORKDIR
指令设置。如果要指定另一个目录,请在 secret 定义中添加 destinationDir
:
source: git: uri: https://github.com/openshift/nodejs-ex.git secrets: - secret: name: secret-npmrc destinationDir: /etc
您还可以指定创建新 BuildConfig
时的目标目录:
$ oc new-build \ openshift/nodejs-010-centos7~https://github.com/openshift/nodejs-ex.git \ --build-secret “secret-npmrc:/etc”
在这两种情况下,.npmrc 文件都会添加到构建环境的 /etc 目录中。请注意,对于 Docker 策略,目标目录必须是相对路径。