kubebuilder的安装卸载与基本使用

目录

一、kubebuilder的安装

二、kubebuilder的卸载

三、创建项目


一、kubebuilder的安装

1.下载最新版kubebuilder(建议不要用,要求go的版本在1.19以上才可用)

#查看go环境变量
go env GOOS
go env GOARCH

sudo su -
curl -L -o kubebuilder https://go.kubebuilder.io/dl/latest/替换go env GOOS 字段/替换go env GOARCH字段
chmod +x kubebuilder && mv kubebuilder /usr/local/bin/

#验证是否安装成功
kubebuilder version

2.下载指定版本的kubebuilder(推荐)

os=$(go env GOOS)     #替换下面命令的darwin 
arch=$(go env GOARCH) #替换下面命令的amd64
wget https://github.com/kubernetes-sigs/kubebuilder/releases/download/v2.3.1/kubebuilder_2.3.1_darwin_amd64.tar.gz
tar xf kubebuilder_2.3.1_darwin_amd64.tar.gz
sudo mv 你的 kubebuilder_2.3.1_darwin_amd64的位置  /usr/local/kubebuilder
export PATH=$PATH:/usr/local/kubebuilder/bin

#ps:若kubebuilder version 显示“zsh: permission denied: kubebuilder”则执行
vim .zshrc
#文件末添加以下语句
export PATH=/usr/local/kubebuilder/bin:$PATH
source ~/.zshrc

二、kubebuilder的卸载

找到安装位置

 删除kubebuilder

sudo rmdir -rf kubebuilder

三、创建项目

1.创建项目

mkdir myCRD 
cd myCRD 
go mod init nginx-operator #没有gopath的情况下需要先使用gomod初始化项目

2.脚手架生成框架代码

#kubebuilder init --domain my.domain 这句命令会生成一些文件,包括main.go等文件 --skip-go-version-check 跳过go版本检查(高于1.17的时候)
kubebuilder init --domain nginx-operator --skip-go-version-check

这里创建的文件包括:

nginx-operator
├── config #运行 operator 所需的所有配置文件,目前里面包括 Kustomize YAML 配置文件,后续需要加入 CustomResourceDefinitions(CRD)和一些其他的配置文件
│      ├── default #包含 Kustomize base 文件,用于以标准配置启动 controller
│      ├── rbac #包含运行 controller 所需最小权限的配置文件
│      └── default #包含 Kustomize base 文件,用于以标准配置启动 
├── PROJECT #用于创建新组件的 Kubebuilder 元数据
├── Makefile #用于构建和部署 controller
├── main.go #程序的入口
└── ...

 

 3.main.go文件中核心方法介绍

func main() {
	//为 metrics 绑定一些基本的 flags。
	var metricsAddr string
	var enableLeaderElection bool
	flag.StringVar(&metricsAddr, "metrics-addr", ":8080", "The address the metric endpoint binds to.")
	//可添加新flag
	flag.StringVar(&metricsAddr, "potato-metrics-addr", ":8081", "The address the metric endpoint binds to.")
	flag.BoolVar(&enableLeaderElection, "enable-leader-election", false,
		"Enable leader election for controller manager. "+
			"Enabling this will ensure there is only one active controller manager.")
	flag.Parse()

	ctrl.SetLogger(zap.New(zap.UseDevMode(true)))

	//实例化一个 manager,用于跟踪我们运行的所有 controllers。 设置 shared caches 和可以连接到 API server 的 k8s clients 实例,将 Scheme 配置传入 manager。
	mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{
		Scheme:             scheme,
		MetricsBindAddress: metricsAddr,
		Port:               9443,
		LeaderElection:     enableLeaderElection,
		LeaderElectionID:   "70c42966.nginx-operator",
	})
	if err != nil {
		setupLog.Error(err, "unable to start manager")
		os.Exit(1)
	}

	// +kubebuilder:scaffold:builder

	//运行我们的 manager, 而 manager 又运行所有的 controllers 和 webhook。 manager 会一直处于运行状态,直到收到正常关闭信号为止。 这样,当我们的 operator 运行在 Kubernetes 上时,我们可以通过优雅的方式终止这个 Pod。
	setupLog.Info("starting manager")
	if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil {
		setupLog.Error(err, "problem running manager")
		os.Exit(1)
	}
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值