Kubernetes支持OpenAPI的新功能

建站服务器 Open API 让 API 提供者可以定义自己的操作和模型,并让开发者可以自动化的生成喜欢语言的客户端,用以和 API 服务器通信。Kubernetes 已经支持 Swagger 1.2(OpenAPI 规范的前身)有一段时间了,但是这一标准不够完整和有效,凭借这一支持,非常难生成工具或客户端。

在 Kubernetes 1.4,我们对目前的模型和操作进行了升级,引入了 Open API 规范(在没被捐献给 Open API 之前被称作 Swagger 2.0)支持的 Alpha 版本。从 Kubernetes 1.5 开始,OpenAPI 规范的支持已经完备,能够直接从 Kubernetes 源码生成规范,对于模型和方法的任何变更,都会保障文档和规范的完全同步。

创新互联服务项目包括兰坪网站建设、兰坪网站制作、兰坪网页制作以及兰坪网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,兰坪网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到兰坪省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

新规范让我们有了更好的 API 文档,甚至还有了一个 Python 客户端。

这一模块化的规范用 GroupVersion 进行分隔,这一做法属于未雨绸缪,我们想要让不同的 API Server 使用不同的 GroupVersion。

规范的结构在 Open API spec definition 中有解释。我们用 operation 标记 来拆分每个 GroupVersion 并尽可能的丰富其中的模型、路径、操作等信息。操作的参数、调用方法以及响应都有文档描述。

例如,获取 Pod 信息的 OpenAPI 规范

{
...
"paths":{
"/api/v1/namespaces/{namespace}/pods/{name}":{
"get":{
"description":"readthespecifiedPod",
"consumes":[
"*/*"
],
"produces":[
"application/json",
"application/yaml",
"application/vnd.kubernetes.protobuf"
],
"schemes":[
"https"
],
"tags":[
"core_v1"
],
"operationId":"readCoreV1NamespacedPod",
"parameters":[
{
"uniqueItems":true,
"type":"boolean",
"description":"Shouldtheexportbeexact.Exactexportmaintainscluster-specificfieldslike'Namespace'.",
"name":"exact",
"in":"query"
},
{
"uniqueItems":true,
"type":"boolean",
"description":"Shouldthisvaluebeexported.Exportstripsfieldsthatausercannotspecify.",
"name":"export",
"in":"query"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/v1.Pod"
}
},
"401":{
"description":"Unauthorized"
}
}
},
…
}
…

有了这些信息,以及 kube-apiserver 的 URL,就可以据此来调用接口了(/api/v1/namespaces/{namespace}/pods/{name}),参数包括 name、exact 以及 export 等,调用结果会返回 Pod 信息。客户库生成器也会使用这些信息来创建一个 API 函数调用来读取 Pod 信息。例如 Python 客户端 能够很简单的进行如下调用:

fromkubernetesimportclient
ret=client.CoreV1Api().read_namespaced_pod(name="pods_name",namespace="default")
https://gist.github.com/mbohlool/d5ec1dace27ef90cf742555c05480146

一个简化版的 read_namespaced_pod;Python Client:https://github.com/kubernetes-incubator/client-python还可以使用 Swagger-codegen 文档生成器来根据这些信息生成文档:

GET/api/v1/namespaces/{namespace}/pods/{name}
(readCoreV1NamespacedPod)
readthespecifiedPod
Pathparameters
name(required)
PathParameter—nameofthePod
namespace(required)
PathParameter—objectnameandauthscope,suchasforteamsandprojects
Consumes
ThisAPIcallconsumesthefollowingmediatypesviatheContent-Typerequestheader:
*/*
Queryparameters
pretty(optional)
QueryParameter—If'true',thentheoutputisprettyprinted.
exact(optional)
QueryParameter—Shouldtheexportbeexact.Exactexportmaintainscluster-specificfieldslike'Namespace'.
export(optional)
QueryParameter—Shouldthisvaluebeexported.Exportstripsfieldsthatausercannotspecify.
Returntype
v1.Pod
Produces
ThisAPIcallproducesthefollowingmediatypesaccordingtotheAcceptrequestheader;themediatypewillbeconveyedbytheContent-Typeresponseheader.
application/json
application/yaml
application/vnd.kubernetes.protobuf
Responses
200
OKv1.Pod
401
Unauthorized
有两种方式访问 OpenAPI

从 kube-apiserver/swagger.json。这个文件会包含所有启用的 GroupVersion 方法和模型,其中的内容会是该 API Server 所对应的最新版本。

Kubernetes 的 Github 仓库,可以访问 master 或者其他指定的 Release。

有很多工具 能和这些 API 协同工作,例如可以用 swagger editor 来打开规范文件并渲染文档,或者生成客户端;还可以直接利用 swagger codegen 来生成文档和客户端。自动生成的客户端多数时候是开箱即用的。不过可能需要做一些登录和 Kubernetes 相关的设置。

分享标题:Kubernetes支持OpenAPI的新功能
分享网址:https://www.cdcxhl.com/article14/cjcdde.html

成都网站建设公司_创新互联,为您提供建站公司网站导航网页设计公司云服务器定制网站企业网站制作

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

商城网站建设