注意:

使用 OpenCost 在 OCI Kubernetes Engine 上管理多租户 SaaS 成本

简介

在 Oracle Cloud Infrastructure (OCI) 上交付多租户软件即服务 (SaaS) 解决方案的独立软件供应商 (ISV) 经常面临在确保每个租户准确计费的同时高效管理成本的挑战。SaaS 提供商中常用的方法是在 Kubernetes 上运行租户的工作负载,利用 Kubernetes 名称空间在同一集群中逻辑地将它们分开。在 Oracle Cloud Infrastructure Kubernetes Engine(OCI Kubernetes Engine 或 OKE)上部署集群时,OCI 会为整个集群提供详细的成本数据。但是,它无法为单个 Kubernetes 组件(例如命名空间)提供细粒度的成本洞察,而命名空间对于跟踪和计费特定于租户的资源使用情况至关重要。

在本教程中,我们将介绍使用 OpenCost(一种开源成本监视工具)轻松部署的解决方案,该工具可以帮助在 OKE 上的多租户环境中跟踪和管理成本。

作为 ISV,您可能运行 SaaS 应用程序,其中多个租户在 OKE 集群中共享基础结构。挑战在于了解与每个租户的资源消耗相关的成本。了解这些成本对于准确分配费用并确保每个租户的公平计费至关重要。

如果您无法查看每个租户的资源使用情况,则很难:

OpenCost 是专为 Kubernetes 环境设计的开源成本监视和管理工具。它跟踪 OKE 集群的资源使用情况,并为 CPU、内存、存储和网络分配成本。通过 OpenCost,您可以基于 Kubernetes 名称空间轻松地将这些成本映射到租户,从而成为具有多租户 SaaS 应用的 ISV 的理想解决方案。

使用 OpenCost,可以执行以下操作:

目标

先决条件

在 OKE 群集上安装 OpenCost

  1. 为您的安装创建 OpenCost 名称空间。

    kubectl create namespace opencost
    

    OpenCost 将通过从 node.spec.providerID 读取节点信息来自动检测 OCI 作为云服务提供商 (Cloud Service Provider,CSP)。当 OCI 被检测为 CSP 时,OpenCost 会尝试从 OCI 价目表 API 检索定价数据。无需 API 密钥即可检索公共定价数据。

  2. 将 OpenCost 安装到 OpenCost 名称空间中。

    helm install opencost --repo https://opencost.github.io/opencost-helm-chart opencost --namespace opencost
    
  3. 更新 OpenCost。

    helm upgrade opencost --repo https://opencost.github.io/opencost-helm-chart opencost --namespace opencost
    
  4. 更新服务,以便将外部 IP 地址分配给 OCI 负载平衡器。

    kubectl patch svc opencost -n opencost -p '{"spec": {"type": "LoadBalancer"}}'
    

    要公开访问 OpenCost,我们需要创建网络安全组 (Network Security Group,NSG),配置入站规则以打开所需的端口,并将其与 OCI 负载平衡器关联。

  5. 创建网络安全组 (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
    
  6. 创建一个入站规则,以允许来自 Internet 的端口 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
    
  7. 将新创建的网络安全组 (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]" ]'
    

    将 NSG 附加到负载平衡器

  8. 检索外部 IP 地址并使用 Web 浏览器访问 OpenCost。运行 kubectl get svc -n opencost 命令。

    OpenCost 已在浏览器上打开

    要熟悉 OpenCost UI,请参阅视频:了解 OpenCost 如何跟踪您的 Kubernetes 成本和云计费

    祝贺您!已成功在 OKE 群集上安装并配置 OpenCost!

后续步骤

通过将 OpenCost 与 OKE 集群集成并配置自定义定价,您可以准确了解多租户 SaaS 成本。ISV 现在可以公平准确地分配成本,确保每个租户的资源使用情况都反映在最终账单中。

借助 OpenCost 的自定义定价功能,您可以确保成本估计与 OCI 的定价保持一致,这对于在多租户 SaaS 环境中保持盈利能力至关重要。

确认

更多学习资源

浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心