はじめに
この手順書について
この手順書は IBM Turbonomic から Google Cloud Platform(以下 GCP) を監視・制御するための設定方法をまとめたものです。
接続方式として、「組織(Organization)」単位で全体をまとめて管理する方式と、「プロジェクト(Project)」単位で個別に管理する方式があります。
今回の手順は:
プロジェクト単位での監視・制御設定(組織を持たない環境向け)を対象にしています。
本手順書の作成背景
IBM公式の手順書は「組織(Organization)」単位と「プロジェクト(Project)」単位の手順が混在しております為、こちらの手順では「プロジェクト(Project)」単位で設定するに場合に絞った部分のみを抜粋し記載しております。
また、こちらの手順では:
・最初に必要となる変数を全て定義
・設定する機能ごとに手順を分離(ワークロード監視・アクション実行・コスト取得)
・シンプルな流れに整理
を重視しています。
公式手順(参考):
https://www.ibm.com/docs/en/tarm/8.17.x?topic=cloud-adding-google-target
手順概要
今回の手順では、以下の手順でTurbonomic に対してワークロード監視・アクション実行(オプション)・コスト情報取得を可能にします。
- GoogleCloudで必要なAPIの有効化・ファイアウォールとプロキシアクセス構成
- 変数の設定(Billing Account ID の確認を含む)
- サービスアカウント作成とキー生成
- カスタムロール作成①(プロジェクトレベル監視用)
- カスタムロール作成②(プロジェクトレベル実行用・オプション)
- Billing Account Viewer 権限付与(コスト情報取得用)
- Turbonomic 側での設定
1. GoogleCloudで必要なAPIの有効化・ファイアウォールとプロキシアクセス構成
GoogleCloudで必要なAPIの有効化
以下のGoogleCloudで必要なAPIを有効化します。
- Cloud Resource Manager API
- Compute Engine API
- Cloud Billing API
- BigQuery API
ファイアウォールとプロキシアクセス構成
※SaaS版Turbonomicをご利用の場合は不要です。
下記のURLへのHTTPS通信を許可します。
- https://cloudresourcemanager.googleapis.com
- https://cloudbilling.googleapis.com
- https://compute.googleapis.com
- https://monitoring.googleapis.com
- https://bigquery.googleapis.com
- https://oauth2.googleapis.com
2. 変数の設定と Billing Account ID 確認
はじめに、GCP連携で必要な変数の設定をします。
# サービスアカウント名(6〜30文字)
export SERVICE_ACCOUNT_NAME="turbo-svcacct-0830"
# サービスアカウントを作成するプロジェクトID
export PROJECT_ID="myproject3000-0905"
# 監視対象のプロジェクトID(基本的に同じでOK)
export PROJECT_ID_MONITOR="myproject3000-0905"
# キーファイル名
export KEY_FILE_NAME="turbo-key-0830.json"
# カスタムロールID(監視用)
export ROLE_ID="turboRoleMonitor0830"
# カスタムロールID(実行用:オプション)
export ROLE_ID_ACTION="turboRoleAction0830"
# --- Billing Account ID の確認 ---
gcloud billing accounts list
# 出力結果から OPEN=True の ACCOUNT_ID を確認し、以下のように設定
export BILLING_ACCOUNT_ID="0100DB-4979BB-17C7E3"
3. サービスアカウント作成とキー生成
サービスアカウント作成
gcloud iam service-accounts create "${SERVICE_ACCOUNT_NAME}"
キーファイル生成
gcloud iam service-accounts keys create "${KEY_FILE_NAME}" \
--iam-account="${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com"
Cloud Shell からローカルにダウンロード
cloudshell download "${KEY_FILE_NAME}"
4. カスタムロール作成①(プロジェクトレベル監視用)
gcloud iam roles create "${ROLE_ID}" --project="${PROJECT_ID_MONITOR}" \
--title='Turbonomic Role: Min Access - Project' \
--description='Minimum permissions to monitor workloads in the project' \
--permissions="compute.autoscalers.list,\
compute.commitments.list,\
compute.disks.get,\
compute.disks.list,\
compute.diskTypes.list,\
compute.instances.get,\
compute.instances.list,\
compute.instanceGroupManagers.get,\
compute.instanceGroupManagers.list,\
compute.instanceGroups.get,\
compute.instanceGroups.list,\
compute.instanceTemplates.list,\
compute.machineTypes.get,\
compute.machineTypes.list,\
compute.regions.list,\
compute.zones.list,\
container.clusters.get,\
logging.logEntries.list,\
logging.views.get,\
logging.views.list,\
monitoring.services.get,\
monitoring.services.list,\
monitoring.timeSeries.list,\
resourcemanager.projects.get,\
serviceusage.services.get" --stage=ALPHA
サービスアカウントにロールを割り当て
gcloud projects add-iam-policy-binding "${PROJECT_ID_MONITOR}" \
--member="serviceAccount:${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role="projects/${PROJECT_ID_MONITOR}/roles/${ROLE_ID}"
5. カスタムロール作成②(プロジェクトレベル実行用・オプション)
※ Turbonomic からリサイズや起動停止などのアクションを実行したい場合に設定
gcloud iam roles create "${ROLE_ID_ACTION}" --project="${PROJECT_ID_MONITOR}" \
--title='Turbonomic Role: Project Action Execution' \
--description='Minimum permissions to execute actions in the project' \
--permissions="compute.disks.create,\
compute.disks.createSnapshot,\
compute.disks.delete,\
compute.disks.resize,\
compute.disks.setLabels,\
compute.disks.update,\
compute.disks.use,\
compute.disks.useReadOnly,\
compute.globalOperations.get,\
compute.instanceGroupManagers.update,\
compute.instanceGroups.get,\
compute.instanceGroups.list,\
compute.instanceGroups.use,\
compute.instances.attachDisk,\
compute.instances.detachDisk,\
compute.instances.setLabels,\
compute.instances.setMachineType,\
compute.instances.start,\
compute.instances.stop,\
compute.instances.useReadOnly,\
compute.instanceTemplates.list,\
compute.instantSnapshots.list,\
compute.regionOperations.get,\
compute.reservations.list,\
compute.resourcePolicies.use,\
compute.snapshots.create,\
compute.snapshots.delete,\
compute.snapshots.get,\
compute.snapshots.list,\
compute.snapshots.useReadOnly,\
compute.zoneOperations.get,\
container.clusters.update,\
iam.serviceAccounts.actAs" --stage=ALPHA
サービスアカウントにロールを割り当て
gcloud projects add-iam-policy-binding "${PROJECT_ID_MONITOR}" \
--member="serviceAccount:${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role="projects/${PROJECT_ID_MONITOR}/roles/${ROLE_ID_ACTION}"
6. Billing Account Viewer 権限付与(コスト情報取得用)
gcloud billing accounts add-iam-policy-binding "${BILLING_ACCOUNT_ID}" \
--member="serviceAccount:${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role="roles/billing.viewer"
7. Turbonomic 側での設定
- 上記で作成したキー(${KEY_FILE_NAME}) を Turbonomic UI から Google Cloud ターゲット追加時にアップロードします
- 「監視のみ」または「監視+アクション実行(オプション)」を選択可能です
Billing Account Viewer
以上です。
ここまでの設定で、Turbonomic から Google Cloud プロジェクトの監視やアクション実行、コスト情報の取得が可能になります。コストレポートの作成と登録については追って追記します。