我想使用在不透明的OpenShift秘密内部的构建荚作为环境变量。秘密包含三个键值对,因此它们应该作为三个环境变量可用。(这是OpenShift 3.9)。
我已经为OpenShift的源代码构建策略(sourceStrategy)找到了一个sourceStrategy,但是在构建配置与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脚本中),并且需要为三个角色配置密码,这些密码应该来自于秘密。
发布于 2018-10-03 09:39:39
这是我的错误:env应该作为dockerStrategy的子级(而不是兄弟级)驻留在模板中(正如oc explain引用的路径所建议的那样)。现在我已经修复了这个问题,因此所需的部分现在显示在模板和构建配置中。
https://stackoverflow.com/questions/52610119
复制相似问题