使用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