Kubernetes RBAC动词:没有列表,反之亦然?看没有清单?

潜水

尽管Kubernetes RBAC上有很多文档和示例以及可用于不同资源的动词,但我找不到关于某些动词是否总是组合使用或是否存在单独使用它们的用例的任何规则。特别是,我想知道动词get,list和watch。合并它们有​​什么用,特别是不合并时有什么用?

  • 允许获取资源但没有列出有什么用?
  • 互惠生,有没有允许获取列表的用途?也许沿着信息稀疏的路线?
  • 获取并列出,但没有手表?要仅限制受信任的主题和服务帐户,以使API服务器和etcd承受更大的压力?
  • 看没有清单或得到?那不是因为大多数客户是列表监视者而削弱了它们吗?
韦伯德

有趣的问题,这里有一些想法和实践中的用法示例。

在实践中还有更多示例。例如,您可以浏览浏览默认的ClusterRoles kubectl describe clusterroles要了解kubectl在后台请求的API,可以增加日志的详细程度,例如kubectl get pods -w -v 10

得到但不列出

您希望某人能够阅读他们按名称知道的资源,但不发现其他资源。例如,允许做kubectl get mypod,但不允许kubectl get pods

例子:

  • system:nodeClusterRole已经获得,但不是名单上的端点,肺静脉和PVC的权限。
  • system:corednsClusterRole已经获得,但不是名单上的节点的权限。
  • system:controller:expand-controllerClusterRole已经获得,但不是名单上的端点,秘密,和服务权限。

列出但没有得到

允许这样做,例如,kubectl get pods但不允许这样做kubectl get pod mypod这没有多大意义,因为您可以通过get获得的所有信息也都包含在list中但是,实际上有一些用法。

例子:

  • system:kube-dnsClusterRole有列表手表的端点和服务的权限,但没有得到
  • system:controller:daemon-set-controllerClusterRoel有列表手表的节点上的权限,但没有得到
  • system:corednsClusterRole有列表手表为端点的权限,命名空间,豆荚和服务,而不是得到

获取列出,但不观看

实际上,在大多数情况下,有清单的地方也会有手表您可以剥夺某人的监视权,以减少etcd上的监视者数量。用户可以执行kubectl get podskubectl get pods mypod,但不能使用该-w选项。

如果API不支持监视操作(例如可选的度量标准API),则也很有意义

例子:

  • system:controller:persistent-volume-binderClusterRole有得到列表的节点上的权限,但不能

观看,但不获取列出

关于用例,这没有多大意义,因为您可以通过getlist获得的所有信息也包含在watch中我不知道在实践中对此有任何具体用法。

但是,从技术上讲,这是可能的。例如,如果您具有Pod的监视权限,但没有getlist,则可以执行以下操作:

✅ kubectl get --raw="/api/v1/watch/namespaces/default/pods"
✅ kubectl get --raw="/api/v1/watch/namespaces/default/pods/mypod"

而且有效。但是,watch不建议使用这些端点,而应使用参数列表端点watch但这也可以:

✅ kubectl get --raw="/api/v1/namespaces/default/pods?watch=true"

但是,您不能像这样观看单个Pod,因为get端点没有watch参数。因此,以下内容无效:

❌ kubectl get --raw="/api/v1/namespaces/default/pods/mypod?watch=true"

而且,您根本无法使用kubectl观看资源。以下失败:

❌ kubectl get pods -w
❌ kubectl get pods mypod -w

因为kubectl监视请求之前分别创建了一个列表get请求,所以很可能会获取资源的,然后将这些资源包括在后续监视请求中。resourceVersion

注意:这意味着,如果您具有listwatch,则kubectl get pods -w可以使用,但kubectl get pods mypod -w不能使用;如果您有get and watch,则kubectl get pods mypod -w可以使用,但kubectl get pods -w不能使用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章