package mainimport ( "context" "flag" "fmt" networkingv1beta1 "istio.io/API/networking/v1beta1" "istio.io/clIEnt-go/pkg/APIs/networking/v1beta1" versionedclIEnt "istio.io/clIEnt-go/pkg/clIEntset/versioned" "istio.io/clIEnt-go/pkg/informers/externalversions" v1 "k8s.io/APImachinery/pkg/APIs/Meta/v1" "k8s.io/clIEnt-go/tools/cache" "k8s.io/clIEnt-go/tools/clIEntcmd" "k8s.io/clIEnt-go/util/homedir" "log" "path/filepath")func main() { var kubeconfig *string if home := homedir.HomeDir(); home != "" { kubeconfig = flag.String("config", filepath.Join(home, ".kube", "config"), "(optional) absolute path to the kube config file") } else { kubeconfig = flag.String("config", "", "absolute path to the kube config file") } restConfig, err := clIEntcmd.BuildConfigFromFlags("", *kubeconfig) if err != nil { log.Fatalf("Failed to create k8s rest clIEnt: %s", err) } clIEntSet, err := versionedclIEnt.NewForConfig(restConfig) if err != nil { log.Fatalf("Failed to create istio clIEnt: %s", err) } factory := externalversions.NewSharedInformerFactory(clIEntSet, 0) Stopper := make(chan struct{}) // 启动 informer,List & watch go factory.Start(Stopper) virtualServiceInformer := factory.Networking().V1beta1().VirtualServices() virtualServiceIndexer := virtualServiceInformer.Informer() // 从 APIserver 同步资源,即 List if !cache.WaitForCacheSync(Stopper, virtualServiceIndexer.HasSynced) { panic("scaled_object informer timed out waiting for caches to sync") } vs, err := virtualServiceInformer.Lister().VirtualServices("default").Get("bookinfo") if err != nil { log.Fatalf("Failed to get virtualService: %s", err) } fmt.Println("virtualService--------", vs.name) vsNew := &v1beta1.VirtualService{ ObjectMeta: v1.ObjectMeta{ name: "bookinfo2", }, Spec: networkingv1beta1.VirtualService{ Hosts: []string{"*"}, Gateways: []string{"bookinfo-gateway"}, http: []*networkingv1beta1.httpRoute{ { Match: []*networkingv1beta1.httpMatchRequest{ { Uri: &networkingv1beta1.StringMatch{ MatchType: &networkingv1beta1.StringMatch_Prefix{ Prefix: "/static", }, }, }, }, Route: []*networkingv1beta1.httpRouteDestination{ { Destination: &networkingv1beta1.Destination{ Host: "productpage", Port: &networkingv1beta1.PortSelector{ Number: 8090, }, }, }, }, }, }, }, } _, err = clIEntSet.NetworkingV1beta1().VirtualServices("default").Create(context.Background(), vsNew, v1.CreateOptions{}) if err != nil { log.Fatalf("Failed to create virtualService: %s", err) } fmt.Println("创建成功") // Print all VirtualServices //vsList, err := clIEntSet.NetworkingV1Alpha3().VirtualServices("default").List(context.Background(), Metav1.ListOptions{}) //if err != nil { // log.Fatalf("Failed to get VirtualService in %s namespace: %s", "default", err) //} //for i := range vsList.Items { // vs := vsList.Items[i] // log.Printf("Index: %d VirtualService Hosts: %+v\n", i, vs.name) //}}
总结 以上是内存溢出为你收集整理的istio API全部内容,希望文章能够帮你解决istio API所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)