附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱 Oracle Cloud Infrastructure Free Tier 入門。
- 它使用 Oracle Cloud Infrastructure 證明資料、租用戶及區間的範例值。完成實驗室時,請將這些值取代為您雲端環境特定的值。
使用 OpenCost 在 OCI Kubernetes 引擎上管理多租用戶 SaaS 成本
簡介
在 Oracle Cloud Infrastructure (OCI) 上提供多租用戶軟體即服務 (SaaS) 解決方案的獨立軟體供應商 (ISV) 通常面臨有效管理成本的挑戰,同時確保每個租用戶的計費準確。SaaS 提供者之間的一種常見方法是使用 Kubernetes 命名空間在 Kubernetes 上執行其租用戶的工作負載,以邏輯方式在同一個叢集中分隔它們。在 Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes 引擎或 OKE) 上部署叢集時,OCI 會提供整體叢集的詳細成本資料。不過,無法為個別 Kubernetes 元件 (例如命名空間) 提供精細的成本洞察分析,這些元件對於追蹤和計費租用戶特定資源使用量至關重要。
在本教學課程中,我們將逐步介紹使用開放原始碼成本監控工具 OpenCost 的易於部署解決方案,此工具可協助在 OKE 的多租用戶環境中追蹤和管理成本。
您身為 ISV,很有可能會執行多個用戶在 OKE 叢集中共用基礎架構的 SaaS 應用程式。挑戰是讓每個租用戶使用資源的相關成本能夠一目瞭然。瞭解這些成本對於準確分配費用至關重要,並確保對每個租用戶公平計費。
如果您無法檢視每一租用戶的資源使用狀況,就很難:
- 準確地向租戶收取其 Kubernetes 資源使用費。
- 最佳化資源以避免過度佈建。
- 控制成本,確保 SaaS 業務的獲利能力。
OpenCost 是專為 Kubernetes 環境設計的開放原始碼成本監控和管理工具。它會追蹤 OKE 叢集的資源使用量,並配置 CPU、記憶體、儲存體以及網路的成本。OpenCost 可讓您根據 Kubernetes 命名空間輕鬆地將這些成本對應至租用戶,使其成為具有多租用戶 SaaS 應用程式之 ISV 的理想解決方案。
您可以使用 OpenCost 執行下列作業:
- 依命名空間 (或其他 Kubernetes 元件) 配置成本,以追蹤個別租用戶使用狀況。
- 追蹤及分析指定期間內每個租用戶的資源使用量。
- 最佳化租戶環境,以確保有效使用資源。
目標
- 使用 OpenCost 在 OKE 上管理多租用戶 SaaS 成本。
必要條件
-
OCI 中的作用中 OKE 叢集。
-
已安裝並設定 kubectl 以存取您的 OKE 叢集。
-
已安裝 Helm 來管理您的 Kubernetes 套裝程式。
-
安裝 Prometheus。執行下列命令。
helm install prometheus --repo https://prometheus-community.github.io/helm-charts prometheus \ --namespace prometheus-system --create-namespace \ --set prometheus-pushgateway.enabled=false \ --set alertmanager.enabled=false \ -f https://raw.githubusercontent.com/opencost/opencost/develop/kubernetes/prometheus/extraScrapeConfigs.yaml
在 OKE 叢集上安裝 OpenCost
-
建立用於安裝的 OpenCost 命名空間。
kubectl create namespace opencost
OpenCost 會從
node.spec.providerID
讀取節點資訊,自動偵測 OCI 作為雲端服務提供者 (CSP)。當 OCI 偵測到為 CSP 時,OpenCost 會嘗試從 OCI 價目表 API 擷取訂價資料。擷取公用訂價資料不需要 API 金鑰。 -
將 OpenCost 安裝至 OpenCost 命名空間。
helm install opencost --repo https://opencost.github.io/opencost-helm-chart opencost --namespace opencost
-
更新 OpenCost。
helm upgrade opencost --repo https://opencost.github.io/opencost-helm-chart opencost --namespace opencost
-
請更新服務,讓外部 IP 位址指定給 OCI 負載平衡器。
kubectl patch svc opencost -n opencost -p '{"spec": {"type": "LoadBalancer"}}'
若要公開存取 OpenCost,我們需要建立一個網路安全群組 (NSG)、設定傳入規則以開啟所需的連接埠,以及將其與 OCI 負載平衡器建立關聯。
-
建立網路安全群組 (NSG)。請務必將
YOUR_COMPARTMENT_ID
取代為您的實際區間 ID,並將YOUR_VCN_ID
取代為您的 VCN ID。您可以從 OCI 主控台擷取此資訊。oci network nsg create --compartment-id [YOUR_COMPARTMENT_ID] --vcn-id [YOUR_VCN_ID] --display-name opencost_nsg
-
建立允許來自網際網路之連接埠
9090
的 TCP 流量的傳入規則。您可以從此處下載opencost-nsg-rule.json
檔案: opencost-nsg-rule.json 。oci network nsg rules add --nsg-id [YOUR_NSG_ID] --from-json file://opencost-nsg-rule.json
-
將新建立的網路安全群組 (NSG) 連附至 OCI 負載平衡器。將
YOUR_LB_ID
取代為您的負載平衡器 ID,並將YOUR_NSG_ID
取代為您的網路安全群組 ID。oci lb nsg update --load-balancer-id [YOUR_LB_ID] --nsg-ids '[ "[YOUR_NSG_ID]" ]'
-
擷取外部 IP 位址並使用它來使用 Web 瀏覽器存取 OpenCost。執行
kubectl get svc -n opencost
指令。若要熟悉 OpenCost UI,請參閱影片:瞭解 OpenCost 如何追蹤您的 Kubernetes 成本和雲端計費。
恭喜您!您已順利在您的 OKE 叢集上安裝並設定 OpenCost!
接下來的步驟
透過將 OpenCost 與您的 OKE 叢集整合並設定自訂定價,您可以精確掌握多租用戶的 SaaS 成本。ISV 現在可以公平且準確地分配成本,確保每個租戶的資源使用量反映在最終帳單中。
透過 OpenCost 的自訂定價功能,您可以確保成本預估與 OCI 的定價一致,這對於在多租用戶 SaaS 環境中維持獲利能力至關重要。
相關連結
認可
- 作者 - JP Santana,Master Cloud Architect
其他學習資源
探索 docs.oracle.com/learn 上的其他實驗室,或存取 Oracle Learning YouTube 頻道上的更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Manage Multi-Tenant SaaS Costs on OCI Kubernetes Engine with OpenCost
G17278-01
October 2024