ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了するときに、これらの値をクラウド環境に固有の値に置き換えます。
OpenCostを使用したOCI Kubernetes EngineでのマルチテナントSaaSコストの管理
イントロダクション
Oracle Cloud Infrastructure(OCI)にマルチテナントSoftware as a Service(SaaS)ソリューションを提供する独立系ソフトウェア・ベンダー(ISV)は、多くの場合、テナントごとに正確な請求を確保しながら、コストを効率的に管理するという課題に直面します。SaaSプロバイダの一般的なアプローチは、Kubernetesネームスペースを使用してテナントのワークロードをKubernetesで実行し、同じクラスタ内でそれらを論理的に分離することです。Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes EngineまたはOKE)にクラスタをデプロイする場合、OCIはクラスタ全体の詳細なコスト・データを提供します。ただし、ネームスペースなどの個々のKubernetesコンポーネントに詳細なコスト・インサイトを提供することはできません。これは、テナント固有のリソース使用状況の追跡と請求に不可欠です。
このチュートリアルでは、OKEのマルチテナント環境でのコストの追跡および管理に役立つオープンソースのコスト監視ツールであるOpenCostを使用して、簡単にデプロイできるソリューションについて説明します。
ISVは、複数のテナントがOKEクラスタ内のインフラストラクチャを共有するSaaSアプリケーションを実行している可能性があります。課題は、各テナントのリソース消費に関連するコストを可視化することです。経費を正確に配賦し、テナントごとに公平な請求を行うためには、これらのコストを理解することが不可欠です。
テナントごとのリソース使用量を表示できない場合、次のことが困難になります。
- テナントにKubernetesリソースの使用量を正確に請求します。
- リソースを最適化して、過剰なプロビジョニングを回避します。
- コストを管理し、SaaSビジネスの収益性を確保します。
OpenCostは、Kubernetes環境専用に設計されたオープンソースのコスト監視および管理ツールです。OKEクラスタのリソース使用量を追跡し、CPU、メモリー、ストレージおよびネットワークのコストを割り当てます。OpenCostを使用すると、Kubernetesネームスペースに基づいてこれらのコストをテナントに簡単にマップできるため、マルチテナントのSaaSアプリケーションを持つISVにとって理想的なソリューションとなります。
OpenCostでは、次のことができます。
- 個々のテナントの使用状況を追跡するために、ネームスペース(またはその他のKubernetesコンポーネント)ごとにコストを割り当てます。
- 指定した期間におけるテナント当たりのリソース消費を追跡および分析します。
- テナント環境を最適化して、リソースを効率的に使用できるようにします。
目的
- OpenCostを使用して、OKEでマルチテナントのSaaSコストを管理します。
前提条件
-
OCIのアクティブなOKEクラスタ。
-
OKEクラスタにアクセスするようにインストールおよび構成されたkubectl。
-
Kubernetesパッケージを管理するためにインストールされたHelm。
-
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環境で収益性を維持するために重要です。
関連リンク
承認
- 著者 - Master Cloud Architect、JP Santana
その他の学習リソース
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
G17277-01
October 2024