Docker 将Curl命令的基本auth转换为openshift的秘密

Docker 将Curl命令的基本auth转换为openshift的秘密,docker,openshift,kubernetes,openshift-origin,openshift-enterprise,Docker,Openshift,Kubernetes,Openshift Origin,Openshift Enterprise,我有一个Apache web服务器,它有一个基本的受身份验证保护的URL e.x www.example.com/protected/ 在Openshift中的Dockerfile中,当我构建图像时,我使用curl命令下载文件。现在,使用basic auth时,curl命令与basic auth类似 curl-u用户名:密码 问题是我不想让Dockerfile中的username:password公开。相反,我想在Openshift/Kubernetes秘密中隐藏凭据 通常情况下,用于秘密定义的

我有一个Apache web服务器,它有一个基本的受身份验证保护的URL e.x

www.example.com/protected/

在Openshift中的Dockerfile中,当我构建图像时,我使用curl命令下载文件。现在,使用basic auth时,curl命令与basic auth类似

curl-u用户名:密码

问题是我不想让Dockerfile中的username:password公开。相反,我想在Openshift/Kubernetes秘密中隐藏凭据

通常情况下,用于秘密定义的openshift yaml文件在开始时是这样的

kind: Secret
  apiVersion: v1
    metadata:
     name: secret-name
    data:
问题:如何添加并为基本身份验证凭据创建适当的机密文件,以及如何从Dockerfile中引用该文件?

请查看并阅读

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

查看并阅读


要将此机密与
curl
命令一起使用,我建议利用
-K
选项和指向机密的路径。

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

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

COPY .curl-secret /tmp
curl -u $(cat /tmp/.curl-secret) -s -o /output.file
rm /tmp/.curl-secret

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

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

COPY .curl-secret /tmp
curl -u $(cat /tmp/.curl-secret) -s -o /output.file
rm /tmp/.curl-secret

不幸的是,这种方法并不安全,因为当您使用
COPY
时,docker会创建一个单独的层,其中包含您的机密文件。所以,实际上,机密文件仍然存在,可能会在以后公开。不幸的是,这种方法不安全,因为当您使用
复制
时,docker会创建一个单独的层,其中包含您的机密文件。所以,实际上,这个秘密文件仍然存在,可能会在以后被公开。
COPY .curl-secret /tmp
curl -u $(cat /tmp/.curl-secret) -s -o /output.file
rm /tmp/.curl-secret