Kubernetes operator(四)controller-tools 篇

云原生学习路线导航页(持续更新中)

  • 本文是 Kubernetes operator学习 系列第四篇,主要对 使用 controller-tools 进行 CRD 自动代码生成进行学习
  • Kubernetes operator学习系列 快捷链接
    • Kubernetes operator(一)client-go篇
    • Kubernetes operator(二)CRD篇
    • Kubernetes operator(三)code-generator 篇
    • Kubernetes operator(四)controller-tools 篇

1.controller-tools 简介

1.1.code-generator自动生成代码存在的问题

  • Kubernetes operator(三)code-generator 篇 中,我们提到,code-generator编写CRD控制器有两个问题:
    • 问题一:需要手动编写CRD的yaml,无法自动生成
    • 问题二:types.go文件全部内容都需要我们手写,无法自动生成框架
  • 这部分工作量其实也是挺大的,kubernetes提供了一个工具 controller-tools,可以对这部分内容也进行代码自动生成

1.2.controller-tools是什么

1.2.1.kubernetes-sigs 项目是什么

  • kubernetes-sigs 是一个由 Kubernetes 社区维护的 GitHub 组织,其中包含了许多与 Kubernetes 相关的项目,这些项目通常是为 Kubernetes 生态系统开发的,用于提供各种功能和工具。
  • 一些 kubernetes-sigs 组织中的流行项目包括:
    • kustomize:一种用于 Kubernetes 部署的配置管理工具,可以通过 YAML 声明文件对 Kubernetes 对象进行自定义,并且支持多环境部署(例如 dev、stage、prod)。
    • kubebuilder:一种用于构建 Kubernetes API 的 SDK 工具,可以帮助开发者快速构建和测试 Kubernetes 的自定义控制器。
    • cluster-api:一种 Kubernetes 的 API 扩展,用于管理 Kubernetes 集群的生命周期,包括创建、扩容和删除。它允许开发者使用 Kubernetes 的声明性 API 来管理整个集群的生命周期。
    • kubefed:用于跨 Kubernetes 集群联邦的控制平面。它提供了一种将多个 Kubernetes 集群组合成一个统一的逻辑实体的方法,同时保持每个集群的独立性。
    • controller-tools:用于简化 Kubernetes 控制器的开发,提供了一组工具来生成和更新 Kubernetes API 对象的代码,以及构建自定义控制器所需的代码框架。

1.2.2.controller-tools是什么

  • controller-tools其实是一个由 Kubernetes 社区维护的项目,用于简化 Kubernetes 控制器的开发。其中提供了一组工具来生成和更新 Kubernetes API 对象的代码,以及构建自定义控制器所需的代码框架。
  • controller-tools 的github地址:https://github.com/kubernetes-sigs/controller-tools

1.2.3.controller-tools 包含的工具

  • 在controller-tools源码的cmd目录下,可以看到包含三个工具
    Kubernetes operator(四)controller-tools 篇_第1张图片
  • controller-gen:用于生成 zz_xxx.deepcopy.go 文件以及 crd 文件
  • type-scaffold:用于生成所需的 types.go 文件
  • helpgen:用于生成针对 Kubernetes API 对象的代码文档,可以包括 API 对象的字段、标签和注释等信息

参考优质博客

  • controller-tool的简单使用

你可能感兴趣的:(云原生学习专栏,kubernetes,java,容器,云原生,go,docker)