Apiserver Builder: Extending Kubernetes via Aggregated Apiserver - Min Kim, Ant Group
Channel: CNCF [Cloud Native Computing Foundation]
Date: 2021-12-18

Don’t miss out! Join us at our next event: KubeCon + CloudNativeCon Europe 2022 in Valencia, Spain from May 17-20. Learn more at https://kubecon.io The conference features presentations from developers and end users of Kubernetes, Prometheus, Envoy, and all of the other CNCF-hosted projects.

Apiserver 生成器：通过聚合 Apiserver 扩展 Kubernetes 系统 | Apiserver Builder: Extending Kubernetes via Aggregated Apiserver - Min Kim, Ant Group

目前有两种可插拔的方式来扩展集群的自定义 Kubernetes 应用程序接口：自定义资源定义（也被称为 CRD）和 Apiserver 聚合（也被称为 AA）。经过多年的发展，自定义资源定义 (CRD) 现在在几个版本的 GA 阶段处于稳定工作状态，但另一方面，我们可能会发现自定义资源定义由于可扩展性有限，并不总是最佳选择——例如，我们将不得不引入多个网络钩子 apiservers，以便在新的资源类型上建立准入/转换。或者，为了保持良好的兼容性，在多个版本之间切换可能在技术上很困难。因此，如果我们希望以编码复杂度为代价实现软件开发工具包框架级的扩展，我们可以将 Apiserver 聚合作为自定义资源定义的替代方案。我作为这个特定的官方 SIG 子项目的维护者已经 3 年多了，我将通过一个名为 apiserver-builder 的强大命令行工具，与观众分享构建您自己的聚合 apiserver 的实用方法。

Currently there're two pluggable ways of extending custom Kubernetes API for your cluster: Custom Resource Definition (also known as CRD) and Apiserver Aggregation (also known as AA). After years' of evolving, CRD is now stably working in GA phase in steady state for several releases but on the other hand we may find that CRD is not always the best option due to its limitted extensibility --- e.g. we will have to introduce multiples webhook apiservers in order to build up admission/conversion over the new resource types. Or it can be technically tough to rolling between multiple versions for with compatibility well-preserved. So we may consider AA as an alternative of CRD if we want sdk-framework-level extensibility at the cost of coding complexity. Being the maintainer of this particular official SIG subproject for over 3 years, I will be sharing audience the practical way of building your own aggregated apiserver by leveraging a powerful command-line tooling named apiserver-builder.