在非默认命名空间中使用Helm部署nginx

2w2cym1i  于 2022-09-20  发布在  Nginx
关注(0)|答案(1)|浏览(232)

我在这里看到了太多关于Helm和默认命名空间的问题,所以再发布一个是很尴尬的。我相信我检查了我看到的那些,但没有找到解决我的问题的方法。

Helm版本为3.9.3 Kubernetes:OpenShift 4.9

我只需执行以下操作即可创建ngix图表:

helm create disco

当我在默认项目/命名空间中部署此应用程序时,它工作得很好。然而,当我在非默认工作空间中部署它时,它失败了。

我在非默认工作空间中部署的命令:

oc new-project helm-sandbox
helm install disco . --namespace helm-sandbox

CLI似乎表明部署成功。但吊舱一直有CrashLoopBackoff。

Pod日志显示以下错误消息:

nginx: [warn] the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:2
2022/09/08 02:00:19 [emerg] 1#1: mkdir() "/var/cache/nginx/client_temp" failed (13: Permission denied)
nginx: [emerg] mkdir() "/var/cache/nginx/client_temp" failed (13: Permission denied)

你知道为什么我失败了吗?

yshpjwxd

yshpjwxd1#

默认情况下,每个Pod在OpenShift上使用default服务帐户,该服务帐户附加restricted SCC。

此外,Pod中的UID是从定义Pod的命名空间的openshift.io/sa.scc.uid-range注解中定义的范围中随机选择的。

因此,random UID可能没有写入/var/cache/nginx/目录的权限。

但是,将具有任何uid或非根SCC的UID更改为Pod使用的服务帐户并不是个好主意,除非Pod需要强大的权限才能工作。

如果希望缓存目录是临时目录,挂载EmptyDir或临时卷更好。

如果希望持久化,请将持久化卷装载为/var/cache/nginx

如果您需要更改UID,请将anyuid或非超级用户SCC赋予服务帐户。但是,将SCC赋予预定义的SCC并不是一件好事。因此,如果您需要使用restricted以外的SCC,您应该创建一个服务帐户并使用它启动您的Pod。

希望这些都有助于解决这个问题。

相关问题