如何通過雲效Flow完成自動化部署—主機部署,雲效流水線Flow是持續交付的載體,通過構建自動化、整合自動化、驗證自動化、部署自動化,完成從開發到上線過程的持續交付。通過持續向團隊提供及時反饋,讓交付過程高效順暢,Flow 提供了通用的部署能力該篇內容注意講解如何通過雲效Flow完成自動化部署—主機部署

新建部署任務

為了建立部署組,需要先在流水線中新增「主機部署」任務。使用者可以通過以下方式新增部署任務。
  • 使用模板新建流水線,選擇包含 “部署” 任務的模板
  • 在已有的流水線中,新增新的階段,並選擇「部署」任務
流水線模版建立
 
新建流水線時,選擇對應的開發語言,可以檢視當前語言下的預設流水線模版,選擇帶有“部署”節點的流水線模版,即可快速使用構建能力 。
 
 
編排流水線,新增部署任務
 
 

一、主機部署

雲效Flow 提供了通用的部署能力,支援業務被部署到不同國家,不同雲廠商環境還有你的私有環境的主機中。
雲效Flow 目前支援部署以下的主機型別:
  • 阿里雲ECS

二、主機組

主機組是什麼?每個 Web 應用,在整合測試的環境(通常稱作日常環境)、預發的環境(稱作預發環境)、對外提供服務的環境(稱作正式環境)等不同的環境裡執行。
 
對應在 Flow 中,我們把這些環境稱之為「主機組」,也就是該應用執行在若干臺機器(虛擬機器/容器)。
 
前置任務
 
可以通過兩種方式建立主機組:
 
方法一:通過「主機組管理」新增主機組
 
 
方法二:先在流水線中新增「主機部署」任務。使用者可以通過以下方式新增部署任務。
  • 使用模板新建流水線,選擇包含 “部署” 任務的模板
  • 在已有的流水線中,新增新的階段,並選擇「主機部署」任務
 
如何使用新增部署任務,可查閱“部署”一節
 
建立主機組
 
在部署任務中,點選「新建主機組」,進入新建主機組的流程。
 
你可以建立三種類型的主機組:
2、部署到阿里雲 ECS
 
雲效流水線 Flow 支援部署到阿里雲 ECS 。你可以按照以下方式,將你的阿里雲 ECS 加入主機組,從而讓流水線能對其進行部署。
 
建立阿里雲 ECS 型別主機組
 
新增方式——直接新增
 
1)新建主機組,選擇 【主機型別】為 "阿里雲ECS" 。
 
 
2)選擇【服務授權】和【地區】,展示【可新增的主機列表】,可【新建服務授權】。
 
 
3) 選擇你想要新增至主機組的ECS主機。
 
  
 
4) 編輯主機資訊,包括主機組名稱、環境、標籤;主機組成員許可權的配置,建立人預設為企業擁有者;點選儲存,即可完成主機組的建立。
 
 
5)至此,你可在流水線中選擇使用該主機組了。
 
 
對部署許可權的說明,可檢視“主機組成員許可權”一節
 
新增方式——通過 ECS 標籤新增
 
同時,主機組支援通過ECS標籤新增,如果您使用 ECS 標籤對 ECS 資源進行分類管理,可以直接在 Flow 中建立主機組和 ECS 標籤的關聯。
 
 
StarAgent
 
為保證部署通道可用性,提高部署成功率,飛流採用了雲助手(https://help.aliyun.com/document_detail/64601.html)和Staragent雙通道方案,雲助手在阿里雲ECS會預設安裝,在新增和修改部署組的時候,飛流會通過雲助手自動安裝StarAgent。
 
StarAgent介紹
 
StarAgent是阿里巴巴集團伺服器運維基礎設施,承載了全集團的伺服器互動任務。StarAgent是打造全網通,7*24不間斷提供服務,安全可靠,日均億級呼叫量,99.995%的系統成功率的命令通道。通過阿里巴巴集團安全團隊對StarAgent進行了安全加固。重置帳號金鑰,客戶端服務端使用不同的加密方式,在伺服器上執行的命令進行全量審計等安全策略為命令通道保駕護航。
 
StarAgent基礎操作
 
檢視狀態:/home/staragent/bin/staragentctl status;
啟動:/home/staragent/bin/staragentctl restart;
重啟:/home/staragent/bin/staragentctl restart;
解除安裝:
1. /home/staragent/bin/staragentctl stop;
2. rm -rf /home/staragent;
3. rm /usr/sbin/staragent_sn

  

3、部署到公網主機

 
通過在對應主機中添安裝 Agent 的方式,雲效流水線 Flow支援部署到非阿里雲的公網主機(包括其他公有云主機或者可以聯通公網的自有主機)。
 
你可以按照以下方式,將你的公網主機加入主機組,從而讓 Flow 能對其進行部署。
 
建立自由主機型別主機組
 
1)新建主機組,選擇 【主機型別】為 “自有主機”。
 
 
2) 展示【可新增的主機列表】,如果想要新增新的自有主機至【可新增的主機列表】,請複製主機新增指令。
 
 
3) 請開啟你需要新增進主機組部署的主機的命令列, 並將前序操作中複製的命令,在你的自有主機上執行(請注意,主機需要能訪問公網)。
 
 
4) 主機新增指令執行後,等待1-2分鐘後,自有主機會匯入【可新增的主機列表】,選擇你想要新增至主機組的自有主機。
 
 
5) 編輯主機資訊,包括主機組名稱、環境、標籤;主機組成員許可權的配置,建立人預設為企業擁有者;點選儲存,即可完成主機組的建立。
 
 
6)至此,你可在流水線中選擇使用該主機組了。
 
 
圖6. 使用主機組
對部署許可權的說明,可檢視“流水線成員許可權”一節
 

