Kubebuilder v1 版本 VS v2 版本
这篇文档涵盖了从 v1 版本迁移到 v2 版本时所有破坏性的变化。
所有细节变化(破坏性的或者其他)可以查询 controller-runtime, controller-tools 和 kubebuilder 发布说明。
常规变化
V2 版本项目中使用 go modules。但是 kubebuilder 会继续支持 dep
直到 go 1.13 正式发布。
controller-runtime
-
Client.List
现在使用 functional options (List(ctx, list, ...option)
) 代替List(ctx, ListOptions, list)
。 -
Client
接口加入了Client.DeleteAllOf
。 -
默认开启 Metrics。
-
pkg/runtime
下的一些包已经被移除,它们旧的位置已被弃用。并将会在 controller-runtime v1.0.0 版本之前删除。更多信息请看 godocs。
Webhook-related
-
webhooks 的自动证书生成已经被移除,并且它将不再自动注册。使用 controller-tools 去生成 webhook 配置。如果你需要生成证书,我们推荐使用 cert-manager。Kubebuilder v2 版本将会自动生成证书管理器配置供你使用 -- 更多细节请看 Webhook 教程。
-
builder
包现在为 controllers 和 webhooks 提供了独立的生成器,这便于选择哪个去运行。
controller-tools
在 v2 版本中已经重写了生成器框架。在许多情况下,它仍然像以前一样工作,但是要注意有一些破坏性的变化。更多细节请看 marker 文档。
Kubebuilder
-
Kubebuilder v2 版本引入了简化的项目布局。你可以在 这里 找到相关设计文档。
-
在 v1 版本中,manager 作为一个
StatefulSet
部署,而在 v2 版本中是作为一个Deployment
部署。 -
kubebuilder create webhook
命令被用来自动生成 mutating/validating/conversion webhooks. 它代替了kubebuilder alpha webhook
命令。 -
v2 版本使用
distroless/static
代替 Ubuntu 作为基础镜像。这减少了镜像大小和受攻击面。 -
v2 版本要求 kustomize v3.1.0+。