如何找到资源所属的API组?

问题描述 投票:0回答:1

在我的 k3s 集群中,我正在编辑

Role
以添加对资源的权限,例如
deployment

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  creationTimestamp: "2023-09-02T08:00:23Z"
  name: foo
  namespace: default
  resourceVersion: "432595"
  uid: 603d0e0b-62f8-4e46-a42c-66436203bdc9
rules:
- apiGroups:
  - apps. # I know API Group is 'apps' but I wonder how to figure it out in general
  resources:
  - deployments
  verbs:
  - get
  - list
  - watch

在上面的

apiGroups
字段中,根据我的谷歌搜索,我知道
deployment
资源的 API 组是
app

但我想知道一般如何使用

kubectl
命令找出某个资源属于哪个 API 组?

例如,我知道还有

kubectl api-resources
命令,但如果我为
deployment
资源运行它作为示例:

k api-resources | grep 'deployment'
NAME            SHORTNAMES   APIVERSION   NAMESPACED   KIND
deployments     deploy       apps/v1      true         Deployment

输出告诉我

APIVERSION
apps/v1
。但是当我看到 apps/v1 的值时,
API Group
到底是什么?我应该考虑
APIVERSION
的值是该资源的 API 组还是它始终是
/
的左侧是 API 组?

有人可以帮我澄清一下吗?谢谢你。

kubernetes kubectl
1个回答
0
投票

是的,您可以认为

/
的左侧始终是apiGroup。
app/v1
表示 REST API 路径,一般来说,api 路径类似于
/apis/$GROUP\_NAME/$VERSION
,其中 app 是 apiGroupv1apiVersion。

但有一个例外,如果您使用来自 core grouplegacy group 的组件,则定义看起来像

apiVersion: v1
而不是
apiVersion: core/v1

当我们尝试使用特定对象时,假设在您的示例中为

role
,我们可以浏览该特定组件的官方文档,或者您也可以浏览 api 参考文档来查找 apiGroup 该物体。

© www.soinside.com 2019 - 2024. All rights reserved.