github.com/banzaicloud/operator-tools@v0.28.10/pkg/crd/README.md (about) 1 2 ## CRD 3 4 Once an operator is installed and CRDs are applied, these commands help to verify CRDs are in place. 5 6 ```go 7 package main 8 9 import ( 10 "flag" 11 "fmt" 12 "log" 13 "os" 14 "path/filepath" 15 16 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 17 "k8s.io/client-go/kubernetes" 18 "k8s.io/client-go/tools/clientcmd" 19 20 "github.com/banzaicloud/operator-tools/pkg/crd" 21 ) 22 23 func main() { 24 var kubeconfig *string 25 if home := homeDir(); home != "" { 26 kubeconfig = flag.String("kubeconfig", filepath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file") 27 } else { 28 kubeconfig = flag.String("kubeconfig", "", "absolute path to the kubeconfig file") 29 } 30 flag.Parse() 31 32 config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig) 33 if err != nil { 34 log.Fatal(err) 35 } 36 clientset, err := kubernetes.NewForConfig(config) 37 if err != nil { 38 log.Fatal(err) 39 } 40 41 c := crd.NewCRD(clientset) 42 resources, err := c.ListAPIResources(metav1.GroupVersion{ 43 Group: "monitoring.coreos.com", 44 Version: "v1", 45 }) 46 if err != nil { 47 log.Fatal(err) 48 } 49 for _, resource := range resources { 50 fmt.Println(resource.Name) 51 } 52 // Output: 53 // alertmanagers 54 // servicemonitors 55 // prometheuses 56 // prometheusrules 57 // podmonitors 58 59 has, err := c.HasAPIResource(metav1.GroupVersion{ 60 Group: "monitoring.coreos.com", 61 Version: "v1", 62 }, "servicemonitors") 63 if err != nil { 64 log.Fatal(err) 65 } 66 fmt.Printf("%t\n", has) 67 // Output: true 68 } 69 70 71 func homeDir() string { 72 if h := os.Getenv("HOME"); h != "" { 73 return h 74 } 75 return os.Getenv("USERPROFILE") // windows 76 } 77 ```