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


1.png

作者 | 孤弋  阿里雲高級技術專家,負責 EDAS 的開發和用戶體驗優化工作。

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

初始化集群

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

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

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

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

2.png

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

  • 初始化 EDAS 的集群控制器和相關資源,主要包含:基於開放雲原生應用標准的 OAM Controller、日志采集的 Agent、監控鏈路中的 Arms 環境信息等;其中大部分控制器運行時不會占用用戶集群的資源,而會運行在 EDAS 托管的一個管控集群中,由 EDAS 來負責維護;

  • 根據用戶的規划,划分好此集群與 EDAS 中命名空間的關系。EDAS 中的命名空間是用來隔離服務與配置的,簡單的可以理解成開發、測試、線上這樣的日常研發中的環境。集群導入的同時也確定了該 Kubernetes 集群是用於哪套環境。

初始化應用

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

3.png

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

  • Java/Tomcat/EDAS Container 類型的的環境:如果選擇這中運行環境,文件上傳之后,EDAS 將把文件與相應的基礎鏡像一起打成應用的鏡像使用;

  • 自定義環境:選擇鏡像的運行環境之后,意味着每一次的部署均通過指定的自定義鏡像進行部署,其中,自定義鏡像需要滿足一定的規范,具體內容可以參考阿里雲幫助文檔《制作應用容器 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 將應用打包並直接部署上去了。和選擇的 運行環境 有關,在插件中進行部署時,我們也會有相應的選項,如圖:

4.png

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

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

結語及其后續

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

首屆 KubeCon 2020 線上峰會

7 月 30 日 - 8 月 1 日,阿里巴巴雲原生專場,點擊鏈接預約有禮:https://developer.aliyun.com/topic/alibabacloudnative/kubecon2020

阿里巴巴雲原生關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的公眾號。”


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM