首页 > 其他分享 >client-go InClusterConfig方法

client-go InClusterConfig方法

时间:2024-12-28 22:08:32浏览次数:8  
标签:InClusterConfig v1 client io go k8s

InClusterConfig方法

package main

import (
	"context"
	"test/signals"
	"time"
	"os"

	core_v1 "k8s.io/api/core/v1"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/client-go/kubernetes"
	"k8s.io/client-go/rest"
	klog "k8s.io/klog/v2"
)

func testInClusterConfig(stopCh <-chan struct{}) {
	// 除了手动设置kube-apiserver ip+port环境变量,还要手动设置/var/run/secrets/kubernetes.io/serviceaccount/token和ca.crt
	// 如果没有ca.crt,那么报错tls: failed to verify certificate: x509: certificate signed by unknown authority
	os.Setenv("KUBERNETES_SERVICE_HOST", "127.0.0.1")
	os.Setenv("KUBERNETES_SERVICE_PORT", "42929")

	cfg, err := rest.InClusterConfig()
	if err != nil {
		klog.Fatalf("Error building kubeconfig: %s", err.Error())
	}

	kubeClient, err := kubernetes.NewForConfig(cfg)
	if err != nil {
		klog.Fatalf("Error building kubernetes discoveryclient: %v", err)
	}

	ns := &core_v1.Namespace{
		ObjectMeta: metav1.ObjectMeta{
			Name: "test",
		},
	}
	if _, err := kubeClient.CoreV1().Namespaces().Create(context.Background(), ns, metav1.CreateOptions{}); err != nil {
		klog.Infof("create ns test failed, err is %v", err)
	} else {
		klog.Infof("create ns test success")
	}

	select {
	case <-stopCh:
		return
	case <-time.After(time.Hour):
	}
}

func main() {
	stopCh := signals.SetupSignalHandler()
	testInClusterConfig(stopCh)
}

tlsTransportCache的get方法
获取Client的transport,使用ServiceAccount时tlsConfig不会跳过证书认证,但是客户端只有根证书,只能完成与kube-apiserver的https单向认证,后面由token继续完成认证和鉴权。

 

标签:InClusterConfig,v1,client,io,go,k8s
From: https://www.cnblogs.com/WJQ2017/p/18638043

相关文章

  • 2024-12-28:求出出现两次数字的 XOR 值。用go语言,给定一个数组 nums,其中的数字出现的频
    2024-12-28:求出出现两次数字的XOR值。用go语言,给定一个数组nums,其中的数字出现的频率要么是一次,要么是两次。请找出所有出现两次的数字,并计算它们的按位XOR值。如果没有数字出现两次,则返回0。1<=nums.length<=50。1<=nums[i]<=50。nums中每个数字要么出现过一......
  • Client_客户端 and Server_服务器
    定义ClientClient客户端发请求,要求turtle做//等待turtle的节点开启,rostopic里面产生"/spawn"话题ros::service::waitForService("/spawn");//定义一个客户端服务(ServiceClient客户端+服务):add_turtleros::ServiceClientadd_turtle//ros句柄调用serviceClient;类型是......
  • 介绍一下logos这个词法分析工具,它和nom相比如何?我看lalrpop官网给出的示例就是logos配
    UUUUUUUUUUUUUUUUUUUUUULogos简介Logos是一个用于词法分析的高效Rust库,其设计目标是简单、快速且高效。它通过声明式的方式定义词法规则,并利用Rust的强类型系统生成轻量级的词法分析器。Logos的特点声明式规则:使用Rust的枚举定义每种Token类型,并通过属性宏指定......
  • C# 和 Go 的协同开发:打造高效并发与企业级应用的最佳实践
    在现代软件开发中,微服务架构和分布式系统成为主流。开发者面临着多种挑战,其中最常见的两个需求是高并发处理和复杂的企业级业务逻辑。C#和Go作为两种广泛使用的编程语言,各自有独特的优势,在应对这些挑战时能够发挥不同的作用。C#强调企业级开发的完整性和稳定性,特别适合构......
  • 从高并发到企业级应用:C# 和 Go 的完美结合
    在现代软件开发中,随着微服务架构和分布式系统的广泛应用,开发者需要应对各种高并发、高性能的需求。而在选择编程语言时,C#和Go是两种非常流行且各具优势的语言,分别擅长不同的应用场景。C#,以其强大的企业级开发支持和丰富的生态系统在后端、桌面和Web开发中占据重要地位;而......
  • 基于python+Django+mysql校园二手书籍交易平台系统设计与实现
     博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育、辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩,提供核心代码讲解,答辩指导。项目配有对应开发......
  • 每天40分玩转Django:在线课程平台实战
    在线课程平台实战一、系统功能概述表模块功能技术要点课程管理课程CRUD、章节管理、视频上传DjangoModels、DRF、阿里云OSS用户系统注册登录、学习记录、购买记录DjangoAuth、Session支付系统订单生成、支付宝支付、微信支付支付接口集成、异步通知视频播放在线播放、进......
  • keepass实现google自输入_SSH_TELNET_RDP联动
    涉及到的是使用开源密码管理工具KeePass结合特定插件实现自动化密码填充的功能,特别是在谷歌浏览器中的应用。KeePass是一款强大的密码管理软件,它允许用户安全地存储各种账号的用户名和密码,并通过加密保护这些敏感信息。1.keepass安装及配置1.1程序下载地址下载、安......
  • Omnissa Horizon Clients 2412 发布 - 虚拟桌面基础架构 (VDI) 和应用软件
    OmnissaHorizonClients2412发布-虚拟桌面基础架构(VDI)和应用软件OmnissaHorizon,之前称为VMwareHorizon,通过高效、安全的虚拟桌面交付增强您的工作空间请访问原文链接:https://sysin.org/blog/omnissa-horizon-8/查看最新版。原创作品,转载请保留出处。作者主页:sys......
  • 深度解析Google Places API的使用与实践
    #GooglePlacesAPI实战攻略老铁们,今天咱们来聊聊如何使用GooglePlacesAPI来搜索和获取地点信息。这波操作可以说是相当丝滑,对从事地理位置相关开发的小伙伴非常有帮助。下面我会详细讲解这个API的技术原理、实际应用,以及有哪些工具可以帮助我们提高开发效率。##......