如何在亚马逊 eks 服务上使用 kubernetes go-client?
How to use kubernetes go-client on amazon eks service?
找了很久的文档,还是没有找到明确的连接步骤。
我想出了这个代码示例:
package aws
import (
"fmt"
"net/http"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/eks"
"github.com/joho/godotenv"
)
func Connect() {
godotenv.Load(".env")
session := session.Must(session.NewSession())
svc := eks.New(session)
clusters, err := svc.ListClusters(&eks.ListClustersInput{})
if err != nil {
fmt.Println(err.Error())
}
fmt.Println(clusters)
}
我的意思是,由于环境变量混乱,这仍然是 returns 403 禁止错误,但我猜代码是有效的。我的问题是,建立此连接:如何将此 svc
变量转换为来自 go 驱动程序的 *kubernetes.Clientset
变量?
您是否看过client-go example关于如何在集群内进行身份验证的内容?
向 Kubernetes API 进行身份验证的代码通常这样开始:
// 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())
}
我使用以下代码从本地计算机或任何 kubernetes 集群自动检测其 运行 的位置。
var config *rest.Config
if _, err := os.Stat("/var/run/secrets/kubernetes.io/serviceaccount/token"); err == nil {
config, err = rest.InClusterConfig()
if err != nil {
log.Fatal(err)
}
} else if os.IsNotExist(err) {
config, err = clientcmd.BuildConfigFromFlags("", *kubeConfig)
if err != nil {
log.Fatal("No serviceaccount mounted or -kubeconfig flag passed or .kube/config file \n " ,err)
}
}
// Create an rest client not targeting specific API version
clientSet, err := kubernetes.NewForConfig(config)
if err != nil {
log.Fatal(err)
}
找了很久的文档,还是没有找到明确的连接步骤。 我想出了这个代码示例:
package aws
import (
"fmt"
"net/http"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/eks"
"github.com/joho/godotenv"
)
func Connect() {
godotenv.Load(".env")
session := session.Must(session.NewSession())
svc := eks.New(session)
clusters, err := svc.ListClusters(&eks.ListClustersInput{})
if err != nil {
fmt.Println(err.Error())
}
fmt.Println(clusters)
}
我的意思是,由于环境变量混乱,这仍然是 returns 403 禁止错误,但我猜代码是有效的。我的问题是,建立此连接:如何将此 svc
变量转换为来自 go 驱动程序的 *kubernetes.Clientset
变量?
您是否看过client-go example关于如何在集群内进行身份验证的内容?
向 Kubernetes API 进行身份验证的代码通常这样开始:
// 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())
}
我使用以下代码从本地计算机或任何 kubernetes 集群自动检测其 运行 的位置。
var config *rest.Config
if _, err := os.Stat("/var/run/secrets/kubernetes.io/serviceaccount/token"); err == nil {
config, err = rest.InClusterConfig()
if err != nil {
log.Fatal(err)
}
} else if os.IsNotExist(err) {
config, err = clientcmd.BuildConfigFromFlags("", *kubeConfig)
if err != nil {
log.Fatal("No serviceaccount mounted or -kubeconfig flag passed or .kube/config file \n " ,err)
}
}
// Create an rest client not targeting specific API version
clientSet, err := kubernetes.NewForConfig(config)
if err != nil {
log.Fatal(err)
}