三、部署配置

 
在流水線的部署元件中,需要進行部署配置。本篇文件會給出一個示例,供你參考,如何配置。
 
提前準備
  1. 從示例程式碼庫新建一個SpringBoot程式碼庫:https://code.aliyun.com/code-template/spring-boot。其中包含啟動指令碼deploy.sh:https://code.aliyun.com/code-template/spring-boot/blob/master/deploy.sh
  2. 在部署機安裝Java執行環境
  3. 在流水線構建出製品
為了進行部署,首先需要構建出製品。Flow 中的製品是一個tgz壓縮包,在構建任務中可以指定一個或者多個檔案(資料夾),Flow 的製品中就會包含這些檔案(資料夾)。詳情可以參考文件上傳到 Flow 的製品庫
 
在本例中,需要將target/application.jar和deploy.sh兩個檔案打包到製品中。因此需要在構建任務中按下面的方式進行配置:
 
 
主機部署配置
 
在主機部署任務中,可以進行部署相關的配置,用於將構建產物在部署機上進行安裝。
 
 
下載路徑
 
部署配置中的下載路徑就是構建物上傳步驟產出的壓縮包將要被下載到你的主機上的路徑,本例中為:/home/admin/app/package.tgz
 
執行使用者
 
填寫執行部署指令碼的使用者,如 root,或者 admin 等。本例中為root
 
部署指令碼
 
因為實際的部署指令碼已經打包到了構建產出的壓縮包中,因此部署指令碼可以簡單的進行解壓和執行即可
 
mkdir -p /home/admin/application
tar zxvf /home/admin/app/package.tgz -C /home/admin/application/
sh /home/admin/application/deploy.sh restart

 

四、部署策略

真實的上線過程,如果採用全量釋出,會給開發運維團隊帶來未知的風險,為了減少釋出對線上業務的影響, Flow 提供了灰度釋出,分批發布能力,最大限度的避免了不穩定釋出對使用者的影響, 保障業務交付的穩定。
 
主機分批部署
 
如果你一次需要釋出多臺主機,Flow 支援分批發布,您可在主機部署任務中,可以指定對應的部署策略。假如你有 4 臺主機,選擇分 2 批發布,則每一批自動釋出 2 臺主機。
  • 暫停方式
第一批暫停:第一批發布完後,您可先行驗證,點選繼續後可執行後續釋出。
不暫停:每一批發布完後,自動執行後續批次的釋出。
每批暫停:每一批發布完後,都需要手動確認繼續釋出。
  • 分批數量
指定主機分批的數量,指定分批發布的數量,會按照相應的數量進行分批部署。
 
五、檢視部署詳情
 
流水線配置完成,在流水線執行頁面,在“主機部署”任務中,可以點選【部署詳情】檢視部署過程。
 
 
 
部署詳情 部署單會顯示當前部署的整體狀態和情況。
 
 
 
部署狀態
 
部署中:可以執行【終止】操作,及檢視日誌 暫停中:可以執行【終止】,【繼續下一批】操作,及檢視部署日誌 成功:可以檢視部署日誌 失敗:可以檢視部署日誌,並在卡片檢視上重新發起部署
機器狀態
 
待部署:無操作 部署中:可以檢視部署日誌 成功:可以檢視部署日誌 失敗:可以檢視部署日誌,並重試單臺機器 常見部署問題,可檢視“部署常見問題”一節

六、部署歷史 和 回滾

使用者可在 流水執行記錄 —> 部署歷史 中,檢視到該流水線所有執行的部署歷史記錄,並可選擇其中任意一條歷史記錄進行回滾操作。
 
Flow 會根據當時執行的部署指令碼和構建制品重新執行部署任務,以實現回滾的效果。
 
 
如何通過雲效Flow完成自動化部署—主機部署,雲效流水線Flow是持續交付的載體,通過構建自動化、整合自動化、驗證自動化、部署自動化,完成從開發到上線過程的持續交付。通過持續向團隊提供及時反饋,讓交付過程高效順暢,Flow 提供了通用的部署能力該篇內容注意講解通過雲效Flow完成自動化部署—主機部署。