Kubebuilder v1 与 v2(从遗留的 v1.0.0+ 到 v2.0.0 的 Kubebuilder CLI 版本)

本文件涵盖了从 v1 迁移到 v2 时的所有重大变更。

所有更改的详细信息(无论是重大更改还是其他更改)可以在 controller-runtimecontroller-toolskubebuilder 的发布说明中找到。

常见变更

V2 项目使用 Go 模块。但是 kubebuilder 将继续支持 dep,直到 Go 1.13 发布。

控制器-runtime

  • Client.List 现在使用函数选项 (List(ctx, list, ...option)) 而不是 List(ctx, ListOptions, list)

  • Client.DeleteAllOf 被添加到 Client 接口中。

  • 指标现在默认开启。

  • pkg/runtime 下的一些包已被移动,其旧位置已被弃用。旧位置将在 controller-runtime v1.0.0 之前删除。有关更多信息,请参见 godocs

与Webhook相关的

  • 已移除自动生成 Webhook 的证书功能,Webhook 将不再自动注册。请使用 controller-tools 生成 Webhook 配置。如果您需要证书生成,我们推荐使用 cert-manager。Kubebuilder v2 将为您生成 cert-manager 配置 - 有关更多详细信息,请参阅 Webhook 教程

  • builder 包现在有了单独的控制器和网络钩子构建器,这使得选择要运行的构建器更加方便。

控制器工具

生成器框架在 v2 中进行了重写。在许多情况下,它仍然与之前的工作方式相同,但请注意,有一些重大更改。有关更多详细信息,请查看 标记文档

Kubebuilder

  • Kubebuilder v2 引入了简化的项目布局。你可以在 这里 找到设计文档。

  • 在 v1 中,管理器作为 StatefulSet 部署,而在 v2 中,它作为 Deployment 部署。

  • kubebuilder create webhook 命令用于搭建变更/验证/转换 Webhook,取代了 kubebuilder alpha webhook 命令。

  • v2 使用 distroless/static 作为基础镜像,而不是 Ubuntu。这减少了镜像大小和攻击面。

  • v2 需要 kustomize v3.1.0 及以上版本。