API 文档
根据实际业务,我们一般会将 API 分为标准 K8S API, 高级 API 和 CRD (Custom Resource Definition) 三种,因此在目录结构上一般分为:
K8S API
标准 K8S API
参考 DaemonSet。
CRD
props
name: OpenAPI schemadefinitions(v2) orcomponents/schemas(v3) 下的引用名称或CRDmetadata.namenamespaced: 指示资源是否为命名空间级别,即 API Endpoints 是否包含命名空间路径参数namespaces/{namespace}。未指定时由 CRD 的spec.scope决定;OpenAPI 源不携带 scope,默认为truepathPrefix: 可以用于覆盖全局配置中的api.pathPrefixfilepath: 类似指定 openapi 路径,用于指定特定的 openapi 或 CRD 文件apiGroup: 可选,指定 API 组,openapi 会尝试读取引用的x-kubernetes-group-version-kind,下同apiVersion: 可选,指定 API 版本;CRD 默认使用kubectl会解析到的版本,即served版本中优先级最高的那个,可通过api.crdVersion更改apiKind: 可选,指定 API 资源类型plural: 可选,端点路径中使用的资源复数名。CRD 会自动读取spec.names.plural;OpenAPI 源的复数形式不规则时需要指定,否则由 kind 推导hasStatus: 可选,API server 是否暴露status子资源。CRD 由subresources.status决定,OpenAPI 源由文档中登记的路由决定,本 prop 可覆盖两者
如果 OpenAPI 文档不带 x-kubernetes-group-version-kind(聚合层 apiserver 的文档普遍不带),必须在此显式声明 apiVersion 与 apiKind,非 core 组还需 apiGroup。否则无法推导出 group/version/kind:API Endpoints 段会整段省略,而不是用空路径段拼出来,同时 doom lint 会报告该页面。
高级 API
props
path: OpenAPI schemapaths下的路径pathPrefix: 可以用于覆盖全局配置中的api.pathPrefixopenapiPath: 参考指定 openapi 路径
公共引用
参考 CodeQuality。
props
schema: OpenAPI schemadefinitions(v2) orcomponents/schemas(v3) 下的引用名称openapiPath: 参考指定 openapi 路径
指定 openapi 路径
对于 OpenAPIPath 和 OpenAPIRef 组件,默认会在所有 openapi 定义文件中查找至匹配,如果需要指定特定的 openapi 文件,可以使用 openapiPath 属性指定: