K8S體系裡面如何更好的使用swagger來生成文件?

weixin_33860722發表於2018-10-29

什麼是swagger文件

swagger文件是方便前後端開發人員聯合除錯的文件工具, 網上有大量的springboot和swagger進行結合的相關文章。大部分都是通過springfox的swagger元件,來把swagger和應用程式進行結合,在程式啟動的時候可以通過特定的服務ip和服務埠訪問swagger文件

k8s裡面如何使用swagger文件

在k8s裡面如何更好的使用swagger文件呢,我們從虛擬機器部署遷移到k8s體系的過程中,遇到了這個問題。那麼如何在k8s體系裡面優雅的使用swagger文件呢, 在網上查了一部分資料未果之後,決定根據自身的情況來設計方案。

我們主要從以下幾個方面進行了考慮

  1. k8s體系裡面,每個app的應用的ip地址都是虛擬出來的, k8s外部不能直接訪問到,需要通過統一的入口進行訪問
  2. 生成的應用包的大小希望儘量小,以前springfox的ui的依賴,會每個專案都引入相關的ui前端程式碼, 其實這一部分程式碼都是可以抽出來的,減少應用jar的大小
  3. 統一訪問的規則,讓大家都可以通過良好的規則來減少記憶的成本,需要一個統一的訪問入口

如何落地

  1. 所有應用的swagger都由一個統一的入口進行訪問, 我們可以下載swagger-ui專案,然後前面掛一個nginx,然後在引數裡面指定不同的swagger.json檔案
  2. 專案的swagger.json由專案打包的時候進行生成,比如java專案,可以利用一些maven的plugin外掛進行生成swagger.json檔案,然後傳到一個固定的地方,swagger-ui通過到這個固定地方來讀取對應專案swagger.json檔案
  3. 然後訪問的時候,全部通過k8s的ingress暴露出來的服務進行訪問,這樣k8s裡面的服務就是一個整體,對應一個swagger.json檔案

對比之前的方式的優勢

  1. 我們通過這樣的方式落地之後,jar包的大小比之前使用springfox小了8m
  2. 應用的啟動時間,對於有50個左右的介面,啟動時間也有所減少
  3. 測試和開發人員,不需要記錄每個應用所部署機器的具體ip,方便了除錯的速度

如果大家有興趣一起學習微服務和DevOps, 可以加入群632109190或者892684010進行討論和學習

相關文章