我有 OpenShift 3.9 构建配置 my_bc
和一个 secret my_secret
类型 kubernetes.io/ssh-auth
。 secret 是这样创建的:
oc create secret generic my_secret \
--type=kubernetes.io/ssh-auth \
--from-file=key
我已将其作为源 secret 安装到 my_bc
中,和oc get bc/my_bc -o yaml
揭示了这个规范:
source:
contextDir: ...
git:
uri: ...
sourceSecret:
name: my_secret
type: Git
因此,从 OpenShift 构建器可以从我的私有(private) Git 存储库中提取并使用其 Docker 策略生成镜像的意义上来说,它已经很有效。
我现在想添加my_secret
也作为my_bc
的输入 secret 。我的理解是,这不仅允许构建器使用它(作为源 secret ),而且还允许构建中的其他组件也可以选择它(作为输入 secret )。例如。对于 Docker 策略,它将存在于 WORKDIR
.
documentation通过一个在创建构建配置时添加输入 key 的示例来解释这一点:
oc new-build \
openshift/nodejs-010-centos7~https://github.com/openshift/nodejs-ex.git \
--build-secret secret-npmrc
现在对应的spec指的是secrets
下的 secret (不是: sourceSecret
),大概是因为它现在是输入 secret (而不是:源 secret )。
source:
git:
uri: https://github.com/openshift/nodejs-ex.git
secrets:
- destinationDir: .
secret:
name: secret-npmrc
type: Git
oc set build-secret
显然允许使用命令行参数 --source
将源 secret (以及推送和拉取 secret - 这些用于与容器注册表交互)添加到构建配置中(以及 --push
/--pull
),但是输入 secret 呢?我还没发现。
所以我有以下问题:
如何添加
my_secret
作为现有构建配置的输入 secret ,例如my_bc
?构建时输入的 secret 会出现在哪里,例如在哪个路径下可以
Dockerfile
获取存储在my_secret
中的私钥?
最佳答案
这个过程现在对我有用(感谢@GrahamDumpleton 的指导):
- 暂时保留构建配置的源 secret ;
get bc/my_bc -o jsonpath='{.spec.source.sourceSecret}'
报告map[name:my_secret]
(没有路径) - 添加输入密码以在
.spec.source.secrets
处构建配置YAML 对应于oc explain bc.spec.source.secrets
:oc edit bc/my_bc
- 健全性检查:
oc get bc/my_bc -o jsonpath='{.spec.source.secrets}'
报告[map[destinationDir:secret secret:map[name:my_secret]]]
;oc describe bc/my_bc | grep 'Source Secret:'
报告Source Secret: my_secret
(无路径)和oc describe bc/my_bc | grep "Build Secrets:"
报告Build Secrets: my_secret->secret
- 访问内部的 secret
Dockerfile
初步的方式:COPY secret/ssh-privatekey secret/my_secret
,RUN chmod 0640 secret/my_secret
;调整ssh-privatekey
如果有必要(按照oc get secret/my_secret -o jsonpath='{.data}' | sed -ne 's/^map\[\(.*\):.*$/\1/p'
的建议) - 重建并重新部署镜像
- 健全性检查:
oc exec -it <pod> -c my_db file /secret/my_secret
报告/secret/my_secret: PEM RSA private key
(图像的WORKDIR
是/
)
关于openshift - 将输入 key 安装到 OpenShift 构建配置中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51850804/