kubebuilder简介
github仓库 https://github.com/kubernetes-sigs/kubebuilder
官方文档 https://book.kubebuilder.io/introduction.html
中文翻译 https://xuejipeng.github.io/kubebuilder-doc-cn/ 但是此文档还未完成,后续是否继续未知,所以朋友们尽量看官方文档。
kubebuilder安装
在ws中的ubuntu中安装
#download kubebuilder and install locally.
curl -L -o kubebuilder https://github.com/kubernetes-sigs/kubebuilder/releases/download/v3.6.0/kubebuilder_linux_amd64
chmod +x kubebuilder && sudo mv kubebuilder /usr/local/bin/
目前,使用的kubebuilder版本为:v3.6.0
命令
创建工程目录
mkdir -p ~/repos/demo
cd ~/repos/demo
初始化git
这里的目的是用git来记录kubebuilder都新建或修改了什么文件
git init
初始化go mod
go mod init test-crd.com/demo/app
go mod init mashibing.com/demo/app
提交一个版本,作为开始基线
git add .
git commit -m "go mod init"
初始化 kubebuilder
命令
kubebuilder init --domain test-crd.com
kubebuilder init --domain mashibing.com
提交一个版本,便于稍后查看都做了什么
git add .
git commit -m "kuberbuild init"
创建 api
命令
kubebuilder create api --group demo --version v1 --kind App
提交一个版本,便于稍后查看都做了什么
git add .
git commit -m "kubebuild create api"
代码结构
domain: mashibing.com # 初始化的时候 --domain 的参数
layout:
- go.kubebuilder.io/v3 # 插件名称,决定了生成文件的内容
projectName: demo # 项目名称,默认值是项目所在文件夹的名称
repo: mashibing.com/demo/app # 项目的 git repo 地址
resources:
- api:
crdVersion: v1 # 版本,创建 api 的时候 --version 的参数
namespaced: true # 默认行为,指定这个资源是 namespace
controller: true # 创建 api 的时候,是否生成 controller
domain: mashibing.com # 和第一层级中的 domain 相同
group: demo # 创建 api 时 --group 的参数。在 operator 中,group 的名称为 <group>.<domain> 也就是说,这里group的名字是demo.mashibing.como
kind: App # 创建 api 时 --kind 的参数
path: mashibing.com/demo/app/api/v1 # api 的 pkg 路径
version: v1 # api 的版本
version: "3" # kubebuilder 生成的项目的版本