Helm 3 的 Kubernetes 权限安装到特定命名空间

Kubernetes permissions for Helm 3 install to specific namespace

我正在尝试设置一个用户,该用户将有权使用 Helm 3 安装到特定命名空间。 (对于我的 CI/CD 系统。)

例如,如果用户尝试 运行 一个 helm upgrade --install--namespace=dev 那么它工作得很好。但是如果他们尝试 --namespace=test 它将失败。

但我发现自己被这些选择淹没了。创建角色时,您必须选择 apiGroupsresourcesverbs。我看到一个名为 deployments 的资源,但我读到还需要秘密访问。我做了一些谷歌搜索,但大多数点击都是关于配置 Helm 2(带舵柄)的。

使用 Helm 3 安装所需的最低 Kubernetes 权限是多少?

在 Kubernetes 中,最佳做法是确保您的应用程序在您指定的范围内运行,这就是为什么您必须将角色授予用户或特定于应用程序的服务帐户。详细了解服务帐户权限 in the official Kubernetes docs

要限制用户对特定命名空间的访问,您可以使用 editadmin 角色。如果您的图表创建角色和角色绑定或与之交互,您将需要使用 admin ClusterRole。

此外,您还可以创建具有 cluster-admin 访问权限的 RoleBinding。授予用户 cluster-admin 在命名空间范围内的访问权限可以完全控制命名空间中的每个资源,包括命名空间本身。

对于此示例,我们将创建一个具有 edit 角色的用户。首先,创建命名空间:

$ kubectl create namespace your-namespace

现在,在该命名空间中创建 RoleBinding,授予用户 edit 角色。

$ kubectl create rolebinding steve-edit
    --clusterrole edit \​
    --user steve \​
    --namespace your-namespace

此命令将创建角色绑定 steve-edit。此角色绑定将 clusterrole edit 中定义的权限授予命名空间 your-namespace

的用户 steve

Edit 是默认的 clusterrole,它允许 read/write 访问命名空间中的大多数对象。它不允许查看或修改角色或角色绑定。

看看:rbac-namespace-helm.

了解集群角色:rbac-clusteroles, kubernetes-authorization

您还可以在集群范围内授予特定用户 read/write 访问权限,这样您就可以在任何命名空间中安装 helm。您必须授予用户 admincluster-admin 访问权限。

在此处阅读更多内容:cluster-scope-rbac-helm