天天看點

SpringCloud 應用在 Kubernetes 上的最佳實踐 — 部署篇(開發部署)

《SpringCloud 應用在 Kubernetes 上的雲上實踐 - 開發篇》 講到可以通過兩個工具,輕松的将一個 SpringCloud 應用從初始化到本地運作,本篇,我們将介紹如何将上一講中提到的應用在雲上跑起來。

初始化叢集

為了将應用運作在雲端,首先我們需要一個 Kubernetes 叢集,在 EDAS 中使用 Kubernetes 叢集目前最快的方式,是将一個阿裡雲容器叢集中的 Kubernetes 叢集( ACK 叢集 ),導入到 EDAS 中來。

如果還沒有ACK叢集的話,您可以通過以下兩種方式來建立一個:

  1. 直接進入容器服務的控制台進行建立。
  2. 如果您已經有一個在雲上建好的叢集,或者有一個在其他 IDC 或友商中有的叢集,也可以在容器服務這邊通過“注冊已有叢集”的方式,導入到容器服務中來。

等到 Kubernetes 叢集就緒之後,在 EDAS 上需要進行一次叢集“導入”,導入方式如下圖所示:

SpringCloud 應用在 Kubernetes 上的最佳實踐 — 部署篇(開發部署)

在導入叢集時,EDAS 會做以下操作:

  1. 初始化 EDAS 的叢集控制器和相關資源,主要包含:基于開放雲原生應用标準的 OAM Controller、日志采集的 Agent、監控鍊路中的 Arms 環境資訊等;其中大部分控制器運作時不會占用使用者叢集的資源,而會運作在 EDAS 托管的一個管控叢集中,由 EDAS 來負責維護。
  2. 根據使用者的規劃,劃分好此叢集與 EDAS 中命名空間的關系。EDAS 中的命名空間是用來隔離服務與配置的,簡單的可以了解成開發、測試、線上這樣的日常研發中的環境。叢集導入的同時也确定了該 Kubernetes 叢集是用于哪套環境。

初始化應用

在準備好叢集之後,我們需要初始化一個雲端的應用,進入 EDAS 中的建立應用的向導之後,選擇剛剛建立的叢集進行應用建立,在需要選擇的應用應用運作環境處,會看到有 "自定義"、"Java" 、"Tomcat"、"EDAS Container" 四類,如下圖所示:

SpringCloud 應用在 Kubernetes 上的最佳實踐 — 部署篇(開發部署)

這裡需要特殊說明一下,因為一個應用一旦一開始确定了部署類型,以後将不能被修改,其中:

  1. Java/Tomcat/EDAS Container 類型的的環境:如果選擇這中運作環境,檔案上傳之後,EDAS 将把檔案與相應的基礎鏡像一起打成應用的鏡像使用。
  2. 自定義環境:選擇鏡像的運作環境之後,意味着每一次的部署均通過指定的自定義鏡像進行部署,其中,自定義鏡像需要滿足一定的規範,具體内容可以參考阿裡雲幫助文檔《制作應用容器 Docker 鏡像》。其中核心的内容是以下兩行代碼:
# 繼承 EDAS 的官方鏡像
FROM apaas/edas
# 将檔案下載下傳至 /home/admin/app 中
ADD http://your.domain.com/file/location.jar /home/admin/app/           
注:EDAS 中的應用,運作時就是被 OAM 控制器管控下的 Kubernetes 的 Deployment,是以除了通過上述方式建立 EDAS 應用之外,EDAS 也能将叢集中的 Deployment 讀取出來,您可以将這些Deployment直接轉成一個 EDAS 應用。這裡如果有朋友對 EDAS 應用 與 Deployment 之間的轉換感興趣的話,我們在專門的章節中細講。

通過IDE插件直接部署 Kubernetes 應用

在初始化好應用之後,我們就能在開發時通過 IDE 将應用打包并直接部署上去了。和選擇的 運作環境 有關,在插件中進行部署時,我們也會有相應的選項,如圖:

SpringCloud 應用在 Kubernetes 上的最佳實踐 — 部署篇(開發部署)

如果是在開發環境中,為了提升開發效率,我們推薦使用非自定義鏡像的方式用 IDE 插件進行部署,因為插件中檔案上傳比在控制台中上傳的速度要快 3 倍以上,對于體積偏大的部署包來說非常好用!而且相比重新建構/推送鏡像後再進行部署而言,直接送出war/jar的部署也要快很多。

關于如何在 IDE 插件中部署,可以在阿裡雲官方文檔上搜尋《使用Cloud Toolkit快速部署應用至EDAS》進行詳細了解。

結語及其後續

本篇我們還是站在開發者的視角,介紹了如何将一個開發好的應用包部署到雲上的 EDAS 應用中,在開發環境下,面對衆多的部署 Kubernetes 叢集的方式中,我們推薦的最佳方式是使用 war/jar 直接從插件中上傳部署,在所有方式中這是最快的部署方式。接下來我們将介紹站在運維的角度,如何使用 EDAS 的其他工具來建構部署流程。

本文作者:孤弋,阿裡雲進階技術專家,負責 EDAS的開發和使用者體驗優化工作。