我刚安装了helm,然后执行helm list的时候,报以下错误: Error: configmaps is forbidden: User "system:serviceaccount:kube-system:default" cannot list resource "configmaps" in API group "" in the namespace "kube-system" 我该怎么解决?
此错误表明您的tiller充当“ kube-system:default”服务帐户,该帐户没有足够的角色绑定权限。
怎么做:
检查是否有tiller的账户
kubectl get serviceaccount [-n kube-system]
如果没有则创建:
kubectl create serviceaccount -n kube-system tiller
检查是否有role或clusterrole绑定。如果没那么高的安全要求,则可以使用特权很高的角色"cluster-admin":
kubectl get clusterrole -n kube-system
可以通过以下方式检查角色内容:
kubectl get clusterrole cluster-admin -o yaml -n kube-system
检查第一个子句中的account是否有clusterrole的绑定:
kubectl get clusterrolebinding [-n kube-system]
如果无法根据名称来判断,最简单地方式重新创建新的:
kubectl create clusterrolebinding tiller-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
最后,当有了帐户,角色和它们之间的绑定后,可以验证一下:
kubectl --namespace kube-system get deploy tiller-deploy -o yaml
部分输出如下:
dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30
如果有,则添加要使用的tiller帐户:
kubectl --namespace kube-system patch deploy tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
现在,重复前面的检查命令查看变化:
dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} serviceAccount: tiller <-- new line serviceAccountName: tiller <-- new line terminationGracePeriodSeconds: 30
你的答案