您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“OpenAPI的新功能是什么”,內容詳細,步驟清晰,細節處理妥當,希望這篇“OpenAPI的新功能是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
Open API 即開放 API,也稱開放平臺。 所謂的開放 API(OpenAPI)是服務型網站常見的一種應用,網站的服務商將自己的網站服務封裝成一系列API(開放出去,供第三方開發者使用,這種行為就叫做開放網站的 API,所開放的 API 就被稱作 OpenAPI(開放 API )。
在 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": "read the specified Pod", "consumes": [ "*/*" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": [ "https" ], "tags": [ "core_v1" ], "operationId": "readCoreV1NamespacedPod", "parameters": [ { "uniqueItems": true, "type": "boolean", "description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.", "name": "exact", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Should this value be exported. Export strips fields that a user can not specify.", "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 客戶端 能夠很簡單的進行如下調用:
from kubernetes import client 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)read the specified Pod Path parameters name (required) Path Parameter — name of the Pod namespace (required) Path Parameter — object name and auth scope, such as for teams and projects Consumes This API call consumes the following media types via the Content-Type request header: */* Query parameters pretty (optional) Query Parameter — If 'true', then the output is pretty printed. exact (optional) Query Parameter — Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.export (optional) Query Parameter — Should this value be exported. Export strips fields that a user can not specify. Return typev1.Pod Produces This API call produces the following media types according to the Accept request header; the media type will be conveyed by the Content-Type response header. application/json application/yaml application/vnd.kubernetes.protobuf Responses 200 OK v1.Pod 401 Unauthorized
有兩種方式訪問 OpenAPI
從 kube-apiserver/swagger.json。這個文件會包含所有啟用的 GroupVersion 方法和模型,其中的內容會是該 API Server 所對應的最新版本。
Kubernetes 的 Github 倉庫,可以訪問 master 或者其他指定的 Release。
有很多工具 能和這些 API 協同工作,例如可以用 swagger editor 來打開規范文件并渲染文檔,或者生成客戶端;還可以直接利用 swagger codegen 來生成文檔和客戶端。自動生成的客戶端多數時候是開箱即用的。不過可能需要做一些登錄和 Kubernetes 相關的設置。
讀到這里,這篇“OpenAPI的新功能是什么”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。