kubebuilder简介

kubebuilder的诞生背景

我们前面学习了使用 client-go 的运作流程,还学习了 code-generator 和controller-tools 等自动生成client、informer、lister和deepcopy的一系列技术,但是这么多工具都要记住使用方式,实在太繁琐了。懒是程序员进步的动力,那么能不能有一个 聚合型的工具,将这些工具汇总起来,我们只需要记住简短的几个命令,就能够实现一系列自动化生成的效果?kubebuilder就是这样一个工具

kubebuidler详细介绍

kubebuidler 是 kubernetes-sigs(特定兴趣小组)开发的一款用于Operator程序构建和发布的工具。在kubebuilder github仓库 中,对kubebuilder进行了详细介绍:

  • kubebuilder是一个使用自定义资源定义(CRD)构建 Kubernetes API 的框架。如同 Ruby的Rails框架 和 Java的SpringBoot 能够极大地减少Web开发中的重复工作一样,kubebuilder 可以极大的减小 kubernetes API 开发的复杂性,帮助我们开发出最佳实践的 kubernetes API。kubebuilder自动生成的代码并非简单的复制-粘贴,而是提供强大的库和工具来简化从零开始构建和发布 Kubernetes API
  • 另外重要的点:KubeBuilder 是在 controller-runtime 和 controller-tools 两个库的基础上开发的。Operator-SDK 是使用 Kubebuilder 作为库的进一步开发的项目

kubebuilder学习推荐

kubebuidler安装

安装方法一:kubebuilder官方文档中给出的方法

  • 安装最新发行版本

    1
    2
    3
    # download kubebuilder and install locally.
    curl -L -o kubebuilder "https://go.kubebuilder.io/dl/latest/$(go env GOOS)/$(go env GOARCH)"
    chmod +x kubebuilder && mv kubebuilder /usr/local/bin/
  • 安装github代码仓库中,master分支

    1
    2
    curl -L -o kubebuilder "https://go.kubebuilder.io/dl/master/$(go env GOOS)/$(go env GOARCH)"
    chmod +x kubebuilder && mv kubebuilder /usr/local/bin/

    可能遇到的问题:curl下载失败,比如报错:curl: (35) Encountered end of file。此时推荐使用安装方法二

安装方法二:直接下载kubenetes的可执行文件

先到 github 上找到你需要的发行版本:https://github.com/kubernetes-sigs/kubebuilder/releases;比如我要安装3.14.0,则点击进去
https://github.com/kubernetes-sigs/kubebuilder/releases/tag/v3.14.0
下载完,将下载的可执行包上传到 linux
如果你的linux网络ok,也可以直接在你的linux上执行

1
wget https://github.com/kubernetes-sigs/kubebuilder/releases/download/v3.14.0/kubebuilder_linux_amd64

然后就可以直接进行安装了

1
2
mv kubebuilder_linux_amd64 kubebuilder
chmod +x kubebuilder && mv kubebuilder /usr/local/bin/

验证安装是否成功

1
2
[root@master test]# kubebuilder version
Version: main.version{KubeBuilderVersion:"3.14.0", KubernetesVendor:"1.27.1", GitCommit:"11053630918ac421cb6eb6f0a3225e2a2ad49535", BuildDate:"2024-01-30T09:29:27Z", GoOs:"linux", GoArch:"amd64"}