k8s_client-go 构建客户端的几种方式
kubernetes client-go 构建客户端的几种方式#
package callk8s
import (
"context"
"log"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
)
type KConf struct {
Configure string
C *kubernetes.Clientset
NameSpace string
}
// NewCli 从指定配置文件中加载配置
func NewCli(confDir, namespace string) (*KConf, error) {
var kconf KConf
kconf.Configure = confDir
kconf.NameSpace = namespace
config, err := clientcmd.BuildConfigFromFlags("", kconf.Configure)
if err != nil {
log.Println(err)
return &kconf, err
}
c, err := kubernetes.NewForConfig(config)
if err != nil {
log.Println(err)
return &kconf, err
}
kconf.C = c
return &kconf, nil
}
// NewFromBytes 从二进制内存中加载配置
func NewFromBytes(configBytes []byte, namespace string) (*KConf, error) {
var kconf KConf
nccfb, err := clientcmd.NewClientConfigFromBytes(configBytes)
if err != nil {
log.Println("Err: ", err)
return &kconf, err
}
tmpf, err := nccfb.ClientConfig()
if err != nil {
log.Println("Err: ", err)
return &kconf, err
}
kconf.C, err = kubernetes.NewForConfig(tmpf)
if err != nil {
log.Println("Err: ", err)
return &kconf, err
}
return &kconf, nil
}
// RestClientFromSA 从pod sa 中获取 ,/var/run/secerts/kubernetes.io/serviceaccount/token
func RestClientFromSA() (*KConf, error) {
var kconf KConf
config, err := rest.InClusterConfig()
if err != nil {
log.Printf("Err: %v", err)
return &kconf, err
}
kconf.C, err = kubernetes.NewForConfig(config)
if err != nil {
return &kconf, err
}
return &kconf, nil
}
分类:
Golang
, Kubernetes
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2021-01-22 Golang 自用第三方库
2021-01-22 《Go 语言并发之道》读后感-第五章
2021-01-22 《Go 语言并发之道》读后感 - 第四章