apiserver-builder-alpha

k8s有两种扩展kubernetes API的方式Custom ResourcesKubernetes API Aggregation
这两者最大的区别在于CRD通过在kubernetes API内部添加资源来扩展API,而server aggregation则是通过外部服务。

Aggregation Layer: 运行在kube-apiserver并为新的API types代理请求。
APIService Resources: 新的API通过 APIService进行动态 注册。
Extension API Servers:响应aggregation layer代理的请求。

apiserver-boot安装

https://github.com/kubernetes-sigs/apiserver-builder-alpha/blob/master/docs/installing.md

初始化项目

必须在$GOPATH/src目录下,这有点坑。
apiserver-boot init repo --domain <your-domain>

apiserver-boot init repo --domain extend-k8s.hysyeah.io

创建API resource

API resourceCRUD操作提供了REST访问点
API resources通过group(package),a version,a kind(type)来定义。

apiserver-boot create group version resource --group animal --version v1beta1 --kind Cat

本地运行apiserver + controller-manager

apiserver-boot run local文档上说会自动执行code generators和编译,然而事实上并没有。运行到这一步失败。
apiserver-boot build executables编译二进制文件。

看下有没有注册成功
kubectl api-versions


结论:
apiserver-builder-alpha处于试验阶段,根据文档并不能成功运行项目并且很久没有更新不推荐使用。

REF:
1.https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/
2.https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/
3.https://github.com/kubernetes/sample-apiserver
4.https://github.com/kubernetes-sigs/apiserver-builder-alpha
5.https://github.com/kubernetes-sigs/apiserver-builder-alpha/blob/master/docs/concepts/api_building_overview.md
6.https://github.com/kubernetes-sigs/apiserver-builder-alpha/blob/master/docs/tools_user_guide.md