Attribute GCP TF Deployment
Attribute は、リソースレベルから機能・アプリケーション・チーム・顧客レベルまで、コストのアトリビューションと責任範囲を把握できる、クラウドコストに関する包括的なプラットフォームを提供します。
これを実現するために、Attribute には複数レベルでのアクセスが必要です。
- 請求情報へのアクセス
- リソース利用状況の情報を取得するための Attribute センサー実装
以下に、インストール完了のために必要な詳細な手順と権限を示します。
クラウド実装によっては、特定のリソースに追加の権限が必要になる場合があります。
Billing Export Data
Attribute は、組織の最新の請求および使用状況情報を読み込むために、GCP の詳細な Billing Export を利用します。以下の手順で Billing Export を設定してください。
- コンソールのナビゲーションパネルで Billing を選択し、請求ダッシュボードにアクセスします。
- (任意)複数の請求アカウントがあり "You have multiple billing accounts" というメッセージが表示される場合は、GO TO LINKED BILLING ACCOUNT をクリックします。
- サイドパネルで Billing export に移動し、Detailed usage cost セクションを見つけて EDIT SETTINGS をクリックします。
- この画面で、Billing Export を保存する場所(プロジェクトと BigQuery データセット)を選択します。
エクスポートを設定してから、新しい請求データが表示されるまで最大 48 時間かかる場合があります。
スムーズな実装を実現するために、Attribute では、必要なセットアップとセンサー登録を自動化する Terraform モジュールを提供しています。詳細な Terraform ドキュメントとサンプルは、Terraform モジュール内の [README] を参照してください。
GCP Account Types
このモジュールは、GCP の組織プロジェクトとサブプロジェクトの両方へのインストールをサポートします。モジュールを実行する際は、account_type パラメータを使用して、GCP Organization の管理プロジェクトにデプロイするのか、センサーをインストールするサブプロジェクトにデプロイするのかを指定してください。
以下の点に注意してください。
- サポートされている Terraform のバージョンは 1.9 以上 です。
- センサーをデプロイする必要がある場合、そのサブプロジェクトごとにモジュールをデプロイする必要があります。さら に、組織の請求プロジェクトを利用している場合は、すべてのコストの可視性を確保するために、請求プロジェクトと関連するサブプロジェクトの両方にモジュールをデプロイする必要があります。
- このモジュールは、コンピュートインフラストラクチャ上に Attribute センサーをデプロイしません。そのプロセスは、各コンピュートクラスタごとに別のツールで実行します(詳細は Attribute のインストールガイドを参照してください)。
Resources Created by This Module
GCP の組織管理アカウントで実行した場合、以下のリソースが作成されます。
- 請求データへの安全なアクセスを可能にするサービスアカウント
- Billing Export データセットに対する BigQuery Data Viewer 権限
GCP のサブプロジェクトで実行した場合、以下のリソースが作成されます。
- 請求データへの安全なアクセスを可能にするサービスアカウント
センサーの登録プロセスは、このモジュール内で完全に自動化されています。詳細は、モジュールの README を参照してください。
Appendix A: Detailed Installation Instructions
この付録では、管理アカウントの設定からメンバーアカウントへのセンサーデプロイまで、セットアッププロセス全体を順を追って説明します。
Step 1 — Billing Integration
1.1 Creating Billing Export Data
ここで行う Billing Export の設定は、前述したものと同じです。すでにエクスポートを設定済みの場合は、ステップ 1.2 に進んでください。
- コンソールのナビゲーションパネルで Billing を選択し、請求ダッシュボードにアクセスします。複数の請求アカウントがあり "You have multiple billing accounts" というメッセージが表示される場合は、GO TO LINKED BILLING ACCOUNT をクリックします。
- サイドパネルで Billing export に移動し、Detailed usage cost セクションを見つけて EDIT SETTINGS をクリックします。
- Billing Export を保存する場所(プロジェクトと BigQuery データセット)を選択します。
新しい請求データが表示されるまでに、最大 48 時間かかる場合があります。
1.2 Running the Terraform for Billing Integration
以下の手順は、管理(支払い元)アカウントでのみ実行してください。
-
Terraform のバージョンが 1.9 以上であることを確認します。
terraform version -
Attribute から受け取った
main.tfファイル内の変数を次のとおり更新します。- 使用して いる Terraform プロファイルを更新し、正しい GCP アカウントを指すようにします。
projectとregionの情報を更新します。- エイリアスが
"management"に設定されていることを確認します。 organization_idとtokenは変更しないでください。そのままにします。billing_export_dataset_nameを更新します。billing_export_table_nameを更新します。
terraform {required_providers {google = {source = "hashicorp/google"version = ">= 6.0, <7.0"}}}provider "google" {project = "my-main-1234"region = "us-central1"alias = "management"}# provider "google" {# project = "my-sub-account-1234"# region = "us-central1"# alias = "sub1"# }module "attribute_management" {source = "ZouzIO/attribute-sensor/gcp"version = "~> 3.0"token = "XXXXXXXXXXXXXXXXXX"organization_id = "XXXXXXXXXXXXXXXXXXXXX"account_type = "management"billing_export_dataset_name = "your_billing_export_dataset_name"billing_export_table_name = "your_billing_export_table_name"providers = {google = google.management}}# module "attribute_sub1" {# source = "ZouzIO/attribute-sensor/gcp"# version = "~> 3.0"## token = "XXXXXXXXXXXXXXXXXXXXX"# organization_id = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"# account_type = "sub"# billing_info = module.attribute_management.billing_info## providers = {# google = google.sub1# }# } -
Terraform を適用します。
terraform initterraform apply
Step 2 — Sensor Implementation
センサーをデプロイする予定の各プロジェクト(サブアカウント)を設定します。これは 2 つのパートからなります。サブアカウントごとに 1 回実行する Terraform による前提条件の作成と、その後、各 GKE クラスタに Helm チャートを使用してセンサーをデプロイす るパートです。
Step 2.1 — Terraform Prerequisite Setup (Member Account)
以下の手順は、プロジェクト(サブアカウント)ごとに 1 回実行してください。
-
Attribute から受け取った
main.tfファイルを、メンバーアカウントに合わせて更新します。- Terraform プロファイルを更新し、正しい GCP プロジェクトを指すようにします。
- サブアカウント用の追加プロバイダのコメントアウトを解除し、そのエイリアスを使用します(必要に応じて複数のサブアカウントプロバイダを定義できます)。
- サブアカウントモジュールのコメントアウトを解除し、プロジェクト名を
"my-sub-account-1234"から実際のプロジェクト名に変更し、あわせて region 情報を更新します。 organization_idとtokenは変更しないでください。そのままにします。- 請求情報が保持されていることを確認し、
billing_infoデータを削除しないでください。
terraform {required_providers {google = {source = "hashicorp/google"version = ">= 5.0, < 8.0"}}}provider "google" {project = "my-main-1234"region = "us-central1"alias = "management"}provider "google" {project = "my-sub-account-1234"region = "us-central1"alias = "sub1"}module "attribute_management" {source = "ZouzIO/attribute-sensor/gcp"version = "~> 3.0"token = "XXXXXXXXXXXXXXXXXXXXX"organization_id = "XXXXXXXXXXXXXXXXXXXXXXXXXX"account_type = "management"billing_export_dataset_name = "your_billing_export_dataset_name"billing_export_table_name = "your_billing_export_table_name"providers = {google = google.management}}module "attribute_sub1" {source = "ZouzIO/attribute-sensor/gcp"version = "~> 3.0"token = "XXXXXXXXXXXXXXXXXXXX"organization_id = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"account_type = "sub"billing_info = module.attribute_management.billing_infoproviders = {google = google.sub1}} -
Terraform を適用します。
terraform apply
Step 2.2 — Deploying the Sensor with Helm on GKE
以下の手順は、センサーをデプロイしたいすべての GKE クラスタで繰り返し実行してください。
-
Attribute から提供された values ファイル(
values.yaml)を保存します。このファイルには一意のエフェメラルトークンが含まれています。 -
values ファイル内の Java インストルメンテーション設定を確認します。デフォルトで、ファイルには次のフラグが含まれています。
# Java instrumentation settingssensorDisableAutoJavaInstrumentation: truejavaAutoInject:enabled: trueこの構成は、Kubernetes 1.28 以上でサポートされています。インジェクションバックエンドは自動的に選択されるため、バージョン固有の調整は不要です。
センサーの動的な Java インストルメンテーションを、admission-time injection の代わりに使用する場合は、
javaAutoInject.enabledをfalseに設定し、かつsensorDisableAutoJavaInstrumentationをfalseに設定してください。これら 2 つが同時に有効になることがないようにしてください。両モードの詳細な説明については、Attribute Java Instrumentation Guide を参照してください。 -
Helm のバージョンを確認します。サポートされているのは 3.8.0 以上のバージョンです。
helm version -
Helm チャートをインストールします。
helm upgrade -i attribute \oci://quay.io/attribute/operator-chart \-f <values.yaml> \-n attribute \--create-namespace -
検証。次のコマンドを実行し、Helm リリースおよび operator と sensor が稼働していることを確認します。
helm list -n attributekubectl get pods -n attribute期待される出力例:


他のコンピュートリソースタイプ(たとえばスタンドアロン)にセンサーをデプロイしたい場合は、該当するセンサーデプロイメントドキュメントを参照してください。
商標: Google Cloud は Google LLC の商標です。Terraform は HashiCorp, Inc. の登録商標です。Kubernetes は The Linux Foundation の登録商標です。その他の商標は、各所有者に帰属します。