使用Go in Kubernetes提取服务的clusterIP

时间:2019-03-27 16:38:19

标签: go kubernetes

假设存在一个名称为“ 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”,有人可以告诉我怎么做吗?

0 个答案:

没有答案