使用SDK操作istio資源
更新時間 2024-09-09 19:53:50
最近更新時間: 2024-09-09 19:53:50
分享文章
本章節介紹如何使用SDK操作istio資源
Go語言版本
準備工作
- 創建應用服務網格實例。
- 到云容器引擎控制臺找到應用服務網格控制面部署所在的集群,創建命名空間demo。
- 獲取網格控制面云容器引擎集群的kubeconfig信息,保存到本地文件中。
- 準備一個VirtualService資源,保存到vs.yaml文件中。
具體操作
使用go在default命名空間創建VirtualService資源并列舉default命名空間下所有的VirtualService資源,代碼示例:
package main
import (
"context"
"flag"
"gopkg.in/yaml.v2"
"istio.io/client-go/pkg/apis/networking/v1beta1"
"istio.io/client-go/pkg/clientset/versioned"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/tools/clientcmd"
"log"
"os"
)
var (
ns = flag.String("namespace", "demo", "namespace to deploy")
vsFile = flag.String("vs", "vs.yaml", "virtual service yaml")
kubeConf = flag.String("kubeconfig", "", "kube config file")
)
func main() {
flag.Parse()
rc, err := clientcmd.BuildConfigFromFlags("", *kubeConf)
if err != nil {
panic(err)
}
clientset, err := versioned.NewForConfig(rc)
if err != nil {
panic(err)
}
bytes, err := os.ReadFile(*vsFile)
if err != nil {
panic(err)
}
vs := &v1beta1.VirtualService{}
err = yaml.Unmarshal(bytes, vs)
if err != nil {
panic(err)
}
log.Println(vs)
_, err = clientset.NetworkingV1beta1().VirtualServices(*ns).Create(context.TODO(), vs, v1.CreateOptions{})
if err != nil {
panic(err)
}
vsList, err := clientset.NetworkingV1beta1().VirtualServices(*ns).List(context.TODO(), v1.ListOptions{})
if err != nil {
panic(err)
}
for _, vsItem := range vsList.Items {
log.Println(vsItem)
}
}