Kubernetes ServiceAccount资源和动词列表

时间:2019-10-02 16:53:27

标签: kubernetes

定义ServiceAccount时,您告诉Kubernetes您要授予访问权限的apiGroup,资源和动词。

apiVersion: v1
kind: ServiceAccount
...
kind: Role
rules:
- apiGroups: [""]
  resources: ["pods", "pods/exec", "persistentvolumeclaims", "services"]
  verbs: ["get", "watch", "list", "create", "update", "patch", "delete", "deletecollection"]

在哪里可以找到选项的完整列表?

Runinng kubectl api-resources -o wide给出了很多,但是不返回诸如pods/execpods/log之类的子资源。

1 个答案:

答案 0 :(得分:2)

只需执行:

kubectl api-resources --verbs=list --namespaced -o name \
  | xargs -n 1 kubectl get --show-kind --ignore-not-found -l <label>=<value> -n <namespace>

UNIX中的xargs命令是一个命令行实用程序,用于从标准输入构建执行管道。虽然像grep这样的工具可以接受标准输入作为参数,但许多其他工具却不能。使用xargs允许echo和rm和mkdir之类的工具接受标准输入作为参数。

要获取日志,请使用kubectl logs命令,如下所示:

kubectl logs your-pod-name -n namespace-name

定义RBAC角色所需的子资源和动词未记录在静态列表中的任何位置。它们可在发现文档中找到,即通过API例如/api/apps/v1

以下bash脚本将以以下格式列出所有资源,子资源和动词:

api_version resource: [verb]

其中api-versioncore的核心资源,在角色定义中应替换为""(带引号的空字符串)。

例如core pods/status: get patch update

该脚本需要[jq] [1]。

#!/bin/bash
SERVER="localhost:8080"

APIS=$(curl -s $SERVER/apis | jq -r '[.groups | .[].name] | join(" ")')

# do core resources first, which are at a separate api location
api="core"
curl -s $SERVER/api/v1 | jq -r --arg api "$api" '.resources | .[] | "\($api) \(.name): \(.verbs | join(" "))"'

# now do non-core resources
for api in $APIS; do
    version=$(curl -s $SERVER/apis/$api | jq -r '.preferredVersion.version')
    curl -s $SERVER/apis/$api/$version | jq -r --arg api "$api" '.resources | .[]? | "\($api) \(.name): \(.verbs | join(" "))"'
done

请注意,如果没有通过api列出动词,则输出将仅显示api版本和资源,例如

core pods/exec:

不幸的是,在以下资源的特定情况下,没有通过动词显示动词。

nodes/proxy
pods/attach
pods/exec
pods/portforward
pods/proxy
services/proxy

这些资源支持的动词如下:

nodes/proxy: create delete get patch update
pods/attach: create get
pods/exec: create get
pods/portforward: create get
pods/proxy: create delete get patch update
services/proxy: create delete get patch update

有关日志记录的文档:kubernetes-logging

您可以在这里找到更多信息:api-resources

有用的博客:kubectl-cheat-sheet