瞭解 Oracle Cloud Infrastructure DevOps 的現代化 App 部署策略
快速交付軟體,是有效率地在雲端執行應用系統的必備要素。Oracle DevOps 服務為開發人員提供持續整合與部署 (CI/CD) 平台,讓他們可用於在 Oracle Cloud 上輕鬆建置、測試及部署軟體和應用系統。
DevOps 建置及部署管線可減少變更導向的錯誤,並減少客戶建置和部署版本所花費的時間。此服務也提供專用的 Git 儲存區域儲存您的程式碼,並支援連線至外部程式碼儲存區域。無論您要將工作負載移轉至 OCI (從內部部署或其他雲端) 還是在 OCI 開發新應用程式,您可以使用 DevOps 服務簡化軟體傳遞生命週期。
架構
此參考架構說明兩種不同的部署策略:Blue-Green 策略和 Canary 策略。
部署策略是可修改或升級應用程式的模型與實務。他們允許 DevOps 團隊定義如何將應用程式部署到生產環境。在不同的部署策略之間選擇可讓管理員在部署新版本風險、新版本對使用者的影響,以及導入策略所需的基礎架構負荷之間,進行正確的交易。此處提供的策略可以讓客戶根據應用程式需求,選擇適當的權衡。
藍綠色部署
Blue-Green 部署策略可讓 DevOps 團隊使用兩個相同環境 (其中某個環境在指定時間處於作用中) 來發行新版本的應用程式。目前的應用程式版本是在作用中環境中佈建,新版本則部署到待命資料庫。
部署至待命環境不會影響作用中環境或使用者流量。DevOps 版本管線可以根據新版本執行驗證測試,通過核准之後,便會將使用者流量切換至待命環境,升級至生產環境。此程序會針對每個新的應用程式版本重複執行。
此策略的主要優點是它提供幾近零停機時間和即時倒回功能。如果發生任何新版本問題,流量便可立即回復至先前穩定版本。此外,待命資料庫環境也適用於應用系統發行版本的除錯問題。
- 它可以實現快速且無風險的部署。
- 它提供有效且簡單的倒回機制。
- 它是協調 A/B 軟體測試的有效方法。
- 幾乎不需要停機時間,因為生產環境一律由其中一個作用中環境 (由負載平衡器控制)。
- 執行相同的環境會耗用很多資源,而且維護相當耗資源。
- 管理兩個相同環境之間的版本時,您必須密切監控這兩個環境。
- 您可以在部署之間輕鬆管理資料庫相依性。
下圖說明 Blue-Green 部署架構:

