gcloud

NOTE:

  • 新しめの機能の場合、 gcloud beta ...gcloud alpha ... にしかコマンドがなかったり、 beta ...alpha ... を付けることで結果が変わることがある

認証

See also #auth

## 初期設定(認証込)
gcloud init

参考:

環境変数

Variable用途
CLOUDSDK_ACTIVE_CONFIG_NAME利用するconfigurationを設定する。See #configurations

全体で使えるオプション

リファレンスで「GCLOUD WIDE FLAGS」とされているもの。

https://cloud.google.com/sdk/gcloud/reference に簡単な説明がある。

例:

  • --configuration … コマンドを実行するconfiguration. See #configurations
  • --project … コマンドの対象となるプロジェクトをプロジェクトIDで指定する
  • --verbosity=VERBOSITY … ログレベルの設定。デフォルトは warning. 他に、debug, info, error, critical, noneが設定可能

filter

https://cloud.google.com/sdk/gcloud/reference/topic/filters

結果をリストで出力するコマンドに対し、フィルタ条件を記すことができる。

Examples:

gcloud compute instances list --filter="machineType:f1-micro"
gcloud compute instances list \
  --filter="zone ~ ^us AND -machineType:f1-micro"
gcloud compute instances list --filter="tags.items=my-tag"

gcloud projects list \
  --format="table(projectNumber,projectId,createTime)" \
  --filter="createTime>=2018-01-15"

gcloud config configurations list --filter='IS_ACTIVE=true'

format

https://cloud.google.com/sdk/gcloud/reference/topic/formats

結果を出力するコマンドに対し、出力フォーマットや、抽出するプロパティ、ヘッダの有無などを指定できる。

Examples:

# デフォルトのテーブル表示にボックス装飾を付ける
gcloud ... --format='[box]'
# JSON形式
gcloud ... --format=json
# YAML形式
gcloud ... --format=yaml
# ヘッダ無しCSV形式
gcloud ... --format='csv[no-heading]'

# ヘッダ無しCSVで、特定のカラム値だけ取得
gcloud config list --format="csv[no-heading](core.project,core.account)"

# 特定の値だけ取得
gcloud config configurations list --format='value(name)'
gcloud info --format='value(config.paths.global_config_dir)'

auth

https://cloud.google.com/sdk/gcloud/reference/auth

Examples:

# ログイン認証
gcloud auth login
# 現在認証済みのアカウント一覧
gcloud auth list
# サービスアカウントの認証
gcloud auth activate-service-account --key-file <KEYFILE>
# アクセストークンの表示
gcloud auth print-access-token

compute

https://cloud.google.com/sdk/gcloud/reference/compute

Examples:

## ssh
gcloud compute ssh [--project=<PROJECT>] [--zone=<ZONE>] [--internal-ip | --tunnel-through-iap] \
  <INSTANCE> [-- <SSH_ARGS>]

## scp
gcloud compute scp [--project=<PROJECT>] [--zone=<ZONE>] [--internal-ip | --tunnel-through-iap] \
  [--recurse] host:/path/to/dir path/to/local

## イメージの作成
gcloud compute images create my-image --source-disk my-vm-disk

instances

VM操作

Examples:

## 一覧
gcloud compute instances list
## 起動
gcloud compute instances start <INSTANCE> --zone=<ZONE>
## 停止
gcloud compute instances stop <INSTANCE> --zone=<ZONE>

## 作成
gcloud compute instances create my-instance \
  --project=my-project --zone=asia-northeast1-b \
  --no-address \ # 外部IPなし
  --custom-vm-type=n1 \ # N1インスタンス
  --custom-cpu=4 --custom-memory=8GB \ # リソースをカスタマイズする場合
  --image-project=another-project --image=my-image # 別プロジェクトのイメージを使う

参考:

regions

https://cloud.google.com/sdk/gcloud/reference/compute/regions

GCEリージョンの表示。

SYNPSIS:

gcloud compute regions list
gcloud compute regions describe REGION

ssl-certificates

https://cloud.google.com/sdk/gcloud/reference/compute/ssl-certificates

証明書の管理。マネージド証明書が作れる。

# 一覧表示
gcloud compute ssl-certificates list

# 詳細表示
gcloud compute ssl-certificates describe <name>

# 作成
gcloud compute ssl-certificates create <name> --domains=<fqdn1>,...

# 削除
gcloud compute ssl-certificates delete <name>

zones

https://cloud.google.com/sdk/gcloud/reference/compute/zones

GCEゾーンの表示。

SYNPSIS:

gcloud compute zones list
gcloud compute zones describe ZONE

config

https://cloud.google.com/sdk/gcloud/reference/config

Subcommands:

configurationという単位でプロパティ値のセットを管理できる。
configurations以外のサブコマンドは現在のconfigurationに対する操作を行う。

SYNOPSIS:

# 設定プロパティ値一覧表示
gcloud config list

# プロパティ値の取得
gcloud config get-value account
gcloud config get-value artifacts/location

# プロパティ値の設定
gcloud config set project my-project
gcloud config set compute/region asia-northeast1
gcloud config set compute/zone asia-northeast1-a

