使用 OCI DevOps 透過 Shell 階段部署含有來源和容器執行處理的 Helm 圖表

快速交付軟體對於有效在雲端執行應用系統來說至關重要。Oracle Cloud Infrastructure DevOps ( OCI DevOps) 服務為開發人員提供持續整合與部署 (CI/CD) 平台。

您可以使用 OCI DevOps 服務在 Oracle Cloud 上輕鬆建置、測試及部署軟體和應用軟體。OCI DevOps 建置和部署管線可減少變更導向的錯誤,並減少建置和部署版本所耗費的時間。

OCI DevOps 服務也提供專用 Git 儲存區域來儲存您的程式碼,並支援將工作負載從內部部署或其他雲端移轉至 Oracle Cloud Infrastructure (OCI) 的外部程式碼 repositories.Whether 連線,或是在 OCI 上開發新應用程式時,您可以使用 OCI DevOps 服務簡化軟體傳遞生命週期。

架構

在此參考架構中,我們將使用 OCI DevOps 部署雲端原生應用程式部署。Oracle Container Engine for Kubernetes (OKE) 和 OCI Container Instances 是作為 OCI DevOps 的部署目標。

此參考架構涵蓋的主要功能包括:

  • 使用例證與完整性檢查來部署 Helm 圖表:透過部署管線使用 GNU 隱私權保護金鑰來簽署 Helm 套裝軟體並驗證完整性。
  • 使用 Shell 階段將應用程式部署至 OCI 容器執行處理: Shell 階段可讓您在部署管線中執行自訂命令。此階段可以在部署管線中的任何時間點新增。在此參照架構中,我們會使用 Shell 階段將應用程式部署到 OCI 容器執行處理。
  • 觸發以檔案為基礎的 OCI 組建管線的執行:在 OCI DevOps 中,當您確認對程式碼儲存區域所做的變更時,可以自動觸發組建執行。您可以使用此方法設定程式碼變更時,組建管線的排除和包含一組檔案 / 資料夾。
  • 使用自訂組建執行程式執行受管理的組建階段:自訂組建執行程式可讓您為組建執行程式設定所需的 OCPU 和記憶體,以支援執行組建指示的必要資源。
  • 將 Terraform 與 OCI DevOps 組建管線的遠端狀態後端搭配使用:S3 相容的 OCI 物件儲存的儲存桶是用來儲存 Terraform 狀態的遠端後端。Terraform 是從 OCI 組建管線執行,已啟用資源主要項目,讓從屬端能夠根據原則控制資源存取。

下圖說明此參照架構。



oci-devops-helm-shell-oracle.zip

架構具有下列元件:

  • 租用戶

    租用戶是指註冊 Oracle Cloud Infrastructure 時,Oracle 在 Oracle Cloud 內設定的安全獨立分割區。您可以在租用戶的 Oracle Cloud 中建立、組織及管理您的資源。租用戶與公司或組織同義。通常,公司會有單一租用戶,並反映其在該租用戶內的組織結構。單一租用戶通常與單一訂閱關聯,而單一訂閱通常只有一個租用戶。

  • 區域

    Oracle Cloud Infrastructure 區域是一個本地化的地理區域,包含一或多個資料中心 (稱為可用性網域)。區域與其他區域無關,因此廣大的距離可加以區隔 (跨國家或甚至洲)。

  • 區間

    區間是 Oracle Cloud Infrastructure 租用戶內的跨區域邏輯分割區。使用區間組織您在 Oracle Cloud 中的資源、控制對資源的存取,以及設定使用配額。若要控制對指定區間中資源的存取,您可以定義原則來指定可存取資源的人員及可執行的動作。

  • 代碼儲存庫

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

  • 建置業務進程

    組建管線定義組建處理作業的階段:組建、測試及編譯軟體使用者自建物件、將使用者自建物件傳遞至 OCI 儲存區域,以及選擇性地觸發部署。

  • 受管理組建階段

    受管理的組建階段使用可快速且可擴展的 OCI DevOps 服務管理的組建執行程式,執行組建指示,組建並測試您的軟體。在此參照架構中,我們使用的是具有預設資源配置 (預先定義的 OCPU 和記憶體) 及自訂資源配置 (使用者定義 OCPU 和記憶體值) 的建置階段。

  • 傳遞使用者自建物件階段

    傳遞使用者自建物件階段是其中一個組建階段,可協助將使用者自建物件或容器映像檔推送至 OCI 容器登錄或 OCI 使用者自建物件登錄,再張貼受管理的組建階段。

  • 部署管線

    將一組使用者自建物件部署至目標環境的步驟順序。部署管線包含循序或平行執行的階段。

  • Helm 圖表部署階段

    Helm 是 Kubernetes 的開放原始碼套件管理程式,它提供共用、封裝和部署為 Kubernetes 建構的軟體的能力。OCI DevOps 服務支援將 Helm 圖表部署至 Kubernetes (OKE) 叢集的容器引擎。Helm 圖表部署階段也會在部署前驗證 Helm 圖表的完整性。

  • Shell 部署階段

    Shell 階段可讓您在部署管線中執行自訂命令。此階段可以在部署管線中的任何時間點新增。

  • 容器執行處理

    OCI 容器執行處理是無伺服器運算服務,可讓您快速輕鬆地執行容器,無伺服器管理。容器執行處理會在針對容器工作負載最佳化的無伺服器運算上執行容器,而此運算與虛擬機器的隔離環境相同。

  • 保存庫

    Oracle Cloud Infrastructure Vault 可讓您集中管理加密金鑰,保護您的資料和用於保護雲端資源安全存取的機密證明資料。您可以使用保存庫服務建立及管理保存庫、金鑰及加密密碼。

  • 物件儲存

    Oracle Cloud Infrastructure Object Storage 服務是網際網路規模的高效能儲存平台,可提供可靠且符合成本效益的資料持久性。物件儲存體服務可以儲存任何內容類型的無結構化資料,包括分析資料和豐富內容 (例如影像和影片)。

  • 記錄日誌

    Oracle Cloud Infrastructure Logging 服務可針對您租用戶中的所有日誌,以高度擴展且完全託管的單一虛擬機器。日誌記錄可讓您從 Oracle Cloud Infrastructure 資源存取日誌。這些日誌包含描述資源執行及存取方式的重要診斷資訊。

  • 通知

    您可以使用 Oracle Cloud Infrastructure Notifications 服務設定通訊通道,使用主題和訂閱發布訊息。

