问题描述
我一生无法找到有关所有Kubernetes RBAC动词做什么的详细表格。我看到人们推荐的唯一资源是this one,这是可悲的不足。
所以我一直在通过实验来解决。
到目前为止,除UPDATE
之外,大多数内容都非常简单明了。我似乎无法做到这一点。
我给我的别名的权限:
[GET
命名空间中[{{1}
我尝试过的事情:
-
UPDATE
-
deployments
-
default
所有这些均因错误而失败:kubectl set image deployment/hello-node echoserver=digitalocean/flask-helloworld --as user
然后我尝试了一些推出命令,例如:
-
kubectl edit deploy hello-node --as user
但是他们失败了,因为我没有副本集访问权限。
TLDR :Kubernetes RBAC kubectl apply -f hello-node.yaml --as eks-user
动词的意义是什么?
为此,有没有人提供所有RBAC动词的详细列表?
解决方法
紧接着,我去了Kubernetes REST API documentation,其中列出了您可以对REST服务器进行的所有HTTP API调用的一长列。
我认为这会有所帮助,因为一(1)个可用的表来描述不同动词可以做什么,方法是将它们与HTTP动词进行比较。所以计划是:
- 查看
update
权限等同于什么HTTP动词。 - 转到参考资料,找到在部署中使用该HTTP动词的示例。
- 测试等效的
kubectl
。
所以
什么是HTTP动词等同于update
权限?
PUT
。
使用PUT
进行部署的示例?
替换规模:替换指定部署的规模
HTTP请求
PUT /apis/apps/v1/namespaces/{namespace}/deployments/{name}/scale
等效的kubectl
命令是什么?
好吧,我们正在扩展部署,所以我要说:
kubectl scale deployment hello-node --replicas=2
我可以运行此命令吗?
我先将权限扩展到deployment/scale
,然后再运行它。
Error from server (Forbidden): deployments.apps "hello-node" is forbidden: User "user" cannot patch resource "deployments/scale" in API group "apps" in the namespace "default"
好吧。这将显示patch
权限。
尽管根据API文档,所使用的HTTP动词为 PUT
,而根据PUT
却等同于update
)有关这些RBAC动词的任何信息的来源。
反正。
我的结论:看来update
确实毫无用处,至少对于部署而言。
起初,RBAC的设置似乎很有希望,但是老实说,随着我发现越来越多的边缘案例和未记录的谜团,它开始失去光泽。访问权限似乎绝对是最糟糕的事情,否则您的安全性最终将变得更加模糊而不是确定性。