参考:

configurations

https://cloud.google.com/sdk/gcloud/reference/config/configurations

設定プロファイルの管理。各プロファイルでは、プロパティ値のセットを管理することができる。

SYNOPSIS:

# プロファイル一覧表示
gcloud config configurations list

# 表示
gcloud config configurations describe プロファイル名
# 作成
gcloud config configurations create プロファイル名
# 削除
gcloud config configurations delete プロファイル名
# 有効化
gcloud config configurations activate プロファイル名

Tips:

  • gcloudコマンドは現在アクティブなconfigurationの設定プロパティをデフォルト値として参照する
  • アクティブなconfigurationは --configuration 引数か、環境変数 CLOUDSDK_ACTIVE_CONFIG_NAME で上書き指定することもできる

参考:

container

https://cloud.google.com/sdk/gcloud/reference/container

GKEなどコンテナサービスに関する操作。

clusters

https://cloud.google.com/sdk/gcloud/reference/container/clusters

GKEクラスタの操作。

Examples:

gcloud container clusters list

# $KUBECONFIG or ~/.kube/config に認証情報を取得
gcloud container clusters get-credentials クラスタ名 [--region=REGION] [--project=PROJECT_ID]

create

https://cloud.google.com/sdk/gcloud/reference/container/clusters/create

オプション意味
–enable-master-authorized-networksMaster Authorized Networksの有効化
–master-authorized-networks=NETWORK,[NETWORK,…]Master Authorized Networksの設定
beta版(2020-05-13更新)

https://cloud.google.com/sdk/gcloud/reference/beta/container/clusters/create

オプション意味
–release-channel=CHANNELrapid, regular, stableのどれか。リリースチャネルの設定。

images

Examples:

# イメージ一覧
gcloud container images list --repository=[HOSTNAME]/[PROJECT-ID]

# イメージのタグ一覧
gcloud container images list-tags [HOSTNAME]/[PROJECT-ID]/[IMAGE]

## 完全なダイジェストを表示
gcloud container images list-tags --format='get(digest)' [HOSTNAME]/[PROJECT-ID]/[IMAGE]

# 既存イメージに別のタグをつける(下記いずれか)
gcloud container images add-tag \
  [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG] \
  [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[NEW_TAG]

gcloud container images add-tag \
  [HOSTNAME]/[PROJECT-ID]/[IMAGE]@[IMAGE_DIGEST] \
  [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[NEW_TAG]

Tips:

  • gcloud container images add-tag コマンドは、別プロジェクトのリポジトリへのイメージのコピーにも使える

関連ドキュメント:

endpoints

https://cloud.google.com/sdk/gcloud/reference/endpoints

APIサービスの作成・有効化・管理を行う。

services

https://cloud.google.com/sdk/gcloud/reference/endpoints/services

サービスの管理を行う。

Examples:

gcloud endpoints services list
gcloud endpoints services delete ENDPOINT

functions

https://cloud.google.com/sdk/gcloud/reference/functions

Cloud Functionsの操作

deploy

https://cloud.google.com/sdk/gcloud/reference/functions/deploy

Cloud Functionのデプロイ(作成・更新)

Example:

## cloud-buildsイベントをフックに動くFunctionのデプロイ
gcloud functions deploy <Function Name> \
  --trigger-topic cloud-builds \
  --runtime nodejs10 \
  --set-env-vars "FOO=foo,BAR=bar" \
  --project my-project

info

https://cloud.google.com/sdk/gcloud/reference/info

gcloudのconfigファイルのパスなど環境構成情報を表示する。

Examples:

gcloud info
# 特定の値を抽出
gcloud info --format='value(config.paths.global_config_dir)'
# ネットワーク接続や隠し属性のチェック
gcloud info --run-diagnostics
# 直近のログを表示
gcloud info --show-log

logging

https://cloud.google.com/sdk/gcloud/reference/logging

NOTE:

  • read, listなどのコマンド利用時には serviceusage.services.use 権限が必要

read

https://cloud.google.com/sdk/gcloud/reference/logging/read

Examples:

gcloud logging read --format json
gcloud logging read --limit=10 --order=asc
gcloud logging read 'timestamp>="2020-03-19T05:28:00Z" timestamp<="2020-03-25T05:33:28Z"'

※2020-04-20現在、 tail -f 相当のオプションはなさそう

projects

https://cloud.google.com/sdk/gcloud/reference/projects/

SYNOPSIS:

## プロジェクト一覧
gcloud projects list

beta

正式版になってないか適宜チェックすること。

builds triggers

最終更新: 2020-12-09

Cloud Buildのトリガーを操作する。

SYNOPSIS:

# 既存のトリガー設定をエクスポート
gcloud beta builds triggers export <トリガー名> --destination=my-trigger.yml

# ファイルからトリガー設定をインポート
gcloud beta builds triggers import --source=my-trigger.yml

NOTE:

  • エクスポート/インポートについて:
    • YAML内のidが一致していると、nameを変えても既存のトリガーが更新されてしまう

参考