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