【发布时间】:2021-04-30 00:42:00
【问题描述】:
当尝试运行 helm install 将应用程序部署到私有 K8S 集群时,我收到以下错误:
helm install myapp ./myapp
Error: create: failed to create: secrets is forbidden: User "u-user1"
cannot create resource "secrets" in API group "" in the namespace "default"
exit status 1
我知道这种情况正在发生,因为 helm在幕后创建了秘密来保存管理部署所需的信息。见Handling Secrets:
从 Helm v3 开始,发布定义默认存储为 Kubernetes Secret 资源,而不是 ConfigMap。
问题是 helm 试图在默认命名空间中创建机密,而我在私有云中工作,不允许在默认命名空间中创建资源。
如何告诉 helm 在创建需要使用的内部机密时使用命名空间?
寻找解决方案
在 helm 网站上搜索发现:
- https://helm.sh/docs/faq/ - 上面写着
在 Helm 3 中,有关特定版本的信息现在存储在与版本本身相同的命名空间中
但我已将部署设置在所需的命名空间中。我的myapp/templates/deployment.yaml 文件有:
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
namespace: myapp-namespace
所以我不知道如何告诉 helm 在这个 myapp-namespace 中创建它的内部机密。
其他搜索
-
Helm Charts create secrets in different namespace - 问一个不同的问题,关于如何在不同的命名空间中创建用户定义的秘密。
-
Helm upgrade is creating multiple secrets - 不同的问题,但没有答案(还)。
-
Secret management in Helm Charts - 提出不同的问题。
更新 1)
在寻找解决方案时,我尝试将 --namespace myapp-namespace 参数添加到 helm install 命令(见下文)。
helm install --namespace myapp-namespace myapp ./myapp
Error: create: failed to create: secrets is forbidden: User "u-user1"
cannot create resource "secrets" in API group "" in the namespace "myapp-namespace"
exit status 1
请注意,现在命名空间是 myapp-namespace,所以我相信 helm 现在正在我想要的命名空间中创建 internal 机密,所以我认为这回答了我最初的问题。
我想我现在有一个权限问题需要请 K8S 管理员解决。
【问题讨论】:
-
我认为这是一个权限问题。
标签: kubernetes-helm