通过Helm图表部署服务时,安装失败,因为不允许tiller
服务帐户创建ServiceMonitor
资源。
注:
ServiceMonitor
是Prometheus操作员定义的CRD,用于自动获取Pod中运行容器的指标。- Helm Tiller安装在单个名称空间中,RBAC是使用Role和RoleBinding设置的。
我想验证tiller
服务帐户的权限。kubectl
具有auth can-i
命令,类似这样的查询(见下文)总是返回no
。
kubectl auth can-i list deployment --as=tiller
kubectl auth can-i list deployment --as=staging:tiller
检查服务帐户权限的正确方法是什么?
如何启用tiller
帐户以创建ServiceMonitor资源?
4条答案
按热度按时间pdsfdshx1#
在尝试了很多东西并在谷歌上搜索了整个宇宙之后,我终于找到了这个关于使用RBAC和PSP保护集群的博客,其中给出了一个如何检查服务帐户访问权限的示例。
正确的命令为:
kubectl auth can-i <verb> <resource> --as=system:serviceaccount:<namespace>:<serviceaccountname> [-n <namespace>]
要检查
tiller
帐户是否有权创建ServiceMonitor
对象:kubectl auth can-i create servicemonitor --as=system:serviceaccount:staging:tiller -n staging
注意:为了解决
tiller
帐户的问题,我必须在monitoring.coreos.com
apiGroup中添加对servicemonitors
资源的权限。更改后,上述命令返回yes
(最终),Helm图表安装成功。更新了
tiller-manager
角色:mzmfm0qo2#
这将显示您在服务帐户
prom-stack-grafana
上拥有的权限:例如:kubectl -n监视授权can-i --list --as=系统:服务帐户:监视:prom堆栈图形
ndasle7k3#
注意:
kubectl auth can-i
命令有一个边缘情况/gotcha/错误,以避免值得注意的情况。基本上,可以使用与服务帐户类似的语法命名用户,并且可以欺骗服务帐户。
这让我困惑了好一段时间,所以我想分享它。
(The k auth can-i说yes的事实使我认为我的角色绑定语法是正确的,但它是错误的)
这是正确的:
下面是它错误的直观证明:
如果对命令式rbac命令的语法有疑问,可以通过以下方法快速查找:
1.搜索"rbac"
1.控制+f "kubectl创建角色绑定"在页面上获得正确语法的例子。
14ifxucb4#
如果你想进行现场测试,请创建一个包含serviceAccount密码的kube配置文件。我已经创建了上面的脚本来自动执行此操作:
然后执行该命令,它将创建一个kubeconfig文件。
别忘了
export KUBECONFIG
环境变量,现在你就像是真实的的ServiceAccount,可以玩角色了。