You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
1.4 KiB

package test
import (
"k8s-manager/handler/common"
"log"
"k8s.io/client-go/discovery"
"k8s.io/client-go/tools/clientcmd"
)
func DiscoveryClientGroupAndVersions() {
//discovery.DiscoveryClient{}
// 1. 配置
config, err := clientcmd.BuildConfigFromFlags("", "../"+common.KubeConfigPath)
if err != nil {
log.Fatalln(err)
}
// 2. 客户端
discoveryClient, err := discovery.NewDiscoveryClientForConfig(config)
if err != nil {
log.Fatalln(err)
}
// 3. 获取资源,获取全部的组和版本资源
apiGroups, apiResourceList, err := discoveryClient.ServerGroupsAndResources()
if err != nil {
log.Fatalln(err)
}
// 4. 处理结果
// groups
for _, g := range apiGroups {
log.Println("----------------Group----------------")
log.Printf("Name: %s \n", g.Name)
// version
log.Println("================Versions================")
for _, v := range g.Versions {
log.Printf("GroupVersion: %s \n", v.GroupVersion)
}
}
log.Println("******************************************************")
// apiResourceList
for _, ar := range apiResourceList {
log.Println("----------------apiResource----------------")
log.Printf("GroupVerion: %s, ", ar.GroupVersion)
log.Println("----------------Resources----------------")
for _, r := range ar.APIResources {
log.Printf("Name: %s Namespace: %v\n", r.Name, r.Namespaced)
}
}
//log.Println(_)
}