如何告诉helm在命名空间中创建内部机密



当尝试运行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在幕后创建了秘密,以保存管理部署所需的信息。参见处理机密:

从Helm v3开始,发行版定义默认存储为Kubernetes Secret资源,而不是ConfigMap。

问题是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在不同的名称空间中创建机密-提出了一个关于如何在不同的命名空间中创建用户定义的机密的不同问题。

  • Helm升级正在创造多个秘密——不同的问题,但还没有答案。

  • 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现在正在我想要的名称空间中创建内部机密,所以我认为这回答了我最初的问题。

我想我现在有一个权限问题,需要请K8S管理员解决。

必须使用--namespace选项才能告诉helm install您正在使用的命名空间。您指定的语法是正确的。

helm install --namespace myapp-namespace myapp ./myapp

您也可以将--namespace放在命令的末尾,如下所示:

helm install myapp ./myapp --namespace myapp-namespace

使用此语法,helm将在您指定的命名空间中创建内部机密。

这样做可以防止default命名空间被污染。

然后需要以下命令来查看安装。

helm list --namespace myapp-namespace
helm list --all-namespaces

最新更新