k8s有两种扩展kubernetes API的方式Custom Resources和Kubernetes 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 resource为CRUD操作提供了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