Google Cloud CLI@Google Cloudリソース¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
01. 設定ファイル¶
Configuration¶
現在の認証情報を設定する。
$ cat /root/.config/gcloud/configurations/config_<プロジェクト名>
[core]
account = example@gmail.com
project = foo-project
ログファイル¶
gcloud
コマンドのログを出力する。
gcloud
コマンドはわかりにくいエラーを出力することがあり、足がかりを掴めることがある。
$ cat /root/.config/gcloud/logs/<タイムスタンプ>/<タイムスタンプ>.log
2023-06-26 06:23:43,998 DEBUG root Loaded Command Group: ['gcloud', 'auth']
2023-06-26 06:23:44,000 DEBUG root Loaded Command Group: ['gcloud', 'auth', 'activate_service_account']
2023-06-26 06:23:44,003 DEBUG root Running [gcloud.auth.activate-service-account] with arguments: [--key-file: "foo-credential.json", ACCOUNT: "foo-serviceaccount@foo-project.iam.gserviceaccount.com"]
2023-06-26 06:23:44,003 DEBUG root 'str' object has no attribute 'get'
# エラーがあれば
Traceback (most recent call last):
...
02. Google Cloud CLIのセットアップ¶
auth¶
▼ authとは¶
プリンシパル (例:ユーザー、サービスアカウント、グループ、ドメイン、KubernetesのServiceAccount) の認証を行う。
▼ activate-service-account¶
認証情報ファイルを使用して、ServiceAccountにログインする。
認証情報ファイルは使用後に削除した方が良いらしい。
$ gcloud auth activate-service-account foo-service-account@foo-project.iam.gserviceaccount.com \
--key-file foo1-credentials.json
$ gcloud auth list
Credentialed Accounts
ACTIVE ACCOUNT
foo1-serviceaccount@foo-project.iam.gserviceaccount.com
* foo2-serviceaccount@foo-project.iam.gserviceaccount.com
$ gcloud auth activate-service-account bar-service-account@bar-project.iam.gserviceaccount.com \
--key-file bar-credentials.json \
--project bar-project
$ gcloud auth list
Credentialed Accounts
ACTIVE ACCOUNT
foo1-serviceaccount@foo-project.iam.gserviceaccount.com
foo2-serviceaccount@foo-project.iam.gserviceaccount.com
* bar-serviceaccount@bar-project.iam.gserviceaccount.com
▼ application-default login¶
Google Cloud CLIによるGoogle Cloudリソースへのアクセスを認証するために使用する。
~/.config/gcloud/application_default_credentials.json
ファイルを作成し、認証情報を定義する。
また、これ使用してGoogle Cloudにログインする。
~/.config/gcloud/application_default_credentials.json
ファイルは1
個のプリンシパルの認証情報しか持てないため、プリンシパルを切り替える場合はファイルを再作成する必要がある。
$ gcloud auth application-default login
# application_default_credentials.jsonファイル
{
"client_id": "***.apps.googleusercontent.com",
"client_secret": "***",
"quota_project_id": "***",
"refresh_token": "***",
"type": "authorized_user",
}
▼ list¶
切り替え可能なプリンシパルの一覧を取得する。
$ gcloud auth list
Credentialed Accounts
ACTIVE ACCOUNT
example1@gmail.com
* example2@gmail.com
▼ login¶
IAMユーザーを認証する。
Google Cloud SDKによるGoogle Cloudリソースへのアクセスを認証するために使用する。
$ gcloud auth login
▼ login --update-adc¶
gcloud auth application-default login
コマンドとgcloud auth login
コマンドを同時に実行する。
これにより、Google Cloud CLIのための認証情報 (~/.config/gcloud/application_default_credentials.json
ファイル) とGoogle Cloud SDKのための認証情報が更新される。
$ gcloud auth login --update-adc
▼ print-access-token¶
認証のトークンを取得する。
$ gcloud auth print-access-token
環境変数に設定して使用すると良い。
$ export Google Cloud_AUTH_TOKEN=`gcloud auth print-access-token`
▼ revoke¶
Configurationに設定されているプリンシパルを削除する。
$ gcloud auth list
Credentialed Accounts
ACTIVE ACCOUNT
foo1-serviceaccount@foo-project.iam.gserviceaccount.com
foo2-serviceaccount@foo-project.iam.gserviceaccount.com
* bar-serviceaccount@bar-project.iam.gserviceaccount.com
# foo2-serviceaccount@foo-project.iam.gserviceaccount.com を削除する
$ gcloud auth revoke foo2-serviceaccount@foo-project.iam.gserviceaccount.com
component¶
▼ componentとは¶
gcloud
コマンドのコンポーネントを管理する。
▼ install¶
gcloud
コマンドのコンポーネントをインストールする。
$ gcloud components install
別途、コンポーネントを読み込む必要がある。
$ brew info google-cloud-sdk
To add gcloud components to your PATH, add this to your profile:
for bash users
source "$(brew --prefix)/share/google-cloud-sdk/path.bash.inc"
for zsh users
source "$(brew --prefix)/share/google-cloud-sdk/path.zsh.inc"
source "$(brew --prefix)/share/google-cloud-sdk/completion.zsh.inc"
for fish users
source "$(brew --prefix)/share/google-cloud-sdk/path.fish.inc"
▼ update¶
gcloud
コマンドのコンポーネントをアップグレードする。
$ gcloud components update
▼ list¶
gcloud
コマンドのコンポーネントの一覧を取得する。
$ gcloud components list
Your current Google Cloud CLI version is: 386.0.0
The latest available version is: 400.0.0
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Components │
├──────────────────┬──────────────────────────────────────────────────────┬──────────────────────────┬──────────┤
│ Status │ Name │ ID │ Size │
├──────────────────┼──────────────────────────────────────────────────────┼──────────────────────────┼──────────┤
│ Update Available │ BigQuery Command Line Tool │ bq │ 1.6 MiB │
│ Update Available │ Cloud Storage Command Line Tool │ gsutil │ 15.5 MiB │
...
│ Not Installed │ kubectl-oidc │ kubectl-oidc │ 18.2 MiB │
│ Not Installed │ pkg │ pkg │ │
└──────────────────┴──────────────────────────────────────────────────────┴──────────────────────────┴──────────┘
config configuration¶
▼ config configurationとは¶
gcloud
コマンドのConfigurationを操作する。
▼ activate¶
複数のConfigurationがある場合に、これらを切り替える。
# fooというConfigurationに切り替える
$ gcloud config configurations activate foo
Activated [foo].
▼ create¶
Configurationを新しく作成する。
# barというConfigurationを新しく作成する
$ gcloud config configurations create bar
Created [bar].
Activated [bar].
# barというConfigurationに新しい作成されたことを確認できる
$ gcloud config configurations list
NAME IS_ACTIVE ACCOUNT PROJECT COMPUTE_DEFAULT_ZONE COMPUTE_DEFAULT_REGION
foo False example@gmail.com foo-project
bar True
▼ list¶
全てのConfigurationと、アクティブプリンシパルとを一覧で取得する。
$ gcloud config configurations list
NAME IS_ACTIVE ACCOUNT PROJECT COMPUTE_DEFAULT_ZONE COMPUTE_DEFAULT_REGION
foo False example@gmail.com foo-project
bar True example@gmail.com bar-project
▼ rename¶
現在、非アクティブになっているConfigurationの特定の名前を変更する。
# barというConfigurationをアクティブにする
$ gcloud config configurations activate bar
# fooというConfigurationが非アクティブになっていることを確認する
$ gcloud config configurations list
NAME IS_ACTIVE ACCOUNT PROJECT COMPUTE_DEFAULT_ZONE COMPUTE_DEFAULT_REGION
foo False example@gmail.com foo-project asia-northeast1-a
bar True example@gmail.com bar-project asia-northeast1-a
# fooというConfigurationの名前をfoo-fooに変更する
$ gcloud config configurations rename foo --new-name=foo-foo
# Configurationの名前が変わっている
NAME IS_ACTIVE ACCOUNT PROJECT COMPUTE_DEFAULT_ZONE COMPUTE_DEFAULT_REGION
foo-foo False example@gmail.com foo-project asia-northeast1-a
bar True example@gmail.com bar-project asia-northeast1-a
# Configurationを切り替える
$ gcloud config configurations activate foo-foo
config list¶
▼ list¶
現在のログインしているプリンシパルの認証情報を取得する。
*実行例*
$ gcloud config list
[core]
account = example@gmail.com
disable_usage_reporting = True
project = foo-project
# 現在アクティブになっているConfiguration
Your active configuration is: [foo]
config set¶
▼ set¶
認証の特定の項目のデフォルト値を設定する。
*実行例*
# Configurationを新しく作成する
$ gcloud config configurations create foo
# アクティブなConfiguration上にプリンシパルを設定する。
$ gcloud config set core/account example@gmail.com
Updated property [core/project].
# アクティブなConfiguration上にプロジェクト名を設定する
$ gcloud config set core/project foo-project
Updated property [core/project].
# アクティブなConfiguration上にリージョンを設定する。
$ gcloud config set compute/region asia-northeast1-a
WARNING: Property validation for compute/region was skipped.
Updated property [compute/region].
# アクティブなConfigurationに一通り値が設定されたことを確認する。
$ gcloud config configurations list
NAME IS_ACTIVE ACCOUNT PROJECT COMPUTE_DEFAULT_ZONE COMPUTE_DEFAULT_REGION
foo False example@gmail.com foo-project asia-northeast1-a
bar True example@gmail.com bar-project asia-northeast1-a
container clusters¶
▼ container clustersとは¶
▼ list¶
GKE Clusterの一覧を取得する。
*実行例*
$ gcloud container clusters list
NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS
foo-gke-cluster asia-northeast1 1.22.0-gke *.*.*.* e2-medium 1.22.0-gke 3 RUNNING
container node-pools¶
▼ container node-poolsとは¶
記入中...
▼ describe¶
GKE Node Poolの情報を取得する。
アップグレードの手法を確認することもできる。
*実行例*
$ gcloud container node-pools describe foo-node-pool --cluster=foo-anthos-cluster
...
upgradeSettings:
blueGreenSettings:
nodePoolSoakDuration: 1800s
standardRolloutPolicy:
batchNodeCount: 1
batchSoakDuration: 10s
strategy: BLUE_GREEN # ブルー/グリーンアップグレード
▼ update¶
GKE Node Poolの設定を変更する。
*実行例*
ローリング方式 (サージ方式) のアップグレードを有効化する。
$ gcloud container node-pools update foo-node-pool \
--cluster=foo-anthos-cluster \
--enable-surge-upgrade
ローリング方式時に新しく追加できる最大インスタンス数と、削除できる最大インスタンス数を設定する。
$ gcloud container node-pools update foo-node-pool \
--cluster=foo-anthos-cluster \
--max-surge-upgrade=2 \
--max-unavailable-upgrade=1
init¶
▼ initとは¶
認証時のデフォルト値を対話方式で設定する。
*実行例*
$ gcloud init
Welcome! This command will take you through the configuration of gcloud.
Settings from your current configuration [default] are:
core:
account: hiroki.hasegawa
disable_usage_reporting: 'True'
project: foo-project
Pick configuration to use:
[1] Re-initialize this configuration [default] with new settings
[2] Create a new configuration
Please enter your numeric choice: 1 # 再設定か新しいプリンシパルの設定かを選択する。
Your current configuration has been set to: [default]
You can skip diagnostics next time by using the following flag:
gcloud init --skip-diagnostics
Network diagnostic detects and fixes local network connection issues.
Checking network connection...done.
Reachability Check passed.
Network diagnostic passed (1/1 checks passed).
Choose the account you would like to use to perform operations for this configuration:
[1] hiroki.hasegawa
[2] Log in with a new account
Please enter your numeric choice: 1 # デフォルトのプリンシパルを設定する。
You are logged in as: [hiroki.hasegawa].
Pick cloud project to use:
[1] foo-project
[2] bar-project
[3] baz-project
Please enter numeric choice or text value (must exactly match list item): 3 # デフォルトのプロジェクト名を設定する。
info¶
▼ infoとは¶
現在使用している設定ファイルの場所を取得する。
$ gcloud info
# 認証情報ファイル
User Config Directory: /root/.config/gcloud]
...
project¶
▼ projectとは¶
記入中...
▼ list¶
現在のプリンシパルが使用できるプロジェクトの一覧を取得する。
注意点として、全てのプロジェクトではない。
*実行例*
$ gcloud projects list
PROJECT_ID NAME PROJECT_NUMBER
foo-project-*** foo-project *****
bar-project-*** bar-project *****
03. Google Cloudリソース別のプラクティス¶
Cloud Logging¶
▼ read¶
Cloud Loggingからログを読み出す。
$ gcloud logging read 'resource.labels.container_name="foo-container"' --limit 1
GCS¶
▼ cp¶
指定したパスにあるオブジェクトを、ローカルマシンにコピーする。
$ gcloud storage cp gs://<GCS名>/<オブジェクトのファイルパス> <ローカルマシンのファイルパス>
ディレクトリごとコピーする場合は、--recursive
オプションを使用する。
$ gcloud storage cp --recursive gs://<GCS名>/<オブジェクトのファイルパス> <ローカルマシンのファイルパス>
KMS¶
▼ describeとは¶
KMSの暗号化キーを取得する。
$ gcloud kms keys describe <KMSのリソースID>
$ gcloud kms keys describe projects/foo-project/locations/global/keyRings/sops/cryptoKeys/sops-key