如何用Client-Go查询指定K8s资源(v1/Secret)是否为命名空间作用域
可行,直接查询v1 Secret的命名空间作用域方法
完全可以不用遍历所有API资源,直接精准定位到v1版本的Secret资源,获取它的命名空间作用域属性。
具体实现方式
使用ServerResourcesForGroupVersion方法直接指定目标API组版本(核心组的v1版本,组名为空字符串,对应版本字符串v1),再从返回的资源列表中找到Secret项即可:
client, err := kubernetes.NewForConfig(config) if err != nil { // 按需处理错误,这里用panic简化示例 panic(err) } // 直接请求核心组v1版本的所有资源 resList, err := client.Discovery().ServerResourcesForGroupVersion("v1") if err != nil { panic(err) } // 在v1组资源中查找Secret并输出命名空间作用域标识 for _, r := range resList.APIResources { if r.Kind == "Secret" { fmt.Printf("Secret 是否为命名空间作用域: %t\n", r.Namespaced) break // 找到目标后直接终止遍历,提升效率 } }
关键说明
ServerResourcesForGroupVersion方法能精准获取指定组版本的资源列表,比遍历全量资源的效率更高。- 核心API资源(如Secret、Pod、ConfigMap)的组名为空,所以组版本字符串直接写
v1;如果是扩展组资源(如Deployment对应apps/v1),则需要传入完整的group/version格式字符串。
内容的提问来源于stack exchange,提问作者Sandesh More
相关产品推荐
相关产品推荐

