当前位置: 首页 > 知识库问答 >
问题:

库伯内特斯RBAC规则动词列表

干浩阔
2023-03-14

我想给我的应用程序有限的访问权限来获取不同状态集(可能还有部署)的副本,并在必要时向上或向下扩展它们。

我已经为此创建了ServiceAccount、Rolebinding和Role,但是我找不到规则动词(“get”、“watch”、“list”、“update”)的完整列表以及它们的限制,例如,我是否可以使用< code>update进行缩放,或者我是否需要另一个动词?我在哪里可以找到描述这些动词的列表或表格?

我的yaml文件:

kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: scaler-role
  namespace: {{ .Release.Namespace  | quote }}
rules:
- apiGroups: ["apps"]
  resources: ["statefulset"]
  verbs: ["get", "watch", "list", "update"]

共有3个答案

谷梁淇
2023-03-14

动词列表可以在这里找到https://kubernetes.io/docs/reference/access-authn-authz/authorization/#review-your-request-attributes

在这里可以找到一个简短的描述https://kubernetes.io/docs/reference/access-authn-authz/authorization/#determine-请求动词

我有一个角色,用于更新部署的docker映像标签,如下所示(我不使用我的角色来创建部署,只是修补映像标签)

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: deployer
rules:
- apiGroups: ["apps"]
  resources: ["deployments"]
  verbs: ["get", "patch"]

慕铭
2023-03-14

以下是RBAC动词列表:

对于扩展,我认为您需要写入权限(创建更新补丁)以及读取权限(getlistwatch)。

鱼恩
2023-03-14

最好的方法是

kubectl api-resources --sort-by name -o wide

上面的api资源命令是显式的并且易于grep。可以这样获得可能的动词的完整列表:

$ kubectl api-resources --no-headers --sort-by name -o wide | sed 's/.*\[//g' | tr -d "]" | tr " " "\n" | sort | uniq
create
delete
deletecollection
get
list
patch
update
watch

API参考文档的资源操作部分(例如https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/)只谈了一点,但没有提到deletecollection(顺便说一句:请参阅有关deletecollection的有趣信息;建议每当您给予删除权限时,如果资源支持,也应给予Deltecollection权限)。

授权概述的“确定请求谓词”部分确实简要提到了 deletecollection,以及另外六个动词(例如 @RoryMcCune 正确指出的升级),不幸的是,这些动词没有出现在 kubectl api-resources -o wide 命令的输出中。

顺便说一下,< code>api-resources命令还列出了命令的简称,例如< code >服务的< code>svc。

 类似资料:
  • 我假设没有愚蠢的问题,所以这里有一个我找不到直接答案的问题。 现在的情况 我目前有一个运行1.15的Kubernetes集群。AKS上的x,通过Terraform部署和管理。AKS最近宣布Azure将在AKS上停用Kubernetes的1.15版本,我需要将集群升级到1.16或更高版本。现在,据我所知,直接在Azure中升级集群不会对集群的内容产生任何影响,即节点、豆荚、秘密和当前在那里的所有其他

  • 我在Kubernetes是个新手。我想知道在kubernetes环境中最好的生产部署场景是什么。 在过去的学派中,我习惯于将Web服务器(例如Nginx或Apache)放在DMZ层,而将其放在其他层(我们称之为层)。这样,只有web服务器在DMZ上,恶意攻击只能在web服务器VM上进行。 据我所知,K8S部署不再需要这种方法;这是因为K8S自己处理网络、吊舱和流量。所以我在考虑最确定的部署方案。

  • 据我所知,作业对象应该在一定时间后收获豆荚。但是在我的GKE集群(库伯内特斯1.1.8)上,“kubectl get pods-a”似乎可以列出几天前的豆荚。 所有这些都是使用乔布斯API创建的。 我确实注意到在使用 kubectl 删除作业后,pod 也被删除了。 我在这里主要担心的是,我将在批量作业中在集群上运行成千上万个pod,并且不想让内部待办系统过载。

  • 我试图设置Kubernetes入口,将外部http流量路由到前端pod(路径/)和后端pod(路径/rest/*),但我总是得到400错误,而不是主nginx索引。html。 所以我在第https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer页尝试了谷歌库伯内特斯的例子,但我总是得到400个错误。有什么想法吗?

  • 我是Kubernetes的新手,他们的概念我不太清楚:云提供商。 我已经使用RKE(Rancher引擎)安装了我的库伯内特斯集群。 我的集群设置在rancher2的顶部。 我的节点是托管OVH服务器的虚拟机。 我设法让运行中的应用程序具有L7入口和ClusterIP服务,但每次我尝试使用L4负载平衡器时,负载平衡器都处于挂起状态。根据https://github.com/rancher/ranch

  • 我有一个简单的容器,它由安装在阿尔卑斯山上的OpenLDAP组成。它被安装为以非root用户身份运行。我能够使用我的本地Docker引擎运行容器而没有任何问题。但是,当我将其部署到我们的库伯内特斯系统时,它几乎立即被OOMKill杀死。我尝试在没有任何更改的情况下增加内存。我还查看了pod的内存使用情况,没有发现任何异常。 服务器启动为slapd-d debug-hldap://0.0.0.0:1

  • 我正在尝试运行集成minikube与Jenkins。我得到以下异常: 配置如下Kubernetes url所示:192.168.99.101:8443 Kubernetes 1 希望你的协助。