有没有办法列出特定运营商创建的所有资源及其状态?

Is there a way to list all resources created by a specific operator and their status?

我使用配置连接器https://cloud.google.com/config-connector/docs/overview

我使用配置连接器提供的 CRD 创建 gcp 资源:

kind: IAMServiceAccount
kind: StorageBucket
etc

现在我真正想要的是能够获得每个资源及其状态的简单列表(无论是否成功创建)。每个资源都是一行,类似于:kind, name, status, etc

kubectl 是否有办法获取由这样的操作员创建的所有资源的列表?我想我可以手动标记所有这些资源并尝试使用标签 select 但我真的不想那样做

编辑

根据评论我可以这样做,但很好奇是否有不那么笨拙的命令

kubectl get crds --selector cnrm.cloud.google.com/managed-by-kcc=true \
    -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' | xargs -n 1 \
    kubectl get -Ao jsonpath='{range .items[*]}{" Kind: "}{@.kind}{"Name: "}{@.metadata.name}{" Status: "}{@.status.conditions[].status}{" Reason: "}{@.status.conditions[].reason}{"\n"}{end}' --ignore-not-found

我对这个主题做了一些研究,我找到了 2 个可能的解决方案来检索由 config-connector:

创建的所有资源
  • $ kubectl api-resources 方式
  • $ kubectl get-all/ketalllabels的方式(默认没有安装请看说明)

引用类似问题的讨论可以在这里找到:


$ kubectl api-resources

正如我在评论中指出的那样,您可以使用以下表达式:

kubectl get crds --selector cnrm.cloud.google.com/managed-by-kcc=true -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' | xargs -n 1 kubectl get --ignore-not-found

剖析此解决方案:

  • kubectl get crds --selector cnrm.cloud.google.com/managed-by-kcc=true
    • 检索具有匹配选择器
    • Customer Resource Definitions
  • -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'
    • 使用 jsonpath 仅检索存储在 .metadata.name 键中的值(获取 crd 的名称)
  • | xargs -n 1 kubectl get
    • 将输出通过管道传输到 xargs 并将从上一个命令检索到的每个 CRD 用于 运行 $ kubectl get <RESOURCE>
  • --ignore-not-found
    • 不显示有关缺少资源的消息

也可以更改此命令以满足问题中显示的特定需求。

A side note!

Similar command is referenced in the github link I pasted above:


$ kubectl get-all/ketall

以上命令可用于检索集群中的所有资源。 它们默认不可用 kubectl,需要额外配置。

有关安装的更多参考可以在此 github 页面中找到:

使用 Kubernetes 官方文档中描述的方法:

Labels are intended to be used to specify identifying attributes of objects

Kubernetes.io: Docs: Concepts: Overview: Working with objects: Labels

你可以标记那些由配置连接器创建的资源(我知道你想避免它)并查找这样的资源:

  • $ kubectl get-all -l look=here
NAME                                                                      NAMESPACE         AGE
storagebucket.storage.cnrm.cloud.google.com/config-connector-bucket       config-connector  135m
storagebucket.storage.cnrm.cloud.google.com/config-connector-bucket-test  config-connector  13s

This resources have the .metadata.labels.look=here added to it's definitions.


其他资源: