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

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. この画面で、請求書エクスポートの保存先 (プロジェクトと BigQuery データセット) を選択します。
注意

エクスポートを設定してから新しい請求データが反映されるまで、最大 48 時間かかる場合があります。

スムーズな実装を確実に行うため、Attribute は必要なセットアップとセンサー登録を自動化する Terraform モジュールを提供しています。詳細な Terraform ドキュメントとサンプルは、Terraform モジュール内の [README] を参照してください。

GCP Account Types

このモジュールは、GCP 組織プロジェクトおよびサブプロジェクトの両方へのインストールをサポートします。モジュールを実行する際は、account_type パラメータを使用して、GCP Organization の管理プロジェクトにデプロイするのか、センサーをインストールするサブプロジェクトにデプロイするのかを指定してください。

以下に注意してください。

  • サポートされる Terraform バージョンは 1.9 以上 です。
  • センサーをデプロイする必要がある場合は、各サブプロジェクトごとにモジュールをデプロイする必要があります。さらに、組織の Billing プロジェクトを使用している場合は、完全なコストの可視性を確保するために、Billing プロジェクトおよびそれに関連付けられたサブプロジェクトの両方にモジュールをデプロイする必要があります。
  • このモジュールは、コンピュートインフラストラクチャ上に 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 つの部分から構成されます。まず Terraform を実行して前提条件を作成します (サブアカウントごとに 1 回)。その後、各 GKE クラスタ上に Helm チャートを使用してセンサーをデプロイします。

Step 2.1 — Terraform Prerequisite Setup (Member Account)

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

  1. Attribute から受け取った main.tf ファイルを、メンバーアカウントを反映するように更新します。

    1. Terraform プロファイルを更新し、正しい GCP プロジェクトを指すようにします。
    2. サブアカウントのエイリアスを持つ追加の provider のコメントを解除します (必要に応じて複数のサブアカウント provider を使用できます)。
    3. サブアカウントのモジュールのコメントを解除し、"my-sub-account-1234" となっているプロジェクト名を自身のプロジェクト名に変更し、合わせて region 情報も更新します。
    4. organization_idtoken は変更しないでください。受け取った値のままにします。
    5. Billing 情報が保持されていることを確認し、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. Helm のバージョンを確認します。サポートされるバージョンは 3.8.0 以上です。

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

    helm upgrade -i attribute \
    oci://quay.io/attribute/operator-chart \
    -f <values.yaml> \
    -n attribute \
    --create-namespace
  4. 検証。 以下を実行して、Helm リリース、および operator とセンサーが実行中であることを確認します。

    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 の登録商標です。その他すべての商標は、それぞれの所有者に帰属します。