Serverless 應用引擎支持通過事件總線(EventBridge)觸發SAE自動持續部署(CD)。本文介紹如何通過EventBridge配置監聽特定事件并聯動ACR,在檢測到新的鏡像版本構建完成后,實現從鏡像更新到應用自動部署的無縫銜接,以確保系統的實時性和高效性。
前提條件
容器鏡像服務 ACR(Container Registry)
已創建企業版實例。具體操作,請參見創建企業版實例。
已準備構建鏡像的Dockerfile文件,(本文已放置在項目根目錄)。具體操作,請參見使用企業版實例構建鏡像。
綁定源代碼托管平臺。本文以在Gitee代碼平臺更新并推送代碼為例,具體操作,請參見綁定企業版實例與Gitee代碼平臺。
已創建命名空間。具體操作,請參見創建命名空間。
Serverless 應用引擎 SAE(Serverless App Engine)
已開通Serverless 應用引擎 SAE(Serverless App Engine)。具體操作,請參見開通Serverless 應用引擎 SAE(Serverless App Engine)。
事件總線(EventBridge)
已開通事件總線(EventBridge)。具體操作,請參見開通事件總線EventBridge并授權。
使用限制
僅適用于微服務應用。
背景信息
通過事件總線(EventBridge)觸發的方式,監聽ACR容器鏡像服務構建鏡像完成后,然后由事件總線觸發SAE的自動CD,并運行版本鏡像應用,實現高效的應用測試,并完成項目開發工作。
步驟一:使用ACR企業版實例構建鏡像
登錄容器鏡像服務控制臺。
在左側導航欄,單擊實例列表。在頂部菜單欄,選擇目標地域。
在實例列表頁面,單擊目標企業版實例。
在企業版實例管理頁面選擇
,單擊創建鏡像倉庫。在倉庫信息配置向導中設置命名空間、倉庫名稱、倉庫類型、鏡像版本、摘要、描述信息,然后單擊下一步。
在代碼源配置向導中,代碼源選擇Gitee,在下拉列表中選擇目標倉庫和倉庫名稱,構建設置選中代碼變更時自動構建鏡像,然后單擊創建鏡像倉庫。
在鏡像倉庫頁面單擊目標倉庫右側的操作列中的管理。
單擊左側導航欄中的構建,在構建規則設置區域單擊添加規則,在構建信息配置向導中設置參數,然后單擊下一步。
參數
說明
類型
設置源代碼倉庫的類型,可以是Branch或Tag。
Branch/Tag
選擇或填寫Branch/Tag,支持正則規則。當正則規則為release-(?<imageTag>\w*)時,將識別release-v1源代碼變更并自動構建版本為v1的鏡像(不支持立即構建),更多信息,請參見正則表達式命名捕獲組。
說明設置正則規則后僅支持系統自動構建,不支持手動立即構建。
構建上下文目錄
設置Dockerfile文件所在的目錄。指的是相對目錄,以Branch/Tag的根目錄為父目錄,例如您的Branch為master,您的Dockerfile文件放在master下,則您的Dockerfile目錄為/。
Dockerfile文件名
設置Dockerfile文件名,默認為Dockerfile。
在鏡像版本配置向導中設置參數,單擊保存,然后單擊下一步。
說明單擊新增配置,可以增加鏡像版本,最多可以設置3個鏡像版本。
參數
說明
鏡像版本
設置鏡像Tag,例如latest。支持命名捕獲,例如使用Branch/Tag中捕獲的內容。
時間
推送源代碼的東八區(UTC+8)時間,有兩種格式可供選擇,例如20201015和202010151613。
說明該參數為可選項,當選中該參數后系統僅支持自動構建,不支持手動立即構建。
Commit ID
最近一次推送代碼的Commit ID,默認取前6位,可以滑動下方的滑塊設置位數。
說明該參數為可選項,當選中該參數后系統僅支持自動構建,不支持手動立即構建。
在構建配置配置向導中設置構建參數,然后單擊確定。
參數
說明
構建架構
選擇構建架構,支持并行構建,最終形成一個鏡像版本對應多個架構鏡像。
構建參數
鏡像構建運行時參數,構建參數由區分大小寫的鍵值對組成,您最多可以設置20個構建參數。您可以設置構建參數,該構建參數會修改Dockerfile文件中的環境變量,使同一個Dockerfile文件呈現多種狀態。
觸發構建規則。
您可以通過以下兩種方式觸發構建規則:
在構建頁面的構建規則設置區域,單擊目標構建規則操作列下的立即構建,觸發構建規則。
向代碼倉庫的master分支提交代碼,觸發構建規則。
說明在構建頁面構建日志區域單擊目標構建任務操作列的取消,可以取消構建任務。
在構建頁面構建日志區域單擊目標構建任務操作列的日志,可以查看構建過程日志。
在左側導航欄單擊鏡像版本,您可以看到構建的鏡像,表示構建鏡像成功。
步驟二:使用鏡像部署SAE應用
登錄SAE控制臺。
在左側導航欄,選擇 ,在頂部菜單欄選擇地域,然后單擊創建應用。
在應用基本信息配置向導中,配置相關信息,然后單擊下一步:應用部署配置。
配置項
說明
應用名稱
輸入自定義的應用名稱。
專有網絡配置
選擇自定義配置的專有網絡的配置方式。選中后,為創建的應用選擇所需的命名空間、VPC、vSwitch及安全組。
說明VPC與ACR企業版實例保持一致。
命名空間
從下拉列表中選擇已創建的命名空間。命名空間和VPC是一一映射關系。關于修改VPC的更多信息,請參見創建和管理專有網絡。
vSwitch
單擊請選擇vSwitch,在選擇vSwitch對話框配置。
vSwitch數量至少需要配置1個,建議不超過3個,且每個vSwitch至少匹配1個應用實例。
安全組
從下拉列表選擇安全組。如果您的VPC內沒有創建安全組,請單擊創建安全組,根據提示創建安全組。更多信息,請參見創建安全組。
應用實例數
選擇需要創建的實例個數。
vCPU
選擇需要創建的實例vCPU規格。
內存
選擇需要創建的實例內存規格。
應用描述
填寫應用的基本情況。
在應用部署配置向導中,配置應用部署信息,然后單擊下一步:確認規格。更多信息,請參見在SAE控制臺使用鏡像部署多語言應用。
配置項
說明
技術棧語言
選擇其它語言,包括C++、Go、.NET、Node.js等語言。
應用部署方式
僅支持鏡像。
配置鏡像
指定部署應用的鏡像文件。單擊我的阿里云鏡像頁簽,單擊鏡像服務企業版,在下拉列表中選擇目標企業版實例。
說明選擇容器鏡像服務企業版部署應用,您需要為目標企業實例配置專有網絡的訪問控制。
在確認規格配置向導,查看您所創建應用的詳細信息以及費用配置情況,然后單擊確認創建。
頁面會跳轉至創建完成配置向導,您可以單擊應用詳情頁進入基本信息頁面。
步驟三:創建EventBridge自定義事件總線
在左側導航欄,單擊事件總線,在頂部菜單欄,選擇地域。
在事件總線頁面的自定義事件總線區域,單擊快速創建。
在創建自定義事件總線面板,配置相關信息。
在總線配置向導中,輸入自定義事件總線名稱和描述,然后單擊下一步。
在事件源配置向導中,輸入事件源名稱和描述,事件提供方選擇HTTP/HTTPS 觸發,配置以下參數,然后單擊確認。
參數名稱
參數說明
請求類型
選擇HTTP&HTTPS。
請求方法
請求方法選擇GET、POST。
安全配置
安全配置的類型選擇無需配置。
在規則配置向導中,輸入規則名稱和描述,在模式內容代碼框輸入事件模式,然后單擊下一步。
在目標配置向導中,服務類型選擇云產品接口觸發Serverless 應用引擎,接口版本選擇2019-05-06,選擇接口類型,填寫接口參數和角色配置信息,然后單擊創建。
接口類型選擇DeployApplication,填寫以下接口參數信息。更多接口參數信息,請參見DeployApplication。
名稱
類型
位置
是否必選
示例值
描述
AppId
String
Query
是
7171a6ca-d1cd-4928-8642-7d5cfe69****
需要部署的應用ID。
ImageUrl
String
Query
否
registry.cn-hangzhou.aliyuncs.com/sae_test/ali_sae_test:0.0.1
鏡像地址。當Package Type為Image時必填。
AcrInstanceId
String
FormData
否
cri-xxxxxx
ACR企業版實例ID。當ImageUrl為容
器鏡像服務企業版時必填。
步驟四:創建ACR事件規則
登錄容器鏡像服務控制臺。
在左側導航欄,單擊實例列表。在頂部菜單欄,選擇地域。
在實例列表頁面單擊目標企業版實例。
在實例詳情頁面左側導航欄選擇
。在事件規則頁簽下單擊創建規則。
在事件范圍配置向導中設置參數,然后單擊下一步。
參數
說明
規則名稱
設置事件規則名稱。
事件類型
設置事件通知觸發的事件類型,在下拉列表中選擇鏡像構建完成。
勾選鏡像構建成功時,觸發事件通知。
生效范圍
設置事件生效的范圍,選擇倉庫,選擇命名空間和鏡像倉庫,設置鏡像版本過濾的正則規則,在該鏡像倉庫下符合正則規則的鏡像版本將觸發事件通知。
在事件通知配置向導中,通知方式選擇HTTPS,輸入已創建的事件總線事件源的地址(公網請求URL),然后單擊保存。
步驟五:更新源碼,結果驗證
當Gitee上的代碼被修改后,ACR會自動構建鏡像,并通過事件總線(EventBridge)觸發SAE應用自動部署的無縫銜接。
您可以在事件總線控制臺查看事件軌跡,查看事件在事件總線EventBridge中的處理軌跡。在事件總線(EventBridge)控制臺發布事件后,如果事件目標未接收到事件或接收到的事件與實際場景不符,您可以使用事件追蹤功能,幫助您定位事件收發過程中出現問題的環節和原因。
您可以在SAE控制臺查看應用的變更記錄,查看是否產生應用重新部署的變更記錄。