kubernetes - 为每个命名空间设置Helm RBAC

标签 kubernetes rbac kubernetes-helm

我遵循官方Helm documentation的“在 namespace 中部署Tiller,仅限于仅在该 namespace 中部署资源”。这是我的bash脚本:

Namespace="$1"

kubectl create namespace $Namespace
kubectl create serviceaccount "tiller-$Namespace" --namespace $Namespace
kubectl create role "tiller-role-$Namespace" /
    --namespace $Namespace /
    --verb=* /
    --resource=*.,*.apps,*.batch,*.extensions
kubectl create rolebinding "tiller-rolebinding-$Namespace" /
    --namespace $Namespace /
    --role="tiller-role-$Namespace" /
    --serviceaccount="$Namespace:tiller-$Namespace"
helm init /
    --service-account "tiller-$Namespace" /
    --tiller-namespace $Namespace
    --override "spec.template.spec.containers[0].command'='{/tiller,--storage=secret}"
    --upgrade
    --wait

运行helm upgrade给我以下错误:

Error: UPGRADE FAILED: configmaps is forbidden: User "system:serviceaccount:kube-system:default" cannot list configmaps in the namespace "kube-system"



官方文档中有错误吗?我看错了吗?

最佳答案

我不确定脚本中的--resource标志正确语法如何,是否在此处允许使用星号“*”,请查看GitHub上报告的issue

$ kubectl create role "tiller-role-$Namespace" \
--namespace $Namespace \
--verb=* \
--resource=*.,*.apps,*.batch,*.extensions
the server doesn't have a resource type "*"

但是您可以在集群中检查此角色对象:
kubectl get role tiller-role-$Namespace -n $Namespace -o yaml
否则,请按照文档中的说明尝试在yaml文件中为tiller创建角色:
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: tiller-manager
  namespace: tiller-world
rules:
- apiGroups: ["", "batch", "extensions", "apps"]
  resources: ["*"]
  verbs: ["*"]

此外,请记住,如果您在非默认 namespace (tiller)中安装了default,则在调用tiller命令时,必须指定Helm所在的 namespace :
$ helm --tiller-namespace $Namespace version
Client: &version.Version{SemVer:"v2.11.0", GitCommit:"2e55dbe1fdb5fdb96b75ff144a339489417b146b", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.11.0", GitCommit:"2e55dbe1fdb5fdb96b75ff144a339489417b146b", GitTreeState:"clean"}

关于kubernetes - 为每个命名空间设置Helm RBAC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53324724/

相关文章:

kubernetes - 这个 yaml 的等效 kubectl 命令是什么?

kubernetes - Kubernetes中存在哪些RBAC规则的apiGroup和资源?

kubernetes - Hashicorp Vault - 代理注入(inject)器 - 这有意义吗?

Kubernetes:列出节点的所有 pod 和 pod 状态

mongodb - 连接到不同命名空间中的 Kubernetes mongo db

azure - 在azure中分配给资源创建者的角色是什么

kubernetes - helm 安装包传输错误

测试 Helm chart 模板

kubernetes - 使用静态IP公开Ladbalancer

cors - 在 Kubernetes API 中启用 CORS