如何使用uid在openhift中挂载秘密:gid设置正确

时间:2017-07-27 13:59:21

标签: postgresql ssl kubernetes openshift

我使用此Dockerfile在openshift上部署它。 - https://github.com/sclorg/postgresql-container/tree/master/9.5

一切正常,直到我启用ssl=on并通过卷装选项将server.crtserver.key文件注入postgres pod。

秘密就像

一样创建
$ oc secret new postgres-secrets \
  server.key=postgres/server.key \
  server.crt=postgres/server.crt \
  root-ca.crt=ca-cert

音量创建方式如下并附加到给定的BuidlConfig postgres。

$ oc volume dc/postgres \
  --add --type=secret \
  --secret-name=postgres-secrets \
  --default-mode=0600 \
 -m /var/lib/pgdata/data/secrets/secrets/

问题是secret.crtsecret.key文件的已装载文件归root用户所有,但postgres期望它应由postgres用户拥有。因此,postgres服务器不会出现并说出这个错误。

  

等待服务器启动....致命:无法加载服务器   证书文件" /var/lib/pgdata/data/secrets/secrets/server.crt":   权限被拒绝停止等待pg_ctl:无法启动服务器

我们如何插入卷并更新其中的uid:guid文件?

1 个答案:

答案 0 :(得分:3)

看起来这并非易事,因为它需要设置卷安全上下文,以便pod中的所有容器都以特定用户https://docs.openshift.com/enterprise/3.1/install_config/persistent_storage/pod_security_context.html

运行

在Kubernetes项目中,这仍然在讨论中https://github.com/kubernetes/kubernetes/issues/2630,但似乎您可能必须使用安全上下文和PodSecurityPolicies才能使其正常工作。

我认为最简单的选择(不使用上述选项)将使用容器入口点,在实际执行PostgreSQL之前,它会将文件选择给适当的用户(在这种情况下为postgres)。