Извлеките кластер службы IP с помощью go in kubernetes - PullRequest
0 голосов
/ 27 марта 2019

Предположим, что существует служба с именем "SVC", работающая в пространстве имен NS в кластере kubernetes. Мне нужно извлечь его 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", кто-нибудь может сказать, пожалуйста, как?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...