假设存在一个名称为“ SVC”的服务,该服务在kubernetes集群中的名称空间NS中运行。我需要提取其IP(即clusterIP)
我可以编写一些代码(在下面),该代码有效,但是我认为不应采用这种方法。由于将经常调用此代码,因此每次加载配置都是浪费。我该怎么做呢?
namespace := "NS"
serviceName := "SVC"
clusterIP := ""
kubeconfig := filepath.Join(
os.Getenv("HOME"), ".kube", "config",
)
config, err := clientcmd.BuildConfigFromFlags("", kubeconfig)
if err != nil {
fmt.Println("BuildConfigFromFlags Failed")
return string(""), err
}
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
fmt.Println("NewForConfig Failed")
return string(""), err
}
svcList, err := clientset.CoreV1().Services(namespace).List(metav1.ListOptions{
FieldSelector: "metadata.name=" + serviceName,
})
//fmt.Printf("kubecofig: %s\n",kubeconfig)
//fmt.Printf("config: %#v", config)
//fmt.Printf("nameSpaceList: %#v", svcList)
for _, svc := range svcList.Items {
clusterIP = svc.Spec.ClusterIP
break
}
fmt.Printf("Service IP: %s", clusterIP)
有没有一种方法可以编写这样的简洁代码并获得所需的结果。如果可以使用“&corev1.service”,有人可以告诉我怎么做吗?