使用 Oracle Cloud Infrastructure DevOps 服務建立連續整合與部署管線

快速交付軟體是有效率地在雲端建置和部署應用系統的主要原因。Oracle Cloud Infrastructure (OCI) DevOps 服務提供持續整合與部署 (CI/CD) 平台,讓開發者能夠在 Oracle Cloud 上輕鬆建置、測試及部署軟體和應用系統。

OCI DevOps 建置及部署管線可減少變更導向錯誤,並減少客戶花在建立和修正問題的時間,讓軟體得以重建,並在套用變更後進行擷取,因此可早發現任何不利影響。

此服務包括提供私人 GIT 儲存區域以儲存您的程式碼,並支援與外部程式碼儲存區域的連線,以保存原始程式碼和組態檔。由於組建流程取決於並產生中介使用者自建物件 (模組、套裝程式等等),因此它們也會與 Oracle 的使用者自建物件和容器儲存區域搭配運作。不論要將工作負載移轉至 OCI (從內部部署或其他雲端),還是在 OCI 上開發新應用程式,都可以使用 OCI DevOps 來簡化軟體傳遞生命週期。

在混合式或多重雲端環境中作業時,可以使用 OCI DevOps 建立要部署在其他環境中的使用者自建物件。

架構

此參照架構建立所有服務與組態,可讓您建立和測試範例 Node.js Web 應用程式,然後使用 OCI DevOps 將其部署至 OKE。Terraform 部署包含建立所需的管線與儲存區域。應用程式原始碼由 DevOps 程式碼儲存庫代管。然後使用者可將程式碼確認至儲存區域中,這會觸發組建管線的開始。

組建管線會依照使用者定義的流程來建立和測試軟體,然後使用最新版本的應用程式建立容器映像檔。組建的輸出會以影像形式儲存在容器登錄中。接著,部署管線會使用容器登錄和 Kubernetes 資訊清單中建立的映像檔,將最新版本的應用程式部署到 OKE。

提供的管線不會考量使用靜態程式碼分析和滑鼠工具,例如套用單位測試及分析程式碼品質。

下圖說明此參考架構。

deploy-pipeline-devops-arch.png 描述如下
deploy-pipeline-devops-arch.png 圖解描述

deploy-pipeline-devops-arch-oracle.zip

此架構包含下列元件:
  • 區域

    OCI 區域是包含一或多個資料中心 (稱為可用性網域) 的本地化地理區域。區域與其他區域無關,而且大型距離可以區隔 (跨國家或甚至洲)。架構使用單一區域。

  • DevOps 專案

    導入 CI/CD 工作流程所需的 DevOps 資源邏輯群組。DevOps 資源可以是使用者自建物件、建立管線、部署管線、外部連線、觸發程式以及環境。DevOps 專案可讓您輕鬆啟用所有 DevOps 資源的記錄日誌、監督及通知。

  • 組建管線

    組建管線會從您的原始程式碼儲存區域取得一個確認 ID,並使用該原始程式碼來執行您的組建指示。組建管線定義組建處理作業的一組階段–組建、測試及編譯軟體使用者自建物件、將使用者自建物件傳遞至 OCI 儲存區域,以及選擇性觸發部署。您可以在組建規格檔案中定義組建執行的流程和指示。

  • 代碼儲存庫

    DevOps 服務代管的專用 Git 儲存區域。您可以使用 OCI DevOps 程式碼儲存區域來儲存、管理、開發原始程式碼。

  • 部署管道

    將一組使用者自建物件傳遞至目標環境的一系列步驟。您可以藉由定義可以循序或平行方式執行的階段,來控制軟體版本的流程和邏輯。

  • 部署階段
    階段是執行管線時所發生的個別動作。DevOps 部署管線包括下列預先定義的階段類型,供您在釋出處理作業中使用:
    • 機動部署:OKE、函數或執行處理群組的增量版本
    • 等待:等待 N 秒
    • 手動核准:如果已核准,則繼續進行;如果核准遭拒,則停止。
    • 呼叫函數:呼叫「函數」並傳送要求參數的使用者自建物件,以執行自訂作業或整合。
  • DevOps 人工因素

    DevOps 使用者自建物件是構成應用程式之任何檔案、二進位檔案、套裝程式、資訊清單或影像的參照或指標。建立構件時,通知 Oracle DevOps 有關實際構件的來源位置。DevOps 支援 OCI 容器映像檔登錄和 OCI 使用者自建物件登錄儲存區域。

  • 人工因素儲存區域

    「使用者自建物件儲存區域」會建立儲存區域來群組相似的使用者自建物件。建立儲存區域時,您可以將使用者自建物件上傳至該儲存區域。這些使用者自建物件是傳遞至目標部署環境的文字檔、二進位檔案及部署清單的集合。每個使用者自建物件都有由其 path:version 組成的名稱。路徑是用來組織人工因素的字串。

  • OCI 記錄日誌與通知服務

    OCI 日誌記錄服務會儲存與部署相關的日誌。建置程式實際執行輸出和建置的最終結果會顯示為日誌項目。OCI 通知服務可檢視部署專案及其資源的最新狀態,並採取任何必要的動作。例如,系統會在重要事件 (例如建置管線中等待核准的階段) 時通知您。當您收到通知訊息時,可以移至 DevOps 建置管線並核准階段。

  • 建置環境
    環境是部署使用者自建物件之客戶的運算資源集合。環境可以是功能、運算虛擬機器 (VM)、裸機執行處理或 OKE 叢集。
    • Oracle Kubernetes 叢集 (OKE):OCI Container Engine for Kubernetes 是一項完全受管理、可擴展的高可用性服務,可用來將容器化應用系統部署到雲端。
    • 運算執行處理:OCI 運算服務可讓您在雲端佈建及管理運算主機。您可以部署資源配置符合您 CPU、記憶體、網路頻寬以及儲存資源需求的運算執行處理。
    • 函數:Oracle Functions 是一個完全受管理的多租用戶、高度可擴展、隨選、功能即服務平台。此服務是建立在企業級 Oracle Cloud Infrastructure 上,並由 Fn 專案開源引擎提供。
    環境可以和部署管線的區域位於不同的 OCI 區域。此區隔可讓開發人員使用相同的部署管線在多個 OCI 區域中進行部署。

