使用自定义资源扩展API

pull/83/head
Jimmy Song 2017-12-01 19:11:01 +08:00
parent 2c00dafd29
commit d69c97cb8c
2 changed files with 22 additions and 3 deletions

View File

@ -39,7 +39,7 @@
- [NetworkPolicy](concepts/network-policy.md)
- [Annotation](concepts/annotation.md)
- [Aggregated API Server](concepts/aggregated-api-server.md)
- [CRD-自定义资源](concepts/custom-resource.md)
- [使用自定义资源扩展API](concepts/custom-resource.md)
### 用户指南

View File

@ -1,10 +1,29 @@
# CRD-自定义资源
# 使用自定义资源扩展API
自定义资源是对Kubernetes API的扩展kubernetes中的每个资源都是一个API对象的集合例如我们在YAML文件里定义的那些spec都是对kubernetes中的资源对象的定义所有的自定义资源可以跟kubernetes中内建的资源一样使用kubectl操作。
## 自定义资源
Kubernetes1.6版本中包含一个内建的资源叫做CRDCustomResourceDefinition可以用它来创建自定义资源但该资源在kubernetes1.7中版本已被TRDThirdPartyResource取代。
Kubernetes1.6版本中包含一个内建的资源叫做TPRThirdPartyResource可以用它来创建自定义资源但该资源在kubernetes1.7中版本已被CRDCustomResourceDefinition取代。
## 扩展API
自定义资源实际上是为了扩展kubernetes的API向kubenetes API中增加新类型可以使用以下三种方式
- 修改kubenetes的源码显然难度比较高也不太合适
- 创建自定义API server并聚合到API中
- 1.7以下版本编写CRDkubernetes1.7及以上版本用CRD
编写自定义资源是扩展kubernetes API的最简单的方式是否编写自定义资源来扩展API请参考[Should I add a custom resource to my Kubernetes Cluster?](https://kubernetes.io/docs/concepts/api-extension/custom-resources/),行动前请先考虑以下几点:
- 你的API是否属于[声明式的](https://kubernetes.io/docs/concepts/api-extension/custom-resources/#declarative-apis)
- 是否想使用kubectl命令来管理
- 是否要作为kubenretes中的对象类型来管理同时显示在kuberetes dashboard上
- 是否可以遵守kubernetes的API规则限制例如URL和API group、namespace限制
- 是否可以接受该API只能作用于集群或者namespace范围
- 想要复用kubernetes API的公共功能比如CRUD、watch、内置的认证和授权等
如果这些都不是你想要的那么你可以开发一个独立的API。
### CRD