我在kubernetes 8集群上安装了helm 2.6.2。helm init工作得很好。但是,当我运行helm list时,会出现这个错误。
helm list
Error: configmaps is forbidden: User "system:serviceaccount:kube-system:default" cannot list configmaps in the namespace "kube-system"如何修复此RABC错误消息?
发布于 2017-10-11 12:29:08
一旦这些命令:
kubectl create serviceaccount --namespace kube-system tiller
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
helm init --service-account tiller --upgrade问题已经解决了。
发布于 2018-11-13 09:03:07
更安全的答案
接受的答案提供了对Helm的完全管理访问,这并不是最好的安全解决方案。只要做更多的工作,我们就可以限制Helm对特定命名空间的访问。舵机文件中的更多细节。
$ kubectl create namespace tiller-world
namespace "tiller-world" created
$ kubectl create serviceaccount tiller --namespace tiller-world
serviceaccount "tiller" created定义一个允许Tiller管理tiller-world中的所有资源的角色,就像在role-tiller.yaml中一样
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: tiller-manager
namespace: tiller-world
rules:
- apiGroups: ["", "batch", "extensions", "apps"]
resources: ["*"]
verbs: ["*"]然后跑:
$ kubectl create -f role-tiller.yaml
role "tiller-manager" created在rolebinding-tiller.yaml中,
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: tiller-binding
namespace: tiller-world
subjects:
- kind: ServiceAccount
name: tiller
namespace: tiller-world
roleRef:
kind: Role
name: tiller-manager
apiGroup: rbac.authorization.k8s.io然后跑:
$ kubectl create -f rolebinding-tiller.yaml
rolebinding "tiller-binding" created之后,您可以运行helm init在tiller-world命名空间中安装Tiller。
$ helm init --service-account tiller --tiller-namespace tiller-world现在,在您的环境变量中使用--tiller-namespace tiller-world或设置TILLER_NAMESPACE=tiller-world作为所有命令的前缀。
更多未来证明答案
别再用蒂勒了。舵机3完全消除了对Tiller的需求。如果使用Helm 2,可以使用helm template从Helm图表生成yaml,然后运行kubectl apply将对象应用到Kubernetes集群。
helm template --name foo --namespace bar --output-dir ./output ./chart-template
kubectl apply --namespace bar --recursive --filename ./output -o yaml发布于 2018-07-16 14:12:17
Helm使用“默认”服务帐户运行。您应该为它提供权限。
只读权限的:
kubectl create rolebinding default-view --clusterrole=view --serviceaccount=kube-system:default --namespace=kube-system用于管理访问的:例如:安装软件包.
kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:defaulthttps://stackoverflow.com/questions/46672523
复制相似问题