Kubernetes规则动词列表

时间:2019-08-26 16:15:53

标签: kubernetes service-accounts rbac

我想给我的应用程序有限的访问权限,以获取不同状态集(可能还有部署)的副本,并在必要时按比例放大或缩小。

我为此创建了ServiceAccount,Rolebinding和Role,但是找不到规则动词的完整列表(“ get”,“ watch”,“ list”,“ update”)及其局限性,例如我可以使用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"]

4 个答案:

答案 0 :(得分:7)

Here是RBAC动词的列表:

RBAC verbs

要进行缩放,我认为您需要写权限(createupdatepatch)以及读权限(getlistwatch

答案 1 :(得分:2)

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

和简要说明可以在这里https://kubernetes.io/docs/reference/access-authn-authz/authorization/#determine-the-request-verb

我有一个用于更新部署的docker image标签的角色,看起来像这样(我不使用我的创建部署,只是为了修补image标签)

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

答案 2 :(得分:1)

在Linux / Mac / WSL / etc。

  1. 运行:kubectl代理&
  2. 运行:curl http://127.0.0.1:8001 -k | grep -v'路径'| grep'“'| sed -e's /” // g'-e's /,// g'|排序边读行; kubectl是否得到--raw $ {line};完成| jq |更少
  3. 搜索所需的api,以减少动词的使用。

答案 3 :(得分:1)

最好的方法是

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

上面的api-resources命令是显式的,很容易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(顺便说一句,请参见{{3} };建议每当您授予delete时,也应授予deletecollection权限(如果资源支持)。

interesting info about deletecollectionDetermine the Request Verb部分确实提到了deletecollection,以及另外六个动词(例如@RoryMcCune正确指出的escalate)不幸的是,这些内容不会显示在kubectl api-resources -o wide命令的输出中。

顺便说一句,api-resources命令还列出了命令的简称,例如svc代表services