首页 > 其他分享 >k8s_client-go 构建客户端的几种方式

k8s_client-go 构建客户端的几种方式

时间:2024-01-22 11:59:50浏览次数:36  
标签:return nil err kubernetes client go k8s kconf log

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
}

标签:return,nil,err,kubernetes,client,go,k8s,kconf,log
From: https://www.cnblogs.com/shangmo/p/17979720

相关文章

  • 如何使用 Helm 在 K8s 上集成 Prometheus 和 Grafana|Part 3
    在本教程的前两部分,我们分别了解和学习了Prometheus和Grafana的基本概念和使用的前提条件,以及使用Helm在Kubernetes上安装Prometheus。 在今天的教程中,我们将为你介绍以下内容: 安装Grafana;集成Prometheus和Grafana,Grafana将使用Prometheus作为数据源;使用......
  • 新品来袭,全国产ARM+FPGA--"RK3568J+Logos-2"工业核心板,让您的硬件设计“更简单”!
    如需选购,请登录创龙科技天猫旗舰店:tronlong.tmall.com!欢迎加入RK3568J技术交流群:567208221欢迎加入Logos-2技术交流群:311416997更多产品详情以及购买咨询可添加如下客服人员微信(即刻添加,马上咨询) 更多RK3568J+Logos-2产品资料可长按二维码识别下载  ......
  • django使用redis集群、连接池、MySQL连接池
    redis的相关设置CACHES={"default":{"BACKEND":"django_redis.cache.RedisCache","LOCATION":["redis://127.0.0.1:6379/1","redis://127.0.0.1:6380/1",#...],"OPTIONS":{"CLIENT_......
  • day38 K8S管理平台-Lens - K8S管理平台-Kuboard (11.1-11.2)
    11.1、K8S管理平台-Lens(两节)Lens简介lens是一款开源的KubenretesIDE,也可以作为桌面客户端,官方网站https://k8slens.dev,具有以下特性:完全开源,GitHub地址https://github.com/lensapp/lens实时展示集群状态内置Prometheus监控多集群,多个namespace管理原生K......
  • 从 Solidity 合约生成 Go 代码
    从Solidity合约生成Go代码在Ethereum开发中,我们经常需要在Go程序中与Solidity智能合约进行交互。这时,我们就需要将Solidity合约的ABI(ApplicationBinaryInterface)转换为Go代码。在本文中,我们将介绍如何使用 abigen 工具来完成这个任务。安装必要的工具首......
  • Go语言核心36讲 38 | bytes包与字节串操作(上)
    我相信,经过上一次的学习,你已经对strings.Builder和strings.Reader这两个类型足够熟悉了。我上次还建议你去自行查阅strings代码包中的其他程序实体。如果你认真去看了,那么肯定会对我们今天要讨论的bytes代码包,有种似曾相识的感觉。前导内容:bytes.Buffer基础知识strings包和b......
  • Go语言核心36讲 37 | strings包与字符串操作
    在上一篇文章中,我介绍了Go语言与Unicode编码规范、UTF-8编码格式的渊源及运用。Go语言不但拥有可以独立代表Unicode字符的类型rune,而且还有可以对字符串值进行Unicode字符拆分的for语句。除此之外,标准库中的unicode包及其子包还提供了很多的函数和数据类型,可以帮助我们解析各......
  • Go语言核心36讲 42 | bufio包中的数据类型 (上)
    今天,我们来讲另一个与I/O操作强相关的代码包bufio。bufio是“bufferedI/O”的缩写。顾名思义,这个代码包中的程序实体实现的I/O操作都内置了缓冲区。bufio包中的数据类型主要有:Reader;Scanner;Writer和ReadWriter。与io包中的数据类型类似,这些类型的值也都需要在初始化的时......
  • Go语言核心36讲 41 | io包中的接口和工具 (下)
    上一篇文章中,我主要讲到了io.Reader的扩展接口和实现类型。当然,io代码包中的核心接口不止io.Reader一个。我们基于它引出的一条主线,只是io包类型体系中的一部分。我们很有必要再从另一个角度去探索一下,以求对io包有更加全面的了解。下面的一个问题就与此有关。知识扩展问题:i......
  • Go语言核心36讲 40 | io包中的接口和工具 (上)
    我们在前几篇文章中,主要讨论了strings.Builder、strings.Reader和bytes.Buffer这三个数据类型。知识回顾还记得吗?当时我还问过你“它们都实现了哪些接口”。在我们继续讲解io包中的接口和工具之前,我先来解答一下这个问题。strings.Builder类型主要用于构建字符串,它的指针类型......