首页 > 解决方案 > 有没有办法列出特定操作员创建的所有资源及其状态?

问题描述

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

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

kind: IAMServiceAccount
kind: StorageBucket
etc

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

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

编辑

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

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

标签: kubernetesgoogle-cloud-platformkubectlkubernetes-operatorgcp-config-connector

解决方案


我对此主题进行了一些研究,并找到了两种可能的解决方案来检索由以下人员创建的所有资源config-connector

  • $ kubectl api-resources方法
  • $ kubectl get-all/ketall方式labels(默认不安装请看说明)

可以在此处找到引用类似问题的讨论:


$ 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.namekey 中的值(获取 crd 的名称)
  • | xargs -n 1 kubectl get
    • 将输出通过管道传输到xargs并使用CRD从上一个命令中检索到的每个命令来运行$ kubectl get <RESOURCE>
  • --ignore-not-found
    • 不显示有关缺少资源的消息

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

旁注!

我在上面粘贴的 github 链接中引用了类似的命令:


$ kubectl get-all/ketall

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

关于安装的更多参考可以在这个 github 页面中找到:

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

标签旨在用于指定对象的标识属性

Kubernetes.io:文档:概念:概述:使用对象:标签

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

  • $ 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

此资源已.metadata.labels.look=here添加到它的定义中。


其他资源:


推荐阅读