新一代應用統一部署管理平台 Seal AppManager 採用平台工程的理念,通過降低基礎設施操作的複雜度為研發和運維團隊提供易用、一致的應用管理和部署體驗。Seal AppManager 幫助研發和運維團隊實現關注點分離,即運維工程師負責基礎建設,研發可以在零基礎設施知識的情況下實現應用部署管理。
本文以運維和研發兩個視角,介紹如何通過Seal AppManager 從源碼構建一個 Java Web 服務並部署到 Kubernetes 中。
運維視角
李維是 Alpha 公司的 DevOps,他需要搭建一個自服務平台提供給不瞭解容器和 Kubernetes 的研發團隊使用。他做了以下準備工作:
- 資源不少於4CPU,8Gi內存的 Linux 服務器。
- 至少 50GB 的空餘磁盤空間。
- 安裝 Docker,詳細指引參Docker官方文檔(https://docs.docker.com/)。
- 服務器開放80和443端口。
- 前往官網(https://seal.io/trial)申請產品試用鏡像。
- 安裝一個 Kubernetes 集羣,獲取到 Kubeconfig 文件。
部署
執行以下命令啓動 Seal 服務:
sudo docker run -d --privileged --restart=always -p 80:80 -p 443:443 <seal-container-image>
訪問
通過 https://<server-address> 訪問Seal的UI。
第一次登陸時根據UI提示,在服務器上運行以下指令獲取初始的管理員密碼。
sudo docker logs <your-container-id> 2>&1 | grep "Bootstrap Admin Password"
以 admin 用户名以及初始管理員密碼登陸 Seal,並根據UI提示設置新的密碼以及 Seal 的訪問地址。
配置鏡像倉庫認證密鑰
配置提供給研發使用的鏡像倉庫測試賬號:
- 訪問【運維中心】-【全局密鑰】菜單,點擊【新建密鑰】按鈕。
- 在【名稱】中填入
REGISTRY_USERNAME,在【內容】中填入鏡像倉庫認證的用户名,點擊【保存】按鈕。 - 再次點擊【新建密鑰】按鈕。
4 在【名稱】中填入REGISTRY_PASSWORD,在【內容】中填入鏡像倉庫認證的密碼,點擊【保存】按鈕。
配置 Kubernetes 與環境
添加 Kubernetes 集羣作為應用的部署目標:
- 訪問【運維中心】-【連接器】菜單,點擊【新建連接器】按鈕。
- 在名稱中填入
test-k8s,在Kubeconfig中填入準備的集羣Kubeconfig文件,點擊保存按鈕。 - 訪問【運維中心】-【環境】菜單,點擊【新建環境】按鈕。
- 在【名稱】中填入
development。 - 點擊【添加連接器】按鈕,選擇
test-k8s連接器,點擊【保存】按鈕。
注:
- 連接器是對接任意基礎設施和服務的抽象對象,例如 Kubernetes,公有/私有云,虛擬機,版本控制系統等等。
- 環境是應用部署目標,環境中可以關聯若干連接器。
李維已經完成了基建工作!後續他可以在 Seal 平台接入更多不同的基礎設施,添加更多沉澱了組織內 DevOps 最佳實踐的應用模塊,提供給研發團隊使用。對於本文的工作,使用 Seal 內置的模塊即可完成。
研發視角
張研是 Alpha 公司的研發,他不熟悉 Kubernetes,他想在不需要提工單給運維的情況下快速搭建開發測試環境(所謂自服務)。
項目代碼倉庫放置在:https://github.com/seal-demo/spring-boot-docker-sample
創建應用
張研登入Seal平台執行以下操作:
- 訪問【應用管理】-【應用】菜單,點擊【新建應用】按鈕。
- 在【名稱】中填入
myapp,點擊模塊配置中的【+】按鈕。 - 在模塊名稱中填入
s2i,模塊列表中選擇build-container-image,在Git URL中填入 https://github.com/seal-demo/spring-boot-docker-sample。 - 點擊【Build】標籤頁,在
image中填入鏡像名稱registry.alpha.org/myproject/myimage:latest(注:這是張研所在Alpha公司的倉庫地址,您需要換成您所用的鏡像倉庫地址)。 - 勾選【Registry Authentication】,在【Username】和【Password】中分別填入
${secret.REGISTRY_USERNAME}和${secret.REGISTRY_PASSWORD}。Seal的UI會引導填寫對已配置密鑰的引用。點擊【確定】保存構建鏡像模塊的配置。 - 點擊【模塊配置】中的【+】按鈕。
- 在模塊名稱中填入
web,確認模塊列表中選擇webservice,在【Image Name】中填入${module.s2i.image},Seal的UI會引導填寫對其它模塊輸出的引用。 - 修改
Ports為 8888 端口(這是張研所用代碼監聽的端口)。點擊【確定】保存web服務模塊的配置。 - 點擊【保存】按鈕保存應用配置。
部署應用
現在張研可以在Seal上一鍵部署測試環境了:
- 進入
myapp應用詳情頁。 - 點擊應用信息右側的【+】號添加實例按鈕。
- 在名稱中填入
dev1,選擇運維團隊(李維)提供的development環境。點擊【確定】按鈕創建應用實例。 4 等待部署完成,並在UI上出現該應用實例的訪問地址。
TADA!張研現在可以訪問他的服務測試環境了!後續他可以將該應用共享給其它的開發測試成員,創建多個應用實例。
總結
本文通過兩種角色視角的職責劃分,展示了 Seal 如何實現研發和運維關注點分離;通過從源碼到 Kubernetes deployment 的部署,展示了Seal 的應用模型抽象。當然不止於此,一個應用模塊可以是構建邏輯、雲原生工作負載,也可以是傳統部署負載或是其它的資源抽象。
歡迎來探索更多功能!