openshift - 将输入 key 安装到 OpenShift 构建配置中

标签 openshift

我有 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 呢?我还没发现。

所以我有以下问题:

  1. 如何添加 my_secret作为现有构建配置的输入 secret ,例如 my_bc

  2. 构建时输入的 secret 会出现在哪里,例如在哪个路径下可以 Dockerfile获取存储在 my_secret 中的私钥?

最佳答案

这个过程现在对我有用(感谢@GrahamDumpleton 的指导):

  1. 暂时保留构建配置的源 secret ; get bc/my_bc -o jsonpath='{.spec.source.sourceSecret}'报告map[name:my_secret] (没有路径)
  2. 添加输入密码以在 .spec.source.secrets 处构建配置YAML 对应于 oc explain bc.spec.source.secrets :oc edit bc/my_bc
  3. 健全性检查: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
  4. 访问内部的 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' 的建议)
  5. 重建并重新部署镜像
  6. 健全性检查: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/

相关文章:

jenkins - 如何使用 Jenkins 和 openshift 定义 BuildConfig 对象

java - 开类。不部署 WAR

kubernetes - Openshift Origin 1.5.1在DeploymentConfig上的Pod反关联性不起作用

java - git update 出现错误

spring - 最佳 Spring MVC、Hibernate、Mysql 和 Maven 应用程序托管服务器

java - 如何打开 Openshift - 端口 9111(grpc 应用程序)

python - 在 OpenShift 上使用 pip 安装 Git 托管的模块

mysql - Openshift,无法从控制台连接到Mysql

security - 固定Docker套接字的选项

tomcat - 从部署在 OpenShift 中的 Tomcat webapp 访问文件系统