KubeBuilder 基础入门指南让你不在迷失方向
副标题[/!--empirenews.page--]
KubeBuilder 简明教程
安装 访问官方仓库下载已经编译好的二进制文件: Releases · kubernetes-sigs/kubebuilder (github.com) 本文编写的时候 kubebuilder 已经推出了 v3.0.0-rc.0 版本,所以为了避免刚写完新版就已经 release 了的尴尬情况,本文直接使用的是 3.0 版本 下载好了之后记得将对应文件加入 PATH 当中 安装成功之后使用 kubebuilder version 可以查看安装的版本信息 ❯ kubebuilder version Version: main.version{KubeBuilderVersion:"3.0.0-rc.0", KubernetesVendor:"1.19.2", GitCommit:"90fe4124c4c6965c6bfac63339888956952cda90", BuildDate:"2021-04-08T17:36:28Z", GoOs:"linux", GoArch:"amd64"} 项目初始化先创建一个空文件夹,然后在文件夹内执行下方命令 kubebuilder init --domain lailin.xyz --repo github.com/mohuishou/blog-code/k8s-operator/02-kubebuilder –-domain lailin.xyz 我们的项目的域名 --repo xxx 是仓库地址,同时也是 go mode中的repo地址 如果你 golang 版本过低或者过高都有可能出现下方的错误信息,我这里是因为使用的 1.16 版本太高了 2021/04/25 20:47:14 failed to initialize project: unable to run pre-scaffold tasks of "base.go.kubebuilder.io/v3": go version 'go1.16' is incompatible because 'requires 1.13 <= version < 1.16'. You can skip this check using the --skip-go-version-check flag 这种情况下可以添加 --skip-go-version-check 忽略这个错误,但是还是建议使用官方推荐的版本 kubebuilder init --domain lailin.xyz --repo github.com/mohuishou/blog-code/k8s-operator/02-kubebuilder --skip-go-version-check 项目目录. ├── Dockerfile ├── Makefile # 这里定义了很多脚本命令,例如运行测试,开始执行等 ├── PROJECT # 这里是 kubebuilder 的一些元数据信息 ├── config │ ├── default # 一些默认配置 │ ├── manager # 部署 crd 所需的 yaml │ ├── prometheus # 监控指标数据采集配置 │ └── rbac # 部署所需的 rbac 授权 yaml ├── go.mod ├── go.sum ├── hack │ └── boilerplate.go.txt └── main.go 创建 apikubebuilder create api --group apps --version v1 --kind Application 执行之后我们可以发现项目结构发生了一些变化 . ├── api │ └── v1 │ ├── application_types.go # 这里是定义 spec 的地方 │ ├── groupversion_info.go # GV 的定义,一般无需修改 │ └── zz_generated.deepcopy.go ├── config │ ├── crd # 自动生成的 crd 文件,不用修改这里,只需要修改了 v1 中的 go 文件之后执行 make generate 即可 │ ├── default │ ├── manager │ ├── prometheus │ ├── rbac │ └── samples # 这里是 crd 示例文件,可以用来部署到集群当中 ├── controllers │ ├── application_controller.go # 在这里实现 controller 的逻辑 │ └── suite_test.go # 这里写测试 实现 Controller定义 CR // api/v1/application_types.go
// ApplicationSpec defines the desired state of Application type ApplicationSpec struct { // INSERT ADDITIONAL SPEC FIELDS - desired state of cluster (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |