1

我有一个 Apache Web 服务器,它有一个基本身份验证保护的 URL,例如

www.example.com/protected/

在我构建图像时,在 Openshift 中的 Dockerfile 中,我有下载文件的 curl 命令。现在,当使用基本身份验证时,带有基本身份验证的 curl 命令看起来像这样

curl -u 用户名:密码http://www.example.com/protected/

问题是我不想让 Dockerfile 中的用户名:密码暴露。相反,我想在 Openshift/Kubernetes 密钥中隐藏凭据

通常用于秘密定义的 openshift yaml 文件在开始时看起来像这样

kind: Secret
  apiVersion: v1
    metadata:
     name: secret-name
    data:

问题:如何为基本身份验证凭据添加创建正确的秘密文件,然后如何从 Dockerfile 中引用它?

4

2 回答 2

0

查看构建秘密并阅读它们如何与 Docker 策略一起使用

要将这个秘密与curl命令一起使用,我建议-K使用带有秘密路径的选项。

于 2017-03-23T12:10:59.923 回答
0

最终创建了这个秘密(yaml 格式)。.curl-secret 文件中的数据应该是 base64 编码的,它在 Dockerfile 的 curl 命令中被解码(进一步向下)。

apiVersion: v1
data:
  .curl-secret: <YOUR_SECRET_HERE>
kind: Secret
metadata:
  creationTimestamp: null
  name: curl-secret
type: Opaque

然后在构建配置中添加对秘密的引用。

  source:
    type: Git
    git:
      uri: 'https://GITHUB.URL'
      ref: master
    secrets:
      - secret:
          name: curl-secret

然后在 Dockerfile 我复制这个文件,使用它然后删除它。

COPY .curl-secret /tmp
curl -u $(cat /tmp/.curl-secret) -s -o /output.file
rm /tmp/.curl-secret
于 2017-03-27T08:12:05.187 回答