如何通過雲效Flow完成自動化部署—主機部署,雲效流水線Flow是持續交付的載體,通過構建自動化、集成自動化、驗證自動化、部署自動化,完成從開發到上線過程的持續交付。通過持續向團隊提供及時反饋,讓交付過程高效順暢,Flow 提供了通用的部署能力該篇內容注意講解如何通過雲效Flow完成自動化部署—主機部署。
新建部署任務
為了創建部署組,需要先在流水線中添加「主機部署」任務。用戶可以通過以下方式添加部署任務。
-
使用模板新建流水線,選擇包含 “部署” 任務的模板
-
在已有的流水線中,添加新的階段,並選擇「部署」任務
流水線模版創建
新建流水線時,選擇對應的開發語言,可以查看當前語言下的默認流水線模版,選擇帶有“部署”節點的流水線模版,即可快速使用構建能力 。
編排流水線,添加部署任務
一、主機部署
雲效Flow 提供了通用的部署能力,支持業務被部署到不同國家,不同雲廠商環境還有你的私有環境的主機中。
雲效Flow 目前支持部署以下的主機類型:
-
阿里雲ECS
二、主機組
主機組是什么?每個 Web 應用,在集成測試的環境(通常稱作日常環境)、預發的環境(稱作預發環境)、對外提供服務的環境(稱作正式環境)等不同的環境里運行。
對應在 Flow 中,我們把這些環境稱之為「主機組」,也就是該應用運行在若干台機器(虛擬機/容器)。
前置任務
可以通過兩種方式創建主機組:
方法一:通過「主機組管理」添加主機組
方法二:先在流水線中添加「主機部署」任務。用戶可以通過以下方式添加部署任務。
-
使用模板新建流水線,選擇包含 “部署” 任務的模板
-
在已有的流水線中,添加新的階段,並選擇「主機部署」任務
如何使用添加部署任務,可查閱“部署”一節
創建主機組
在部署任務中,點擊「新建主機組」,進入新建主機組的流程。
你可以創建三種類型的主機組:
-
阿里雲ECS 部署到阿里雲 ECS
-
可以出公網的非阿里雲主機 部署到公網主機
-
不可訪問公網的非阿里雲主機(即將上線)
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. 使用主機組
對部署權限的說明,可查看“流水線成員權限”一節
三、部署配置
在流水線的部署組件中,需要進行部署配置。本篇文檔會給出一個示例,供你參考,如何配置。
提前准備
-
從示例代碼庫新建一個SpringBoot代碼庫:https://code.aliyun.com/code-template/spring-boot。其中包含啟動腳本deploy.sh:https://code.aliyun.com/code-template/spring-boot/blob/master/deploy.sh。
-
在部署機安裝Java運行環境
-
在流水線構建出制品
為了進行部署,首先需要構建出制品。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完成自動化部署—主機部署。
關於我們
更多關於雲效DevOps的干貨及雲效動態,可微信搜索關注【雲效】公眾號~
彩蛋:公眾號后台回復【指南】,可獲得《阿里巴巴DevOps實踐指南》&《10倍研發效能提升案例集》~
看完覺得對您有所幫助別忘記點贊、收藏和關注呦
