以主要/代理程式模式部署 Jenkins
架構
此參照架構使用 Jenkins Oracle Cloud Infrastructure Compute Plugin,以控制器 / 代理程式模式部署 Jenkins。安裝在 Jenkins 控制器執行處理時,Plugin 可視需要在 Oracle Cloud Infrastructure 內建立代理程式執行處理,在組建工作完成後自動移除執行處理或免費資源。
此架構包含一個控制器執行處理和兩個代理程式執行處理作為部署的起點。您可以視需要調整代理程式執行處理數目或控制器執行處理的大小。Jenkins 控制器執行處理應使用 Oracle Cloud Infrastructure Plugin 程式碼進行安裝。
此架構使用具有一個可用性網域和區域子網路的區域。您可以在具有多個可用性網域的區域中使用相同的參照架構。不論可用性網域數目為何,建議您使用區域子網路進行部署。
此架構也包含一個負載平衡器和 NAT 閘道,以提供對網際網路的安全存取。
下圖說明此參考架構。

jenkins-oci.png 圖解說明
您也可以改用 Oracle Container Engine for Kubernetes (OKE)。此架構的設定方式比 OKE 簡單,但在調整您使用的代理程式數目時,OKE 提供了更大的彈性。
架構包含下列元件:
- Jenkins 控制器執行處理
此虛擬運算執行處理可作為控制器節點。它會監督代理程式執行處理的狀態 (離線或線上),並接收來自代理程式的任務結果回應。
- Jenkins 代理程式執行處理
這些虛擬運算執行處理可作為代理程式節點。控制器節點會視需要建立它們,並依控制器節點指示執行任何工作。
- 區域
Oracle Cloud Infrastructure 區域是包含一或多個資料中心 (稱為可用性網域) 的本地化地理區域。區域與其他區域無關,而且大型距離可以區隔 (跨國家或甚至洲)。
- 虛擬雲端網路 (VCN) 和子網路
每個運算執行處理都會部署到 VCN 中,並且可以分割成子網路。
- 可用性網域
可用性網域是區域內獨立的獨立資料中心。每個可用性網域中的實體資源都會與其他可用性網域中的資源隔離,以提供容錯。可用性網域不會共用基礎架構,例如電源、冷卻或內部可用性網域網路。因此,一個可用性網域的失敗並不會影響區域中的其他可用性網域。
- 容錯域
容錯域是一組可用性網域內的硬體和基礎架構。每個可用性網域都有三個具有獨立電源和硬體的容錯域。當您將資源分配到多個容錯域時,應用程式可能會容許容錯域內的實體伺服器故障、系統維護和電源故障。
- 負載平衡器
負載平衡器會將內送流量分配給 Jenkins 控制器節點,並提供網際網路存取控制器節點的使用者存取。建議使用 100 Mbps 負載平衡器,因為它主要用於連線至 Jenkins 控制器,而流量不會重負荷使用者。
- NAT 閘道
網路位址轉譯 (NAT) 閘道提供 NAT 服務。您不需要選擇閘道的大小
- 防禦主機
堡壘主機是運算執行處理,可作為與雲端外部拓樸安全、受控制的進入點。堡壘主機通常是在分散式區域 (DMZ) 中佈建。它可將機密資源配置在無法直接從雲端存取的專用網路中,藉此保護機密資源。拓樸具有單一的已知進入點,您可以定期監督和稽核。因此,您可以避免讓拓樸的機密元件暴露,而不用存取拓樸。
- 安全清單
您可以為每個子網路建立安全規則,以指定子網路中必須允許的來源、目的地以及流量類型。
- 路由表格
虛擬路由表包含規則,用於將流量從子網路遞送至 VCN 以外的目的地 (通常是透過閘道)。
推薦
您的需求可能會與此處描述的架構不同。使用下列建議作為起點。
- 運算資源配置 (Jenkins 控制器)
此架構使用兩個核心虛擬機器 (VM) 資源配置供 Jenkins 控制節點使用。控制器節點負責分配工作、收集代理程式節點結果,以及監督代理程式節點以供可用性。
- 運算資源配置 (Jenkins 代理程式)
此架構為 Jenkins 代理程式節點使用四個核心 VM 資源配置。確定代理程式的 CPU 高於控制器節點。
- 運算資源配置 (堡壘主機)
堡壘主機是用來存取專用子網路中的任何節點。建議您使用 VM.Standard.E2.1 或 VM.Standard.E2.2 資源配置。
- VCN
建立 VCN 時,請根據計畫連附至 VCN 中子網路的資源數目,判斷所需的 CIDR 區塊數目和各個區塊的大小。使用標準專用 IP 位址空間內的 CIDR 區塊。
選取未與任何其他網路重疊的 CIDR 區塊 (在 Oracle Cloud Infrastructure 中、企業內部部署資料中心或其他雲端提供者),以設定專用連線。
建立 VCN 之後,您可以變更、新增及移除其 CIDR 區塊。
設計子網路時,請考量您的流量和安全需求。將特定層或角色內的所有資源連附至可作為安全界限的相同子網路。
使用區域子網路。
- 安全清單
使用安全清單定義套用至整個子網路的輸入和輸出規則。
此架構可讓整個專用子網路的內部 ICMP 使用。
考量
- 效能
若要獲得最佳效能,請確定 Jenkins 控制器節點具有足夠的核心和記憶體。視代理程式節點執行的建置或其他作業而定,建立具有足夠核心和記憶體的代理程式節點。
- 使用狀態
Jenkins 控制器節點會監控代理程式節點是否有可用性,並視需要產生新的節點。在具有多個可用性網域的區域中,您可以為不同可用性網域中的代理程式節點建立部署樣板 (在 Jenkins 控制器上)。
- 成本
根據預期的工作負載部署,調整控制器和代理程式節點上的 CPU 大小。您可以在主控台中變更節點資源配置,從較小的 CPU 計數 (通常是兩個) 開始,然後視需要進行調整。在控制器節點中使用「執行處理」樣板指定代理程式節點的資源配置。
- 監督和警示
為控制器和代理程式節點設定 CPU 和記憶體使用量的監督與警示,以便視需要縱向擴展或縮減 VM 資源配置。
建置
GitHub 中提供此參照架構的 Terraform 程式碼。只要按一下即可將程式碼提取至 Oracle Cloud Infrastructure Resource Manager,然後建立堆疊並加以部署。或者,您也可以使用 Terraform CLI,從 GitHub 下載程式碼到您的電腦、自訂程式碼以及建置架構。
- 使用 Oracle Cloud Infrastructure Resource Manager 進行部署:
- 使用 Terraform CLI 部署:
- 前往 GitHub。
- 將程式碼下載或複製到您的本機電腦。
- 依照 README 中的指示進行。