はじめに
Google Cloudには、タグとラベルという概念があります。
タグは権限管理の機能で、ラベルはリソースの整理や請求管理の機能になります。
今回はラベルに絞った、特にプロジェクトに割り当てるラベル(プロジェクトレベルのラベル)の活用方法について調べたことをまとめます。
ラベルについて
ラベルとは、Google Cloudのリソースにkey:valueのメタデータを割り当てる機能です。割り当てたラベルによってリソースを整理することができます。
リソースを管理するチーム・所有者、プロダクト、環境など用途に応じた複数のkey:valueを設定しリソースを効率的に整理することができます。(リソースレベルのラベル。)
また、Billing機能でラベルごとにリソースを絞り込むことが可能です。
これを用いることで、例えば以下のように複数のプロダクト・チームが複数のプロジェクトを利用している場合、そのラベルごとにフィルタリングすることができます。
プロジェクトA
GCEインスタンス: リソース名 project-a-instance-01
- product: hoge
- team: apple
GCEインスタンス: リソース名 project-a-instance-02
- product: fuga
- team: apple
プロジェクトB
Cloud SQL: リソース名 project-b-db
- product: fuga
- team: apple
プロジェクトC
GCEインスタンス: リソース名 project-c-instance
- product: hoge
- team: melon
-
product:hoge
のラベルでフィルターした場合、プロジェクトAのGCEインスタンスと、プロジェクトCのGCEインスタンスのコストを取得することができます。 -
team:apple
のラベルでフィルターした場合、プロジェクトAのGCEインスタンスと、プロジェクトBのCloud SQLのコストを取得することができます。 - プロジェクトAに絞り込んだ状態で
product
でフィルターすることで、hogeプロダクトと、fugaプロダクトがプロジェクトA内でそれぞれコストをいくら使用しているか、ということを把握することができます。
プロジェクトのラベルについて
先ほど、「リソースに対してラベルを割り当てることができる」と記載しました。
リソースの他にも、Google Cloudプロジェクトに対してラベルを割り当てることができます。
設定方法
プロジェクトのIAMを開き、左メニューのラベルを選択し、ラベルの追加から可能です。
使用方法
プロジェクト一覧
主な使用方法は、プロジェクトの一覧でラベルで検索することが可能です。
Billingエクスポート
※Billingのエクスポート機能については説明を省略します。Appendixを参照ください。
標準的なBillingのエクスポートデータにはラベル(labels
)が含まれていますが、プロジェクトレベルのラベル(project.labels
)も含まれています。
これを用いることで、例えばプロジェクトに割り当てられているラベルごとにコストをグルーピングすることができます。
Billingコンソールでは、プロジェクトを任意に選択してコストをグルーピングすることができます。しかし、プログラムで実行しようとする場合は、プロジェクト名などを指定する必要があります。
また、プロジェクトの増減にも対応する必要があります。ラベルを設定する運用ができていると、このような運用の煩わしさを軽減することができます。
おわりに
Google Cloudでは、常に標準化したラベルを割り当てることをベストプラクティスとしています。基本的には使用するリソースすべてにラベルを割り当てることが望ましいです。
リソースレベルのラベルを割り当てることで様々なメリットを受けることができますが、他方で、既存のリソースにラベルをゼロから割り当てる際は、かなりの工数が発生します。その中でプロジェクトレベルのラベルはIAMコンソールから簡単に付与することが可能です。
Google Cloud全体でコスト可視化を考える際、プロジェクトの運用方法にもよりますが、プロジェクトレベルのラベルの割り当てで事足りるようなケースもあり得ます。
(1つのproductで完結する、1つのチームで完結する、など。)
このようなケースでBillingエクスポートデータからコストを集計する際は、プロジェクトレベルのラベルを使用することで集計が可能になります。可視化の第一歩として、プロジェクトレベルのラベル割り当てから検討するのも1つの手段かもしれません。
Appendix
タグとラベルの違いについて (Tags / Labels)
プロジェクトのラベルを作成、更新する
Cloud Billing データを BigQuery にエクスポートする