陈奇网络工作室

Kubernetes支持OpenAPI的新功能

建设工作站服务器

使用Open API,API提供程序可以定义自己的操作和模型,并允许开发人员自动生成喜欢语言的客户端以与API服务器进行通信。 Kubernetes支持swagger1.2(openapi规范的前身)一段时间了,但该标准并不完整、有效,因此生成工具和客户端非常困难。

Kubernetes 1.4升级了当前的模型和操作,并引入了Open API规范(以前称为Swagger 2.0 )支持的alpha版本。 从Kubernetes 1.5开始,对OpenAPI规范的支持得到增强,可以直接从Kubernetes源生成规范。 对模型和方法所做的更改也将确保文档和规范的完全同步。

新规范提供了更好的API文档,还提供了Python客户端。

此模块化规范由GroupVersion分隔。 这是为了将来做准备,我们希望在各种API Server上使用各种GroupVersion。

规格的结构在Open API spec definition中进行了说明。 使用operation标签分割每个组版本,以尽可能丰富其中的模型、路径和操作等信息。 操作的参数、调用方法和响应都包含文档的说明。

例如,取得Pod信息OpenAPI规格

{

.

& #039; paths& #039; {

& #039;/API/v1/namespaces/{ namespace }/pods/{ name } & amp; #039; {

& #039; get& #039; {

& #039; 描述和映射; #039; & #039; readthespecifiedpod& #039;

& #039; consumes& #039; [

& #039; */*& #039;

]、

& #039; 产品& amp; #039; [

& #039; APP/JSON & amp; #039;

& #039; APP/YAML & amp; #039;

& #039; application/vnd.kubernetes.proto buf & amp; #039;

]、

& #039; 方案& amp; #039; [

& #039; https& #039;

]、

& #039; tags& #039; [

& #039; core_v1& #039;

]、

& #039; 操作id & amp; #039; & #039; readcorev1namespacedpod& #039;

& #039; 参数和映射; #039; [

{

& #039; uniqueItems& #039; true,

& #039; type& #039; & #039; 布尔和映射; #039;

& #039; 描述和映射; #039; & #039; shouldtheexportbeexact.exactexportmaintainscluster-specificfieldslike & amp; #039; namespace& #039; & #039;

& #039; name& #039; & #039; exact& #039;

& #039; 在in& #039; & #039; 查询和映射; #039;

(,

{

& #039; uniqueItems& #039; true,

& #039; type& #039; & #039; 布尔和映射; #039;

& #039; 描述和映射; #039; & #039; shouldthisvaluebeexported.exportstripsfieldsthatausercannotspecify.& amp; #039;

& #039; name& #039; & #039; 导出& amp; #039;

& #039; 在in& #039; & #039; 查询和映射; #039;

}

]、

& #039; 响应和映射; #039; {

& #039; 200& #039; {

& #039; 描述和映射; #039; & #039; OK& #039;

& #039; 方案& amp; #039; {

& #039; $ref& #039; & #039; #/definitions/v1.Pod& #039;

}

(,

& #039; 401& #039; {

& #039; 描述和映射; #039; & #039; 未加密& amp; #039;

}

}

(,

……

}

……

有了这些信息和kube-apiserver的URL,就可以根据这些信息调用接口(/API/v1/namespaces/{ namespace }/pods/{ name } ) 参数包括name、exact和export。客户端库生成器也使用这些信息创建用于读取Pod信息的API函数调用。 例如,Python客户端可以轻松地进行以下调用:

fromkubernetesimportclient

ret=client.core v1 API (.read _ namespaced _ pod ) name=& #039; pods_name& #039;namespace=& #039; 默认& amp; #039; ) )。

33559 gist.github.com/mbohlool/d5e C1 dace 27 ef 90cf 742555 c 05480146

简化版的read_namespaced_pod; python client:https://github.com/kubernetes-incubator/client-python使用Swagger-codegen文档生成器基于这些信息创建文档

get/API/v1/namespaces/{ namespace }/pods/{ name }

( readCoreV1NamespacedPod )

readthespecifiedPod

路径参数

名称(要求)

PathParameter—nameofthePod

namespace (要求)

path parameter—objectnameandauthscope,suchasforteamsandprojects

消费者

thisapicallconsumesthefollowingmediatypesviathecontent-typerequestheader :

*/*

查询参数

pretty(optional )

QueryParameter—If& #039; 真& amp; #039;thentheoutputisprettyprinted。

exact (选项)

query parameter-shouldtheexportbeexact.exactexportmaintainscluster-specifieldslike & amp; #039; namespace& #039;

导出( optional )

qeryparameter—shouldthisvaluebeexported.exportstripsfieldsthatausercannotspecify。

Returntype

v1.Pod

产品

thisapicallproducesthefollowingmediatypesaccordingtotheacceptrequestheader; themediatypewillbeconveyedbythecontent-typeresponseheader。

APP JSON

APP YAML

application/vnd.kubernetes.proto buf

响应

200

OKv1.Pod

401

未加密

可以通过两种方式访问OpenAPI

来自kube-apiserver/swagger.json。 此文件包含所有有效的GroupVersion方法和模型,其内容是与API服务器相对应的最新版本。

在Kubernetes的Github仓库中,可以访问主文件或其他指定的版本。

有很多工具可以与这些API配合使用,例如使用swagger editor打开规范文件并渲染文档和生成客户端。 也可以直接使用swagger codegen生成文档和客户端。 自动生成的客户端往往开箱即用。 但是,可能需要Kubernetes相关的设置。

详情请访问云服务器、域名注册、虚拟主机的问题,请访问西部数码代理商官方网站: www.chenqinet.cn

相关推荐

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3