我有一个OpenShift 3.9构建配置my_bc
和类型my_secret
的秘密kubernetes.io/ssh-auth
。秘密是这样创造的:
oc create secret generic my_secret \
--type=kubernetes.io/ssh-auth \
--from-file=key
我已将其作为源秘密安装到my_bc
中,并且oc get bc/my_bc -o yaml
揭示了此规范:
source:
contextDir: ...
git:
uri: ...
sourceSecret:
name: my_secret
type: Git
就此而言,从OpenShift构建器可以从我的私有Git存储库中提取并使用其Docker策略生成映像的角度来看,这已经很有效。
我现在想将my_secret
也作为输入密码添加到my_bc
。我的理解是,这不仅将允许构建器使用它(作为源秘密),而且还将允许构建中的其他组件也将其拾取(作为输入秘密)。例如。对于Docker策略,它将存在于WORKDIR
中。
documentation通过一个示例来说明这一点,该示例在创建构建配置时添加输入密码:
oc new-build \
openshift/nodejs-010-centos7~https://github.com/openshift/nodejs-ex.git \
--build-secret secret-npmrc
现在,相应的规范引用了secrets
下的机密(不是:sourceSecret
),大概是因为它现在是输入机密(不是:源机密)。
source:
git:
uri: https://github.com/openshift/nodejs-ex.git
secrets:
- destinationDir: .
secret:
name: secret-npmrc
type: Git
oc set build-secret
显然允许向带有命令行参数--source
(以及{{}的构建配置)添加源秘密(以及推和拉秘密-这些是与容器注册表交互的)。 1}} / --push
),但是输入机密呢?我还没找到。
所以我有这些问题:
如何将--pull
作为输入密码添加到现有构建配置(例如my_secret
)中?
输入密码会在构建时显示在哪里,例如my_bc
在哪个路径下可以提取存储在Dockerfile
中的私钥?
答案 0 :(得分:2)
此过程现在对我有用(感谢@GrahamDumpleton的指导):
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
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
是/
)答案 1 :(得分:0)
在对该问题的注释中,提到了修补BuildConfig。这是适用于v3.11.0的补丁:
$cat patch.json
{
"spec": {
"source": {
"secrets": [
{
"secret": {
"name": "secret-npmrc"
},
"destinationDir": "/etc"
}
]
}
}
}
$ oc patch -n your-eng bc/tag-realworld -p "$(<patch.json)"
buildconfig "tag-realworld" patched