建議

請使用下列建議作為使用 OCI DevOps 建立組建和建置管線的起點。 您的需求可能會與此處描述的架構不同。
  • 運算資源配置

    此架構使用 Oracle Linux 作業系統映像檔搭配 E3 或 E4 彈性資源配置。您可以從執行處理群組環境中的運算主機和 OKE 叢集節點所需的最低資源開始。如果您的應用程式需要更多的記憶體或核心,您可以選擇不同的資源配置。

  • VCN

    建立 VCN 時,請根據計畫連附至 VCN 中子網路的資源數目,判斷所需的 CIDR 區塊數目和各個區塊的大小。使用標準專用 IP 位址空間內的 CIDR 區塊。

    建立 VCN 之後,您可以變更、新增及移除其 CIDR 區塊。

    此架構使用公用 VCN 代管 Container Engine for Kubernetes。您也可以使用專用 VCN。在此情況下,請使用 NAT 閘道透過公用網際網路授予叢集存取權。

  • Oracle Container Engine for Kubernetes (OKE)

    此架構會將 OKE 叢集部署為其中一個目標環境。工作節點部署在 E3 或 E4 Oracle Linux 作業系統上。此架構使用叢集中的三個工作節點,但是您最多可以在每個叢集上建立 1,000 個節點。

  • 容器映像檔登錄

    此架構會將登錄檔部署為專用 Docker 登錄檔以供內部使用。Docker 映像檔會推送至登錄,並從登錄提取。您也可以使用登錄檔作為公用 Docker 登錄檔,讓任何具有網際網路存取權的使用者和適當 URL 的知識,從 OCI 中的公用儲存區域提取影像。

注意事項

部署此參照架構時,請注意下列幾點:

  • DevOps 支援 OKE、運算主機、函數的部署。
  • 運算執行處理的執行處理群組部署只支援 Linux 主機。
  • 要與 DevOps 一起部署的使用者自建物件必須在 OCI 使用者自建物件登錄或容器映像檔登錄儲存區域中。
  • 最佳作法是將每個應用程式及其所有微服務群組為單一專案。

部署

GitHub 中提供使用 OCI DevOps 建立組建和部署管線的 Terraform 程式碼。

  • 使用 Oracle Cloud Infrastructure Resource Manager 中的範例堆疊進行部署:
    1. 按一下 部署到 Oracle Cloud

      如果您尚未登入,請輸入租用戶和使用者證明資料。

    2. 選取您要在其中部署堆疊的區域。
    3. 依照畫面上的提示和指示建立堆疊。
    4. 建立堆疊之後,請按一下 Terraform 動作,然後選取畫。
    5. 等待工作完成,然後複查計畫。

      若要進行任何變更,請返回「堆疊詳細資訊」頁面,按一下編輯堆疊,然後進行必要的變更。然後,再次執行「劃」動作。

    6. 如果不需要進一步的變更,請返回「堆疊詳細資訊」頁面,按一下 Terraform 動作,然後選取用。
  • 使用 Terraform CLI 部署:
    1. 前往 GitHub
    2. 將儲存區域複製或下載到您的本機電腦。
    3. 依照 README 文件中的指示進行。

變更日誌

此日誌會列出重大變更: