新一代應用統一部署管理平台 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 的訪問地址。
 

配置鏡像倉庫認證密鑰

配置提供給研發使用的鏡像倉庫測試賬號:

  1. 訪問【運維中心】-【全局密鑰】菜單,點擊【新建密鑰】按鈕。
  2. 在【名稱】中填入 REGISTRY_USERNAME,在【內容】中填入鏡像倉庫認證的用户名,點擊【保存】按鈕。
  3. 再次點擊【新建密鑰】按鈕。
    4 在【名稱】中填入 REGISTRY_PASSWORD,在【內容】中填入鏡像倉庫認證的密碼,點擊【保存】按鈕。
     

配置 Kubernetes 與環境

添加 Kubernetes 集羣作為應用的部署目標:

  1. 訪問【運維中心】-【連接器】菜單,點擊【新建連接器】按鈕。
  2. 在名稱中填入test-k8s,在 Kubeconfig 中填入準備的集羣 Kubeconfig 文件,點擊保存按鈕。
  3. 訪問【運維中心】-【環境】菜單,點擊【新建環境】按鈕。
  4. 在【名稱】中填入 development
  5. 點擊【添加連接器】按鈕,選擇 test-k8s 連接器,點擊【保存】按鈕。  

coremail運維資料_運維

 

注:

  • 連接器是對接任意基礎設施和服務的抽象對象,例如 Kubernetes,公有/私有云,虛擬機,版本控制系統等等。
  • 環境是應用部署目標,環境中可以關聯若干連接器。

 
李維已經完成了基建工作!後續他可以在 Seal 平台接入更多不同的基礎設施,添加更多沉澱了組織內 DevOps 最佳實踐的應用模塊,提供給研發團隊使用。對於本文的工作,使用 Seal 內置的模塊即可完成。
 

研發視角

張研是 Alpha 公司的研發,他不熟悉 Kubernetes,他想在不需要提工單給運維的情況下快速搭建開發測試環境(所謂自服務)。
 

項目代碼倉庫放置在:https://github.com/seal-demo/spring-boot-docker-sample  

創建應用

張研登入Seal平台執行以下操作:

  1. 訪問【應用管理】-【應用】菜單,點擊【新建應用】按鈕。
  2. 在【名稱】中填入 myapp,點擊模塊配置中的【+】按鈕。
  3. 在模塊名稱中填入 s2i,模塊列表中選擇 build-container-image,在Git URL中填入 https://github.com/seal-demo/spring-boot-docker-sample。
  4. 點擊【Build】標籤頁,在 image 中填入鏡像名稱 registry.alpha.org/myproject/myimage:latest(注:這是張研所在Alpha公司的倉庫地址,您需要換成您所用的鏡像倉庫地址)。
  5. 勾選【Registry Authentication】,在【Username】和【Password】中分別填入 ${secret.REGISTRY_USERNAME}${secret.REGISTRY_PASSWORD}。Seal的UI會引導填寫對已配置密鑰的引用。點擊【確定】保存構建鏡像模塊的配置。
  6. 點擊【模塊配置】中的【+】按鈕。
  7. 在模塊名稱中填入 web,確認模塊列表中選擇 webservice,在【Image Name】中填入 ${module.s2i.image},Seal的UI會引導填寫對其它模塊輸出的引用。
  8. 修改 Ports 為 8888 端口(這是張研所用代碼監聽的端口)。點擊【確定】保存web服務模塊的配置。
  9. 點擊【保存】按鈕保存應用配置。
     

部署應用

現在張研可以在Seal上一鍵部署測試環境了:

  1. 進入 myapp 應用詳情頁。
  2. 點擊應用信息右側的【+】號添加實例按鈕。
  3. 在名稱中填入 dev1,選擇運維團隊(李維)提供的 development 環境。點擊【確定】按鈕創建應用實例。 4 等待部署完成,並在UI上出現該應用實例的訪問地址。

coremail運維資料_UI_02

TADA!張研現在可以訪問他的服務測試環境了!後續他可以將該應用共享給其它的開發測試成員,創建多個應用實例。
 

總結

本文通過兩種角色視角的職責劃分,展示了 Seal 如何實現研發和運維關注點分離;通過從源碼到 Kubernetes deployment 的部署,展示了Seal 的應用模型抽象。當然不止於此,一個應用模塊可以是構建邏輯、雲原生工作負載,也可以是傳統部署負載或是其它的資源抽象。
 
歡迎來探索更多功能!