Skip to content

Instantly share code, notes, and snippets.

@zeusro
Created June 10, 2021 02:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zeusro/b3138c62ef4a62b7a0e8fd05362f7b14 to your computer and use it in GitHub Desktop.
Save zeusro/b3138c62ef4a62b7a0e8fd05362f7b14 to your computer and use it in GitHub Desktop.
crd-type-client
package main
import (
"context"
"flag"
"fmt"
"gopkg.in/yaml.v2"
"io/ioutil"
v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/tools/clientcmd"
"k8s.io/client-go/util/homedir"
"log"
"os"
"os/signal"
"path/filepath"
"syscall"
)
const (
)
func main() {
var kubeconfig *string
if home := homedir.HomeDir(); home != "" {
kubeconfig = flag.String("kubeconfig", filepath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file")
} else {
kubeconfig = flag.String("kubeconfig", "", "absolute path to the kubeconfig file")
}
flag.Parse()
cfg, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)
if err != nil {
fmt.Printf("BuildConfigFromFlags err: %s \n", err)
}
var crd v1.CustomResourceDefinition
t,err := ioutil.ReadFile("apps.titanide.cn_projectinstances.yaml")
if err != nil {
fmt.Printf("ReadFile err: %s \n", err)
}
err = yaml.Unmarshal(t, &crd)
if err != nil {
log.Fatalf("error: %v", err)
}
_,err = apiextensionsv1.NewForConfigOrDie(cfg).ApiextensionsV1().CustomResourceDefinitions().Create(context.TODO(),&crd,metav1.CreateOptions{})
if err != nil {
log.Fatalf("Create: %v", err)
}
signalChan := make(chan os.Signal)
go func() {
}()
signal.Notify(signalChan, syscall.SIGTERM, syscall.SIGINT, syscall.SIGKILL)
<-signalChan
fmt.Println("end")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment