Takamol:在 Oracle Cloud 上部署政府人力資源平台的 Kubernetes 與微服務
為了協助將老年公民與政府和私營部門雇主配對,Riyadh Takamol Holding 在混合基礎架構中執行工作訓練、技能提升和人才開發服務平台,其雲端環境會在 OCI Kubernetes Engine (OKE) 中執行多個 Kubernetes 叢集。
Takamol 成立於 2013 年,擔任沙烏地阿拉伯人力資源與社會發展部的部門,花費近十年的時間將人力資源計畫現代化到整個王國。
Takamol 的內部部署基礎架構由於營運和維護成本過高,因此 Takamol 決定採用 Oracle Cloud Infrastructure (OCI) 上執行的容器型微服務架構,推出新的人力與經濟開發平台。今天,數以百計的人每天都使用 Takamol 的平台,讓他們能夠找到、申請及準備就業。最近,Takamol 移轉了機構及個人捐贈者使用的捐款平台。
在 Jeddah 的 Oracle Cloud 區域中,Takamol 的平台支援每分鐘 5000 個同時的使用者和處理多達 10,000 個要求。Takamol 使用 OCI 的託管服務,在不停機的情況下快速自動更新其雲端原生平台。在 OCI 租用戶中,Takamol 可以在尖峰時間快速縱向擴展,並在離峰時間縮減,以最低的成本提供即時支援。
Takamol 在 OCI 上的雲端原生部署重點包括:
- 使用 OCI Kubernetes 引擎以容器為基礎的架構
- 在尖峰時間滿足高需求的水平 Pod 自動調整 (HPA)
- 零信任網路存取
- NGINX Web 應用系統防火牆
- 對於其狀態性元件,Takamol 使用 PostgreSQL 作為資料庫,使用 RabbitMQ 作為訊息佇列
架構
Takamol Holding 工程師可連線至零信任的網路存取工具,並在取得虛擬雲端網路 (VCN) 存取權之前,先透過自己的單一登入進行認證。
平台使用者會透過 Oracle Cloud Infrastructure Load Balancing 遞送,以跨三個不同的容錯域管理使用者要求。接著,系統會將使用者要求傳送至 Oracle Cloud Infrastructure Kubernetes Engine (OKE) 傳入控制器,在將其遞送至最終目的地之前,對其進行檢查。
在 Kubernetes 叢集中,Takamol 使用多個開放原始碼工具來處理使用者要求,包括 NGINX、反向代理伺服器、負載平衡器和 API 閘道。這些服務會透過使用水平 Pod 自動調整 (HPA) 在尖峰時間滿足高需求,跨 Kubernetes 叢集進行調整。Takamol 還使用第 7 層應用程式保護拒絕服務 (DoS) 應用程式,以及透過 F5 NGINX 保護 WAF 的應用程式。大多數 Takamol 的應用程式都是無狀態的,遵循 12 個因素模型,因此不需要應用程式內快取或儲存。因此,Takamol 的應用程式使用外部儲存服務,以便在 Kubernetes 叢集中輕鬆部署、自動調整及管理。
Takamol 還使用適用於 Kubernetes 的宣告式 GitOps 持續交付工具 Argo CD。使用 Argo CD,Takamol 可以在不提供直接存取叢集的情況下以宣告方式部署其工作負載,進而將其叢集部署到私有子網路。Argo CD 不僅是開發人員更新應用程式,而是從 Gitlab 儲存庫讀取以部署新服務,而無需提供 Gitlab 直接存取以更新叢集。對於其狀態性元件,Takamol 使用 PostgreSQL 作為資料庫,使用 RabbitMQ 作為訊息佇列。
負載平衡器、Kubernetes 叢集和開源工具都位於不同的子網路中。雖然這些資訊彼此隔離,但可以透過通訊連接埠傳送和接收資訊。Takamol 可以使用 Oracle VCN 流量日誌和 SEIM 安全作業中心 (SOC),透過虛擬化不同子網路之間的通訊,無須安裝額外的工具。在未來幾個月,Takamol 計畫透過 Oracle Cloud Infrastructure Functions 傳送其 VCN 流量日誌,將網路日誌傳遞至 SEIM 解決方案。
- 大約有 90% 的 Takamol 架構是透過開放原始碼 Oracle Cloud Infrastructure Terraform 提供者使用基礎架構即程式碼 (IaC) 所打造,提供內部建置的模組。此方法可減少部署和管理基礎架構所需的人力,從而加快變更速度,並大幅降低人為錯誤的風險。
- Takamol 開發、測試和生產前環境中的所有服務都會複寫為其生產環境。這些環境都不會相互連線。這可確保環境之間的一致性。
- 資料庫備份是使用 pgbackrest 來完成,這些備份會封存並儲存 Oracle Cloud Infrastructure Block Volumes 中的備份。這可在支援時間點 (PIT) 復原的同時,為資料庫提供長期儲存。
- Oracle Cloud Infrastructure Object Storage 是由微服務、指標、OKE 日誌和 GitLab 執行器用來快取資料。它也提供符合成本效益且長期的 PostgreSQL 資料庫資料庫備份。
- Oracle Cloud Infrastructure Registry 和 Oracle Cloud Infrastructure Identity and Access Management 原則可協助 Takamol 控制使用者存取儲存區域。在此之前,公司使用了 Docker Hub,但未提供 OCI 的微點控制。此外,透過 OCI Registry,Takamol 使用內建安全掃描功能。
- Takamol 使用 Loki (日誌的時間序列資料庫)、Prometheus (度量收集)、Tempo (追蹤) 及 Grafana (視覺化),這些視覺化全都集中在單一 OKE 叢集中。
下圖說明此參考架構。
對於未來的狀態和藍圖,Takamol 希望將更多服務移轉至託管和雲端原生服務:
- 從 Neom 的 Oracle Cloud 區域執行災難復原網站。
- 使用 Oracle Cloud Infrastructure Search 搭配 OpenSearch,進行分散式、完全受管理且免維護的全文檢索搜尋引擎。
- 針對資料庫工作負載使用 Oracle Autonomous Data Warehouse 。
- 使用 Oracle Cloud Infrastructure 漏洞掃描服務掃描漏洞,尤其是停駐程式映像檔。
架構具有下列元件:
- Tenancy
租用戶是 Oracle 在您註冊 Oracle Cloud Infrastructure 時設定在 Oracle Cloud 內的安全隔離分割區。您可以在租用戶內的 Oracle Cloud 中建立、組織及管理您的資源。租用戶與公司或組織同義。通常,公司會擁有單一租用戶,並在該租用戶內反映其組織結構。單一租用戶通常與單一訂閱相關聯,單一訂閱通常只有一個租用戶。
- 地區
Oracle Cloud Infrastructure 區域是一個本地化地理區域,其中包含一或多個稱為可用性網域的資料中心。區域獨立於其他區域,而廣大的距離可以將其分開 (跨國家或大陸)。
- 區間
區間是 Oracle Cloud Infrastructure 租用戶內的跨區域邏輯分割區。使用區間來組織、控制存取,以及為您的 Oracle Cloud 資源設定使用配額。在指定的區間中,您可以定義控制存取及設定資源權限的原則。
- 可用性網域
可用性網域是區域內的獨立獨立資料中心。每個可用性網域中的實體資源會與其他可用性網域中的資源隔離,以提供容錯能力。可用性網域不會共用基礎架構 (例如電源或冷卻系統) 或內部可用性網域網路。因此,一個可用性網域的故障不應影響該區域中的其他可用性網域。
- 容錯域
容錯網域是可用性網域內的一組硬體和基礎架構。每個可用性網域都有三個具有獨立電源和硬體的容錯域。當您將資源分散到多個容錯域時,您的應用程式可以容忍容錯域內的實體伺服器故障、系統維護和電源故障。
- 虛擬雲端網路 (VCN) 和子網路
VCN 是您在 Oracle Cloud Infrastructure 區域中設定的可自訂軟體定義網路。與傳統的資料中心網路一樣,VCN 可讓您控制網路環境。VCN 可以有多個非重疊的 CIDR 區塊,您可以在建立 VCN 之後變更。您可以將 VCN 區隔成子網路,此子網路可以設定區域範圍或可用性網域。每個子網路都是由連續的位址範圍組成,這些位址不會與 VCN 中的其他子網路重疊。您可以在建立子網路後變更其大小。子網路可以是公用或專用。
- 安全清單
您可以為每個子網路建立安全規則,以指定必須允許進出子網路的來源、目的地和流量類型。
- 路由表
虛擬路由表包含將流量從子網路路由到 VCN 外部目的地 (通常是透過閘道) 的規則。
- 網際網路閘道
網際網路網關允許 VCN 中公共子網路與公共網際網路之間的流量。
- 服務閘道
服務閘道可讓您從 VCN 存取其他服務,例如 Oracle Cloud Infrastructure Object Storage 。從 VCN 到 Oracle 服務的流量會透過 Oracle 網路結構傳送,不會周遊網際網路。
- 負載平衡器
Oracle Cloud Infrastructure Load Balancing 服務提供從單一進入點到後端多部伺服器的自動流量分配。
- Kubernetes 引擎
Oracle Cloud Infrastructure Kubernetes Engine ( OCI Kubernetes 引擎或 OKE) 是完全託管、可擴展且高可用性的服務,可用來將容器化應用程式部署到雲端。您可以指定應用程式所需的運算資源,而 Kubernetes 引擎則會在現有租用戶的 Oracle Cloud Infrastructure 上佈建這些資源。OKE 使用 Kubernetes 將跨主機叢集的容器化應用程式部署、調整規模及管理自動化。
- 計算
透過 Oracle Cloud Infrastructure Compute ,您可以在雲端中佈建及管理運算主機。您可以使用資源配置啟動運算執行處理,以滿足 CPU、記憶體、網路頻寬及儲存的資源需求。建立運算執行處理之後,您可以安全地存取、重新啟動、連附及取消連附磁碟區,以及在不再需要時將其終止。
- 服務連線器
Oracle Cloud Infrastructure Service Connector Hub 是一個雲端訊息匯流排平台,可協調 OCI 中服務之間的資料移動。您可以使用服務連線器將資料從來源服務移至目標服務。服務連線器也可讓您選擇性地指定要在資料傳遞至目標服務之前執行的工作 (例如函數)。
您可以使用 Oracle Cloud Infrastructure Service Connector Hub,快速建立安全資訊和事件管理 (SIEM) 系統的日誌記錄聚總架構。
- 登錄
Oracle Cloud Infrastructure Registry 是 Oracle 管理的登錄檔,可讓您簡化開發到生產的工作流程。「登錄」可讓您輕鬆儲存、共用及管理開發使用者自建物件,例如 Docker 映像檔。Oracle Cloud Infrastructure 的高可用性且可擴展的架構可確保您能夠可靠地部署和管理應用程式。
- 身分識別與存取管理 (IAM)
Oracle Cloud Infrastructure Identity and Access Management (IAM) 是 Oracle Cloud Infrastructure (OCI) 和 Oracle Cloud Applications 的存取控制層。IAM API 和使用者介面可讓您管理識別網域和識別網域內的資源。每個 OCI IAM 識別網域都代表獨立的識別與存取管理解決方案,或代表不同的使用者群體。
- 原則
Oracle Cloud Infrastructure Identity and Access Management 原則會指定誰可以存取哪些資源及存取方式。存取權是在群組和區間層級授予,這表示您可以撰寫原則,為群組提供特定區間或租用戶的特定存取類型。
- Oracle Cloud Infrastructure Vault
Oracle Cloud Infrastructure Vault 可讓您集中管理保護資料的加密金鑰,以及用來保護雲端資源存取的秘密證明資料。您可以使用 Vault 服務來建立和管理 Vault、金鑰和加密密碼。
- 雲端保全
您可以使用 Oracle Cloud Guard 來監控和維護 Oracle Cloud Infrastructure 中資源的安全性。Cloud Guard 使用偵測器處方,您可以定義檢查資源是否有安全漏洞,並監控操作員和使用者的特定風險活動。偵測到任何組態錯誤或不安全活動時,雲端保全會根據您可以定義的回應器處方建議更正動作並協助採取這些動作。
- 記錄日誌日誌記錄是一項可高度擴展且完全託管的服務,可讓您從雲端中的資源存取下列類型的日誌:
- 稽核記錄:與「稽核」服務所發出之事件相關的記錄。
- 服務日誌:由個別服務 (例如 API 閘道、事件、函數、負載平衡、物件儲存以及 VCN 流量日誌) 發出的日誌。
- 自訂日誌:包含自訂應用程式、其他雲端提供者或內部部署環境診斷資訊的日誌。
- 物件儲存
Oracle Cloud Infrastructure Object Storage 可讓您快速存取任何內容類型的大量結構化和非結構化資料,包括資料庫備份、分析資料,以及影像和影片等豐富內容。您可以安全地儲存資料,然後直接從網際網路或雲端平台內擷取資料。您可以擴展儲存體,而不會發生任何效能或服務可靠性的降低問題。針對您需要快速、立即和經常存取的「熱」儲存,使用標準儲存。針對長時間保留且極少或極少存取的「冷」儲存,使用封存儲存。
- 分析
Oracle Analytics Cloud 是可擴展且安全的公有雲服務,為業務分析師提供現代化的 AI 自助服務分析功能,以進行資料準備、視覺化、企業報告、增強分析,以及自然語言處理和生成。透過 Oracle Analytics Cloud ,您還可以獲得靈活的服務管理功能,包括快速設定、輕鬆調整規模和修補,以及自動化生命週期管理。