我想在构建容器中的不透明OpenShift机密上用作环境变量。该机密包含三个键值对,因此它们应该可以作为三个环境变量使用。 (这适用于OpenShift 3.9)。
我已经为OpenShift的Source构建策略(sourceStrategy
)找到了documented example,但是在使用Docker构建策略(dockerStrategy
)的构建配置的上下文中需要使用它。 oc explain
建议将机密提取到环境变量中应同时适用于这两种构建策略。到目前为止,一切都很好:
oc explain bc.spec.strategy.sourceStrategy.env.valueFrom.secretKeyRef
oc explain bc.spec.strategy.dockerStrategy.env.valueFrom.secretKeyRef
我的构建配置是通过模板创建的,因此我添加了以下部分作为dockerStragegy
的同级,其中模板引用了构建配置:
env:
- name: SECRET_1
valueFrom:
secretKeyRef:
name: my-secret
key: role-1
- name: SECRET_2
valueFrom:
secretKeyRef:
name: my-secret
key: role-2
- name: SECRET_3
valueFrom:
secretKeyRef:
name: my-secret
key: role-3
秘密是这样创建的:
oc create secret generic my-secret \
--from-literal=role-1=... --from-literal=role-2=... --from-literal=role-3=...
上传新模板(使用oc replace
)并重新创建应用程序,并由此创建应用程序的构建配置(使用oc new-app
)后,我观察到以下内容:
env
(已通过oc get template -o yaml
选中)。env
(已通过oc get bc -o yaml
选中)。为什么我能正确地假设秘密可以在Docker构建策略的环境变量中可用的原因是什么,我是否正确?对于上下文:我的Dockerfile建立了一个关系数据库(在其ENTRYPOINT
脚本中),并且需要为三个角色配置密码,而这些密码应该来自秘密。
答案 0 :(得分:1)
这是我的错误:env
应该作为dockerStrategy
的子对象(而不是兄弟姐妹)驻留在模板中(如oc explain
的引用路径所建议的那样)。现在,我已修复此问题,因此所需的部件现在同时显示在模板和构建配置中。