【问题标题】:How do I tell helm to create internal secrets in namespace如何告诉 helm 在命名空间中创建内部机密
【发布时间】: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 网站上搜索发现:

在 Helm 3 中,有关特定版本的信息现在存储在与版本本身相同的命名空间中

但我已将部署设置在所需的命名空间中。我的myapp/templates/deployment.yaml 文件有:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
  namespace: myapp-namespace

所以我不知道如何告诉 helm 在这个 myapp-namespace 中创建它的内部机密。

其他搜索

更新 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


【解决方案1】:

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

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

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 2016-02-05
    • 2021-04-27
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    • 2020-06-27
    相关资源
    最近更新 更多