首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Docker构建策略从OpenShift秘密中填充环境变量

用Docker构建策略从OpenShift秘密中填充环境变量
EN

Stack Overflow用户
提问于 2018-10-02 14:07:27
回答 1查看 1.3K关注 0票数 0

我想使用在不透明的OpenShift秘密内部的构建荚作为环境变量。秘密包含三个键值对,因此它们应该作为三个环境变量可用。(这是OpenShift 3.9)。

我已经为OpenShift的源代码构建策略(sourceStrategy)找到了一个sourceStrategy,但是在构建配置与Docker (dockerStrategy)的上下文中需要这样做。oc explain建议将秘密提取到环境变量中,应该同时使用这两种构建策略。到目前为止,还不错:

代码语言:javascript
复制
oc explain bc.spec.strategy.sourceStrategy.env.valueFrom.secretKeyRef
oc explain bc.spec.strategy.dockerStrategy.env.valueFrom.secretKeyRef

我的构建配置是从一个模板创建的,因此我添加了一个类似于dockerStragegy兄弟级的部分,其中模板引用了构建配置:

代码语言:javascript
复制
  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

这个秘密是这样创造出来的:

代码语言:javascript
复制
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脚本中),并且需要为三个角色配置密码,这些密码应该来自于秘密。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-03 09:39:39

这是我的错误:env应该作为dockerStrategy的子级(而不是兄弟级)驻留在模板中(正如oc explain引用的路径所建议的那样)。现在我已经修复了这个问题,因此所需的部分现在显示在模板和构建配置中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52610119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档