使用 GitHub 動作建置 OCI 函數的 CI/CD 管線
架構
此架構使用 GitHub 動作作為外部持續整合與部署系統,以建立程式碼、將程式碼容器化,以及部署 Oracle Cloud Infrastructure Functions。您可以使用其他整合開發環境 (IDE) 工具 (例如 GitLab 或 Azure DevOps),而不使用 GitHub 動作。
下圖說明此參考架構。

cicd-deploy-oci-functions.png 圖解描述
cicd-deploy-oci-functions-oracle.zip
此架構包含下列外部系統:
- 外部系統 (CI/CD)
CI/CD 的外部系統包括整合開發環境 (IDE)、程式碼儲存庫和管線。
此架構使用 GitHub 動作作為外部持續整合與部署代碼儲存庫系統。它可用來建置程式碼,然後使用 Docker 將其容器化。當容器化影像就緒時,GitHub 動作會將影像推送至 OCI 登錄。完成傳輸至登錄後,會啟動 OCI Functions 部署。您可以根據需求使用其他持續整合或部署系統,例如 OCI DevOps、Azure DevOps、Gitlab 或 Jenkins。
- 外部系統 (SIEM/ITSM/OTHER)
SIEM 與 ITSM 的外部系統代表其他協力廠商系統或非 OCI 服務。
聚總和擴充 OCI 稽核日誌、服務日誌和安全事件是外部 SIEM 或 ITSM 系統的基礎需求。集中此資料可讓組織分析、監控及保護其租用戶。
架構具有下列元件:
- 地區
Oracle Cloud Infrastructure 區域是一個本地化地理區域,其中包含一或多個稱為可用性網域的資料中心。區域獨立於其他區域,而廣大的距離可以將其分開 (跨國家或大陸)。
- 虛擬雲端網路 (VCN) 和子網路
VCN 是您在 Oracle Cloud Infrastructure 區域中設定的可自訂軟體定義網路。與傳統的資料中心網路一樣,VCN 可讓您控制網路環境。VCN 可以有多個非重疊的 CIDR 區塊,您可以在建立 VCN 之後變更。您可以將 VCN 區隔成子網路,此子網路可以設定區域範圍或可用性網域。每個子網路都是由連續的位址範圍組成,這些位址不會與 VCN 中的其他子網路重疊。您可以在建立子網路後變更其大小。子網路可以是公用或專用。
- 登錄
Oracle Cloud Infrastructure Registry 是 Oracle 管理的登錄檔,可讓您簡化開發到生產的工作流程。「登錄」可讓您輕鬆儲存、共用及管理開發使用者自建物件,例如 Docker 映像檔。Oracle Cloud Infrastructure 的高可用性且可擴展的架構可確保您能夠可靠地部署和管理應用程式。
- 功能
Oracle Cloud Infrastructure Functions 是一個完全託管的多租戶、高度可擴充、隨選、Functions-as-a-Service (FaaS) 平台。由 Fn Project 開放原始碼引擎提供技術支援。Functions 可讓您部署程式碼,並直接呼叫程式碼或觸發程式碼以回應事件。Oracle Functions 使用 Oracle Cloud Infrastructure Registry 中代管的 Docker 容器。
- 服務連線器
Oracle Cloud Infrastructure Service Connector Hub 是一個雲端訊息匯流排平台,可協調 OCI 中服務之間的資料移動。您可以使用服務連線器將資料從來源服務移至目標服務。服務連線器也可讓您選擇性地指定要在資料傳遞至目標服務之前執行的工作 (例如函數)。
您可以使用 Oracle Cloud Infrastructure Service Connector Hub,快速建立安全資訊和事件管理 (SIEM) 系統的日誌記錄聚總架構。
- 記錄日誌日誌記錄是一項可高度擴展且完全託管的服務,可讓您從雲端中的資源存取下列類型的日誌:
- 稽核記錄:與「稽核」服務所發出之事件相關的記錄。
- 服務日誌:由個別服務 (例如 API 閘道、事件、函數、負載平衡、物件儲存以及 VCN 流量日誌) 發出的日誌。
- 自訂日誌:包含自訂應用程式、其他雲端提供者或內部部署環境診斷資訊的日誌。
- 串流處理
Oracle Cloud Infrastructure 串流提供完全託管、可擴展且持久的儲存解決方案,擷取連續的大量資料串流,您可以即時使用及處理。您可以使用「串流處理」來擷取大量資料 (例如應用程式日誌、作業遙測、Web 按一下串流資料);或其他在發布 / 訂閱訊息傳遞模型中以持續且循序方式產生及處理資料的使用案例。
- 通知
Oracle Cloud Infrastructure Notifications 服務會透過發布 / 訂閱模式,將訊息廣播至分散式元件,針對代管於 Oracle Cloud Infrastructure 的應用程式提供安全、極為可靠、低延遲及持久的訊息。
建議
- VCN
建立 VCN 時,請根據您計畫附加到 VCN 子網路的資源數量,決定所需的 CIDR 區塊數量和每個區塊的大小。請使用標準專用 IP 位址空間內的 CIDR 區塊。
選取未與您要設定專用連線的任何其他網路重疊的 CIDR 區塊 (在 Oracle Cloud Infrastructure 中、您的內部部署資料中心或其他雲端提供者)。
建立 VCN 之後,您可以變更、新增及移除其 CIDR 區塊。
當您設計子網路時,請考慮流量和安全需求。將特定層或角色中的所有資源附加至相同的子網路,作為安全界限。
使用區域子網路。
- 安全清單
使用安全清單定義適用於整個子網路的傳入和傳出規則。
- 網路安全群組 (NSG)
您可以使用 NSG 定義一組適用於特定 VNIC 的傳入和傳出規則。建議您使用 NSG 而非安全列表,因為 NSG 可讓您將 VCN 的子網路架構和應用程式的安全需求分開。
- 雲端保全
在租用戶層級套用 Cloud Guard,以涵蓋最廣泛的範圍,並降低維護多個組態的管理負擔。
您也可以使用「受管理清單」功能,將特定組態套用至偵測器。
- 安全區域
對於需要最高安全性資源,Oracle 建議您使用安全區域。安全區域是與以最佳做法為基礎之 Oracle 定義的安全原則處方關聯的區間。例如,安全區域中的資源不得從公用網際網路存取,且必須使用客戶管理的金鑰來加密。當您在安全區域中建立及更新資源時,Oracle Cloud Infrastructure 會根據安全區域處方中的原則驗證作業,並拒絕違反任何原則的作業。
- OCI 函數
透過 OCI Functions 服務部署的應用程式具有高可用性、可擴展、安全和監控功能。使用 OCI Functions 時,您可以在 Java、Python、Node、Go、Ruby 和 C# 中撰寫程式碼 (對於進階使用案例,請自備 Dockerfile 和 Graal VM)。接著,您可以部署程式碼、直接呼叫程式碼或觸發程式碼以回應事件。
- OCI 登錄
此架構會部署公用 Docker 登錄。Docker 映像檔會推送至登錄檔並從登錄檔中提取,任何具備網際網路存取權的使用者,以及適當 URL 的知識,都能從 Oracle Cloud 中的公用儲存區域提取映像檔。
注意事項
建置此參照架構時,請考量下列各點。
- SIEM 整合
為了協助簡化跨租用戶區域和應用程式組態的聚總日誌資訊部署,您可以使用 OCI 函數服務。
您可以使用 OCI 函數將日誌推送至 SIEM 的 HTTPS API 端點。若要這麼做,請新增從其他 OCI 服務讀取的區域 OCI 服務連線器中心。
- 分組函數
最佳作法是,您可以定義多個函數 (例如,每個環境各一個)。如果您有多個環境 (例如 DEV、UAT、PROD),則可以在個別環境中追蹤每個函數的個別程式碼行。
部署
從 GitHub 下載自動化命令檔程式碼、自訂程式碼,然後進行部署。
您可以從下列位置呼叫已部署至 OCI 函數的函數:
- Fn Project CLI。
- Oracle Cloud Infrastructure SDK。
- 已簽署對函數之呼叫端點的 HTTP 要求。每個函數都有一個呼叫端點。
- 其他 Oracle Cloud 服務 (例如,由事件服務中的事件觸發) 或外部服務。
- 移至 GitHub 。
- 複製或下載儲存區域。
- 若要部署此架構,請遵循參考 YAML 檔案、範例 hello world 應用程式程式碼以及 README 文件。