简介
kubernetes/apiserver同步自kubernertes主代码树的taging/src/k8s.io/apiserver目录,它提供了创建K8S风格的API Server所需要的库。包括kube-apiserver、kube-aggregator、service-catalog在内的很多项目都依赖此库。
apiserver库的目的主要是用来构建API Aggregation中的Extension API Server。它提供的特性包括:
将authn/authz委托给主kube-apiserver
支持kuebctl兼容的API发现
支持admisson control链
支持版本化的API类型
K8S提供了一个样例kubernetes/sample-apiserver,但是这个例子依赖于主kube-apiserver。即使不使用authn/authz或API聚合,也是如此。你需要通过--kubeconfig来指向一个主kube-apiserver,样例中的SharedInformer依赖于会连接到主kube-apiserver来访问K8S资源。
如果您想构建一个扩展 API 服务器以与 API 聚合一起使用,或者构建一个独立的 Kubernetes 风格的 API 服务器,您可以使用此代码。
但是,请考虑另外两个选项:
CRD:如果您只想向 kubernetes 集群添加资源,请考虑使用 Custom Resource Definition aka CRD。它们需要更少的编码和变基。在此处阅读自定义资源定义与扩展 API 服务器之间的差异。
Apiserver-builder:如果您想构建一个扩展 API 服务器,请考虑使用apiserver-builder而不是这个repo。Apiserver-builder 是一个完整的框架,用于生成 apiserver、客户端库和安装程序。