使用Go语言从Kubernetes集群外部调用Kubernetes API

首先

在调用Kubernetes(以下简称为K8s)的REST API时,有各种不同的客户端库可供使用,例如go/python等。

在这种情况下,许多示例都解释了如何从k8s集群内部或k8s容器中调用API,并且实际创建的内容最终也会成为这样。但在开发阶段,我想要从集群外部调用k8s API并编写代码,所以我查找了解决方法。
我创建了一个只设置连接目标的空config,然后逐步在其中覆盖所需的设置。

代码 (Daima)

将传递给BuildConfigFromFlags的IP地址是类似于https://10.0.1.44:32382的k8s API服务器地址和端口。
在BearerToken中指定的TOKEN是在secret中显示的令牌(类似于eyJhbGciOiJSUzI1NiIsImtpZCI的长字符串)。

导入适度恰当。

import(
    "fmt"
    meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    "k8s.io/client-go/kubernetes"
    "k8s.io/client-go/tools/clientcmd"
)
func main() {
    config, err := clientcmd.BuildConfigFromFlags("https://API_SERVER_ADDRESS:API_PORT", "")
    if err != nil {
        log.Fatal(err)
    }
    config.Insecure = true
    config.BearerToken = "YOUR TOKEN HERE"
    client, err := kubernetes.NewForConfig(config)

    if err != nil {
        log.Fatal(err)
    }

    pods, err := client.CoreV1().Pods("").List(meta_v1.ListOptions{})
    if err != nil {
        log.Fatal(err)
    }

    for _, pod := range pods.Items {
        fmt.Println(pod.Name)
    }

}

请提供参考资料。

以下是一个用中文本地化的解释,只需要一种选项:

https://qiita.com/dtan4/items/f2f30207e0acec454c3d

广告
将在 10 秒后关闭
bannerAds