blue-green-deployment.png 圖解說明
金絲雀部署
運用 Canary 部署策略,應用程式發行版本會逐步遞增到一部分使用者。新版本一開始會部署至不具使用者流量的容器環境。DevOps 版本管線可針對新版本執行驗證測試,一旦就緒,便只能將一部分使用者遞送至產品目錄環境。
此技術可讓 DevOps 團隊根據實際的使用者流量評估新的應用程式版本。他們可以在將新版本推出給較大的使用者庫之前,將兩個應用程式版本並排比較。它也提供風險降低措施,因為只有少數使用者能啟用新版本。如果發生任何問題,這些使用者可以輕鬆切換回先前的版本。
- 您可以測試兩個與真實使用者並列的應用程式版本。
- 新版本不需停機。
- 倒回至先前的版本相當簡單,風險較低。
- 大規模測試和驗證新版本可能相當複雜。
- 從測試的使用者擷取意見,新版本很耗時。
下圖說明 Canary 部署策略:
- 區域
OCI 區域是包含一或多個資料中心 (稱為可用性網域) 的區域化地理區域。區域與其他區域無關,而且遠距離也能分隔它們 (跨國家或甚至大陸)。此架構使用單一區域。
- DevOps 專案
導入 CI/CD 工作流程所需的 DevOps 資源邏輯群組。DevOps 資源可以是使用者自建物件、組建管線、部署管線、外部連線、觸發程式以及環境。DevOps 專案可讓您輕鬆為所有的 DevOps 資源啟用記錄、監控及通知。
- 組建管線
組建管線會從您的原始程式碼儲存區域取得確認 ID,然後使用該原始程式碼執行您的組建指示。組建管線可定義一組組建處理作業的階段:建置、測試和編譯軟體使用者自建物件、提供使用者自建物件至 OCI 儲存區域,以及視需要觸發部署。您可以在組建規格檔案中定義組建執行的流程和指示。
- 建立階段階段是管線執行期間發生的個別動作。這裡提到的各種組建階段包括:
- 受管理組建階段:用來建置和測試原始程式碼的受管理組建階段。
- 傳遞使用者自建物件階段:將組建階段輸出推送至各種儲存區域的階段;例如,將容器映像檔推送至容器儲存區域,或將建置資訊清單推送至使用者自建物件登錄。
- 呼叫部署:建立階段完成後,呼叫部署管線的階段,以及將匯出的變數從受管理組建階段剖析至部署管線階段。
- 代碼儲存庫
DevOps 服務代管的專用 Git 儲存區域。您可以使用這些 DevOps 程式碼儲存區域來儲存、管理及開發原始碼。
- 部署管線
一連串步驟,可將一組使用者自建物件傳遞至目標環境。您可以透過定義序列或平行執行的階段,控制軟體發行版本的流程和邏輯。
- 部署階段
階段是執行管線期間發生的個別動作。建立 Blue-Green 部署的階段包括:
- Blue/Green OKE 部署或Blue/Green 執行處理群組部署:將更新過的程式碼部署至目標環境的暫存位置。
- 部署驗證:可使用 Functions 來驗證部署的選擇性階段。
- 控制:核准:核准部署至目標生產環境的控制階段。
- 藍色 / 綠色 OKE 流量轉移或藍色 / 綠色執行處理群組流量轉移:最後階段,生產流量會切換至最新部署的環境。
- OKE 部署 (Canary Instance Group Deployment) 或Canary Instance Group Deployment:將更新程式碼部署至目標環境的階段。
- 部署驗證:可使用 Functions 來驗證部署的選擇性階段。
- OKE 流量轉換 (Canary Instance Group Traffic Shift) 或加拿大執行處理群組流量轉移 (Canary Instance Group Traffic Shift) :根據速度限制 (要轉移的流量百分比) 的階段,您會將流量切換至 Canary 環境。
- 控制:核准:核准部署至目標生產環境的控制階段。
- 可選擇部署執行處理群組生產或 OKE 部署生產:最後階段,生產流量會切換至最新部署的環境。
- DevOps 使用者自建物件
DevOps 使用者自建物件指任何構成您應用程式之檔案、二進位、套裝程式、資訊清單或映像檔的參照或指標。建立使用者自建物件時,請通知 Oracle DevOps 實際使用者自建物件的來源位置。DevOps 支援 OCI 容器映像檔登錄和 OCI 使用者自建物件登錄儲存區域。
- 使用者自建物件儲存區域
「使用者自建物件儲存區域」會建立群組相似使用者自建物件的儲存區域。建立之後,您就可以上傳使用者自建物件至此儲存區域。這些使用者自建物件是傳遞至目標部署環境的文字檔、二進位檔以及部署資訊清單的集合。每個使用者自建物件都有其路徑所組成的名稱:版本。路徑是組織使用者自建物件的字串。
- OCI 日誌記錄與通知服務
OCI 日誌記錄服務會儲存與部署相關的日誌。部署執行時間輸出與部署的最終結果會顯示為日誌項目。OCI 通知服務可查看部署專案與其資源的最新狀態,並採取任何必要的動作。例如,當重要事件 (例如部署管線中的階段等待核准) 時,您會收到通知。當您收到通知訊息時,可以前往 DevOps 部署管線並核准階段。
- 部署環境
此環境是部署使用者自建物件之運算資源的集合。環境可以是功能、運算虛擬機器 (VM) 或裸機執行處理或 OKE 叢集。Blue-Green 部署只能與 OKE 叢集和運算虛擬機器搭配使用。
建議
- 運算型態
此架構使用含有 E3 或 E4 彈性資源配置的 Oracle Linux 作業系統映像檔,在 OKE 叢集節點中代管運算主機。如果您的應用程式需要更多記憶體或核心,您可以選擇不同的資源配置。
- VCN
建立 VCN 時,請根據計畫要在 VCN 中連附至子網路的資源數目,決定所需的 CIDR 區塊數目與每個區塊的大小。使用標準專用 IP 位址空間內的 CIDR 區塊。建立 VCN 之後,您可以變更、新增以及移除其 CIDR 區塊。此架構使用公用 VCN 代管 Oracle Container Engine for Kubernetes。您也可以使用專用 VCN。在此情況下,請使用 NAT 閘道讓叢集透過公用網際網路存取。
- Oracle Container Engine for Kubernetes (成功)
此架構部署至 OKE 叢集作為目標環境之一。工作節點是部署在 E3 或 E4 Oracle Linux 作業系統上。此架構使用叢集中的三個工作節點,但在每個叢集上最多可建立 1,000 個節點。
- 執行處理群組
如果您選擇此架構部署至執行處理群組,系統會在您的租用戶中為您選擇資源配置的新運算執行處理。
- 容器映像檔登錄
此架構會將 Registry 部署為專用的 Docker 登錄供內部使用。Docker 映像檔會推送至登錄,並從中提取。您也可以使用 Registry 作為公用 Docker 登錄,讓具備網際網路存取及知識的使用者能夠在 Oracle Cloud 中從公用儲存區域提取映像檔。
- 使用者自建物件登錄
此架構會為執行處理群組、OKE 及 Functions 部署使用的軟體與組態建立使用者自建物件。此架構會建立供內部使用的使用者自建物件登錄儲存區域。軟體二進位檔、文字和部署組態會上傳至使用者自建物件登錄儲存區域並下載。
注意事項
使用 Oracle DevOps 服務部署持續整合與部署 (CI/CD) 平台時,請考量這些因素。
- DevOps 支援的部署
DevOps 支援 OKE、運算主機和 Functions 的部署。此架構部署至 OKE 叢集。請考慮根據您的特定需求部署到其他端點。
- Linux 支援
對運算執行處理進行執行處理群組部署時,只支援 Linux 主機。
- 已部署的使用者自建物件
必須在 OCI 使用者自建物件登錄或容器映像檔登錄儲存區域中,才能使用 DevOps 部署的使用者自建物件。
- 群組應用程式
最好的作法是,將每個應用程式及其所有微服務組成單一專案。
部署
此參照架構的 Terraform 程式碼可作為 Oracle Cloud Infrastructure Resource Manager 的範例堆疊使用。您也可以從 GitHub 下載原始碼,然後自訂該程式碼以符合您的特定需求。
- 使用 Oracle Cloud Infrastructure Resource Manager 中的範例堆疊進行部署:
- 按一下對應至所需部署策略的按鈕,然後依照步驟 2-6 中的指示操作:
如果您尚未登入,請輸入租用戶和使用者證明資料。
- 選取要部署堆疊的區域。
- 遵循螢幕上的提示與指示來建立堆疊。
- 建立堆疊之後,按一下 Terraform 動作,然後選取計畫。
- 等待工作完成,然後複查計畫。
若要進行變更,請返回「堆疊詳細資訊 (State Details)」頁面,按一下編輯堆疊 (Edit Stack) ,然後進行必要的變更。然後再執行計畫動作。
- 如果不需要進一步的變更,請返回「堆疊詳細資訊」頁面,按一下 Terraform 動作,然後選取套用。
- 按一下對應至所需部署策略的按鈕,然後依照步驟 2-6 中的指示操作:
- 使用 GitHub 中的 Terraform 程式碼部署:
- 前往 GitHub。
- 複製或下載儲存庫至本機電腦。
- 依照
README文件中的指示進行。
