init clientset

main
han-joker 10 months ago
parent 8a8e852d9b
commit 82e9378a19

@ -0,0 +1,43 @@
package common
import (
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/clientcmd"
)
// 存储已初始化好的 clientSet 变量
var clientSet *kubernetes.Clientset
// GetClientSet 单例的获取ClientSet的方法
// if clientSet == nil
// true: 未初始化初始化将其存储到clientSet变量中返回
// false: 已初始化,直接返回
func GetClientSet() (*kubernetes.Clientset, error) {
// 1. clientSet 是否已经初始化
// 已初始化
if clientSet != nil {
return clientSet, nil
}
// 未初始化,需要初始化
// 2. 配置 kubeconfig, 得到clientClientSet对象
// 配置文件位置
kubeConfigPath := ".kube/config"
// 构建配置,读取配置文件内容,解析为配置对象
config, err := clientcmd.BuildConfigFromFlags("", kubeConfigPath)
if err != nil {
return nil, err
}
// 3. 使用配置得到ClientSet对象
cs, err := kubernetes.NewForConfig(config)
if err != nil {
return nil, err
}
// 4. 存储初始化好的ClientSet对象
clientSet = cs
// clientSet 初始化成功
return clientSet, nil
}

@ -2,35 +2,19 @@ package node
import (
"context"
"k8s-manager/handler/common"
"log"
"net/http"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/clientcmd"
"github.com/gin-gonic/gin"
)
// List 获取NodeList
func List(ctx *gin.Context) {
// 1. 配置 kubeconfig, 得到clientClientSet对象
// 配置文件位置
kubeConfigPath := ".kube/config"
// 构建配置,读取配置文件内容,解析为配置对象
config, err := clientcmd.BuildConfigFromFlags("", kubeConfigPath)
if err != nil {
log.Println(err)
ctx.JSON(http.StatusOK, gin.H{
"code": 1,
"message": err.Error(),
})
return
}
// 使用配置i得到ClientSet对象
clientSet, err := kubernetes.NewForConfig(config)
// 1. 得到clientClientSet对象
clientSet, err := common.GetClientSet()
if err != nil {
log.Println(err)
ctx.JSON(http.StatusOK, gin.H{

Loading…
Cancel
Save