建議

使用下列建議作為起點。您的需求可能與此處所述的架構不同。
  • VCN

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

    選取未與欲設定專用連線之任何其他網路 (在 Oracle Cloud Infrastructure 、您的內部部署資料中心或其他雲端提供者) 重疊的 CIDR 區塊。

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

    設計子網路時,請考慮您的流量與安全需求。將特定層或角色內的所有資源連附至相同的子網路,以作為安全界限。

  • 運算資源配置

    此架構使用的 Oracle Linux 作業系統映像檔搭配 E4 彈性資源配置,可代管 OKE 叢集節點中的運算主機或虛擬節點。如果您的應用程式需要更多的記憶體或核心,您可以選擇不同的資源配置。

  • 物件登錄

    此架構會為執行處理群組、OKE 和 Functions 部署使用的軟體和組態建立使用者自建物件。此架構會建立供內部使用的使用者自建物件登錄儲存區域。從使用者自建物件登錄儲存區域上傳並下載軟體二進位檔、文字以及部署組態。

  • 容器映像檔登錄

    此架構會將登錄部署為專用 Docker 登錄,供內部使用。Docker 映像檔會推送至登錄並從登錄中提取。您也可以使用登錄作為公用 Docker 登錄,讓具備網際網路存取權限的任何使用者都能從 Oracle Cloud 的公用儲存區域提取映像檔。

  • 完整性與安全性

    這裡有數個重點區域,以確保應用程式軟體的安全性和完整性。OCI 保存庫用於儲存 helm 圖表加密,並確保在部署前先驗證圖表。登錄 (使用者自建物件和容器) 可確保儲存應用程式映像檔和使用者自建物件並儲存必要的安全性。透過 OCI Virtual Cloud 網路強制實行數個安全規則和必要的路由規則,只允許應用程式和基礎架構的必要網路流量。此外,物件儲存體會標示為專用,以保護及控制流量。

  • 物件儲存

    物件儲存可快速存取任一內容類型的大量結構化與非結構化資料,包括資料庫備份、分析資料及豐富內容 (例如影像和影片)。您可以安全地儲存,然後直接從網際網路或雲端平台內擷取資料。您可以無縫擴充儲存,而不會發生任何效能或服務可靠性的降低。針對快速、立即和經常存取的「熱」儲存,使用標準儲存。將封存儲存用於長時間且很少存取的「冷」儲存。應用程式代碼是在私人代管的儲存庫內設定。除了必須執行 OCI Identity 原則的所有資源之外,我們也會相應地強制執行。

注意事項

使用 OCI DevOps 服務部署持續整合和部署 (CI/CD) 平台時,請考慮這些因素。

  • DevOps 支援的部署

    DevOps 支援 Oracle Container Engine for Kubernetes (OKE)、運算主機和 OCI Functions 的部署。此架構部署至 OKE 叢集,並針對其他可能目標使用 Shell 階段。請考慮根據您的特定需求部署至其他端點。

  • 已部署的使用者自建物件

    要使用 DevOps 部署的使用者自建物件必須位於 OCI 使用者自建物件登錄或「容器映像檔登錄」儲存區域中。

  • 群組應用程式

    最好的作法是,將每個應用程式及其所有微服務群組成單一專案。

部署

此參照架構的 Terraform 程式碼在 Oracle Cloud Infrastructure Resource Manager 中會以範例堆疊的方式提供。您也可以從 GitHub 下載程式碼,然後根據您的特定需求加以自訂。

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

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

    2. 選取您想要部署此堆疊的區域。
    3. 請依照螢幕上的提示與指示建立堆疊。
    4. 建立堆疊之後,按一下 Terraform 動作,然後選取計畫 (Plan)
    5. 等待工作完成,並複查計畫。

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

    6. 如果不需要進一步的變更,請返回「堆疊詳細資訊 (Stack Details)」頁面,按一下 Terraform 動作,然後選取套用 (Apply)
  • 使用 GitHub 中的 Terraform 程式碼部署:
    1. 前往 GitHub
    2. 複製或下載儲存區域到您的本機電腦。
    3. 遵循 README 文件中的說明。

確認

  • Author: Rahul M R