メインコンテンツへスキップ

Attribute GCP TF Deployment

Attribute は、リソースレベルから機能・アプリケーション・チーム・顧客レベルまで、コストのアトリビューションと責任範囲を把握できる、クラウドコストに関する包括的なプラットフォームを提供します。

これを実現するために、Attribute には複数レベルでのアクセスが必要です。

  • 請求情報へのアクセス
  • リソース利用状況の情報を取得するための Attribute センサー実装

以下に、インストール完了のために必要な詳細な手順と権限を示します。

注意

クラウド実装によっては、特定のリソースに追加の権限が必要になる場合があります。

Billing Export Data

Attribute は、組織の最新の請求および使用状況情報を読み込むために、GCP の詳細な Billing Export を利用します。以下の手順で Billing Export を設定してください。

  1. コンソールのナビゲーションパネルで Billing を選択し、請求ダッシュボードにアクセスします。
  2. (任意)複数の請求アカウントがあり "You have multiple billing accounts" というメッセージが表示される場合は、GO TO LINKED BILLING ACCOUNT をクリックします。
  3. サイドパネルで Billing export に移動し、Detailed usage cost セクションを見つけて EDIT SETTINGS をクリックします。
  4. この画面で、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 に進んでください。

  1. コンソールのナビゲーションパネルで Billing を選択し、請求ダッシュボードにアクセスします。複数の請求アカウントがあり "You have multiple billing accounts" というメッセージが表示される場合は、GO TO LINKED BILLING ACCOUNT をクリックします。
  2. サイドパネルで Billing export に移動し、Detailed usage cost セクションを見つけて EDIT SETTINGS をクリックします。
  3. Billing Export を保存する場所(プロジェクトと BigQuery データセット)を選択します。
注意

新しい請求データが表示されるまでに、最大 48 時間かかる場合があります。

1.2 Running the Terraform for Billing Integration

以下の手順は、管理(支払い元)アカウントでのみ実行してください。

  1. Terraform のバージョンが 1.9 以上であることを確認します。

    terraform version
  2. Attribute から受け取った main.tf ファイル内の変数を次のとおり更新します。

    1. 使用している Terraform プロファイルを更新し、正しい GCP アカウントを指すようにします。
    2. projectregion の情報を更新します。
    3. エイリアスが "management" に設定されていることを確認します。
    4. organization_idtoken は変更しないでください。そのままにします。
    5. billing_export_dataset_name を更新します。
    6. 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
    # }
    # }
  3. Terraform を適用します。

    terraform init
    terraform apply

Step 2 — Sensor Implementation

センサーをデプロイする予定の各プロジェクト(サブアカウント)を設定します。これは 2 つのパートからなります。サブアカウントごとに 1 回実行する Terraform による前提条件の作成と、その後、各 GKE クラスタに Helm チャートを使用してセンサーをデプロイするパートです。

Step 2.1 — Terraform Prerequisite Setup (Member Account)

以下の手順は、プロジェクト(サブアカウント)ごとに 1 回実行してください。

  1. Attribute から受け取った main.tf ファイルを、メンバーアカウントに合わせて更新します。

    1. Terraform プロファイルを更新し、正しい GCP プロジェクトを指すようにします。
    2. サブアカウント用の追加プロバイダのコメントアウトを解除し、そのエイリアスを使用します(必要に応じて複数のサブアカウントプロバイダを定義できます)。
    3. サブアカウントモジュールのコメントアウトを解除し、プロジェクト名を "my-sub-account-1234" から実際のプロジェクト名に変更し、あわせて region 情報を更新します。
    4. organization_idtoken は変更しないでください。そのままにします。
    5. 請求情報が保持されていることを確認し、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_info

    providers = {
    google = google.sub1
    }
    }
  2. Terraform を適用します。

    terraform apply

Step 2.2 — Deploying the Sensor with Helm on GKE

以下の手順は、センサーをデプロイしたいすべての GKE クラスタで繰り返し実行してください。

  1. Attribute から提供された values ファイル(values.yaml)を保存します。このファイルには一意のエフェメラルトークンが含まれています。

  2. values ファイル内の Java インストルメンテーション設定を確認します。デフォルトで、ファイルには次のフラグが含まれています。

    # Java instrumentation settings
    sensorDisableAutoJavaInstrumentation: true
    javaAutoInject:
    enabled: true

    この構成は、Kubernetes 1.28 以上でサポートされています。インジェクションバックエンドは自動的に選択されるため、バージョン固有の調整は不要です。

    センサーの動的な Java インストルメンテーションを、admission-time injection の代わりに使用する場合は、javaAutoInject.enabledfalse に設定し、かつ sensorDisableAutoJavaInstrumentationfalse に設定してください。これら 2 つが同時に有効になることがないようにしてください。両モードの詳細な説明については、Attribute Java Instrumentation Guide を参照してください。

  3. Helm のバージョンを確認します。サポートされているのは 3.8.0 以上のバージョンです。

    helm version
  4. Helm チャートをインストールします。

    helm upgrade -i attribute \
    oci://quay.io/attribute/operator-chart \
    -f <values.yaml> \
    -n attribute \
    --create-namespace
  5. 検証。次のコマンドを実行し、Helm リリースおよび operator と sensor が稼働していることを確認します。

    helm list -n attribute
    kubectl get pods -n attribute

    期待される出力例:

    Terminal output of helm list -n attribute showing the attribute release deployed with the operator-chart

    Terminal output of kubectl get pods -n attribute showing five attribute pods all in Running state with READY 1/1

注意

他のコンピュートリソースタイプ(たとえばスタンドアロン)にセンサーをデプロイしたい場合は、該当するセンサーデプロイメントドキュメントを参照してください。


商標: Google Cloud は Google LLC の商標です。Terraform は HashiCorp, Inc. の登録商標です。Kubernetes は The Linux Foundation の登録商標です。その他の商標は、各所有者に帰属します。