License Service
IBM Software Hub使用環境においては、License Serviceを使用してライセンス使用量の記録を保管する必要があります。この記事では、License Serviceが担う次の一連の機能を解剖します。
- ライセンス使用量の収集
- ライセンス使用量の評価
- ライセンス使用量の提供
License Service の情報源
License Serviceは次の情報に基づいて一連のライセンス管理を行います。
Pod (annotations)
- すべての Pod は、インスタンス固有の
cloudpakInstanceIdを持っています。License Serviceはこのインスタンス単位でライセンス使用量を取りまとめます。 - License Service は annotations から、製品側で決められたその製品のメトリックを表す
productMetricを参照します。
apply-entitlement
apply-entitlementを実行することにより、License Serviceが評価するための「解釈ルール」が登録されます。
- apply-entitlement は、製品(例:cpd-enterprise や watsonx-code-assistant)を指定してエンタイトルメントを適用することで、その製品に応じたIBMLicensingDefinition という Custom Resource (CR) を作成します。この CR が、License Service に対して「この Cloud Pak インスタンスにおいて、どの製品をライセンス対象として解釈してよいか」という「解釈ルール」となります。
1. ライセンス使用量の収集
License Serviceがライセンス使用量を収集する方法は、メトリック (productMetric) によって違います。
- Virtual Processor Core (VPC) と Processor Value Unit (PVU) の使用量: License Service が Pod をスキャンして自動収集します(pull)
- その他のメトリックを使用する製品の使用量: 各製品が使用量を License Service に提供します(push)
- Pod を見るだけでは License Service はわからない
- 製品側のmeteringの仕組み (wCAの場合、wca-metering CronJob) を使って REST API で送信して初めて License Service に反映される
2. ライセンス使用量の評価
License Serviceは、収集した使用量を次の情報を使って評価します。
- 製品Pod の annotations
- IBMLicensingDefinition CR (apply-entitlementを実行することにより作成された)
具体的には、License Serviceは Pod と IBMLicensingDefinition CR とを以下の共通フィールドで紐づけて、収集した使用量データを評価します。
- cloudpakInstanceId
- cpdsupport/addOnId
3. ライセンス使用量の提供
License Serviceは評価されたライセンス使用量を提供します。ライセンス使用量は、主に次の2つから参照できます。それぞれが対象とするものに違いがあることに注意が必要です。
- Statusページ
- Audit snapshot
それぞれが対象とする条件は次のとおりです:
| Statusページ | Audit snapshot | |
|---|---|---|
| 使用量 (usage) | 0より大きい | 0より大きい |
| 含まれるメトリック (productMetric) | VPC、PVUのみ | すべて |
| IBMLicensingDefinitionでproductMetric=FREEの場合 | 含まれない |
|
(*1) Statusページでは productMetric の設定が即座に表示に反映される(productMetric=FREE になった直後から表示されなくなる)。一方、Audit snapshotのdailyレポートでは、対象日終日 productMetric=FREE であればその日の使用量は記録されないが、一部の時間帯でも productMetric=FREE でない場合はその日の使用量が記録される。
参考: トラブルシューティングに役立つコマンド
適用済みエンタイトルメントの確認
oc get cm cpd-applied-entitlements -n ${PROJECT_CPD_INST_OPERANDS} -o yaml
IBMLicensingDefinition CRの確認
(その後、リストされたCRについてdescribeして定義を確認する。)
oc get ibmlicensingdefinitions -n ${PROJECT_CPD_INST_OPERANDS}
License Serviceそのもの
oc logs -n ibm-licensing deploy/ibm-licensing-operator
oc logs -n ibm-licensing deploy/ibm-licensing-service-instance
補足: apply-entitlementに関する注意点
- apply-entitlement は Pod の annotations を直接変更したり、実行中のワークロードに影響を与えたりすることはありません。
- apply-entitlement 実行時点で、--entitlementで指定する製品がインストールされている / いない は結果に影響しません。
- apply-entitlement を再実行しても、ライセンス使用量がリセットされたり、課金状態が即座に変わったりすることはありません。あくまで License Service が評価を行う際の「解釈ルール」を登録するだけの役割です。
参照リンク
