gpt4 book ai didi

go - 如何使用 ServiceAccount Token 连接到 Kubernetes 集群?

转载 作者:行者123 更新时间:2023-12-04 17:20:00 25 4
gpt4 key购买 nike

对于任何示例,client-go 使用 kubeconfig 文件连接到 kubernetes 集群,但我不想这样做。我已经创建了一个服务帐户,现在我有一个 ServiceAccount Token,如何在 kubernetes 集群之外使用这个 token 连接到 kubernetes 集群?

package main

import (
"flag"
"k8s.io/client-go/tools/clientcmd"
"log"
"k8s.io/client-go/kubernetes"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"fmt"
)

var clientset *kubernetes.Clientset

func main() {
k8sconfig := flag.String("k8sconfig","./k8sconfig","kubernetes config file path")
flag.Parse()
config , err := clientcmd.BuildConfigFromFlags("",*k8sconfig)
if err != nil {
log.Println(err)
}
clientset , err = kubernetes.NewForConfig(config)
if err != nil {
log.Fatalln(err)
} else {
fmt.Println("connect k8s success")
}


pods,err := clientset.CoreV1().Pods("").List(metav1.ListOptions{})
if err != nil {
log.Println(err.Error())
}
}

最佳答案

client-go 已经内置了In Cluster Authentication(从具有 ServiceAccount 的 Pod 使用)和 Out of Cluster Authentication(到从集群外部使用,例如用于本地开发)

client-go 有两个例子:

集群内示例非常短:

    // creates the in-cluster config
config, err := rest.InClusterConfig()
if err != nil {
panic(err.Error())
}
// creates the clientset
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
panic(err.Error())
}

你需要导入"k8s.io/client-go/rest"

关于go - 如何使用 ServiceAccount Token 连接到 Kubernetes 集群?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66730436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com