• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

gcloud cli(cloud sdk)

date: 2021-03-06 excerpt: gcloud cli(cloud sdk)について

tag: gcpgcloudcligcloud clicloud sdk


gcloud cli(cloud sdk)について

概要

  • GCPのインフラストラクチャを設定するためのツール
  • コンポーネントと言われる粒度で機能を拡張することができる

インストール

ubuntu(snapを使用する場合)

$ sudo snap install google-cloud-sdk --classic

ubuntu, debian(aptにレポジトリを追加する場合)

$ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
$ echo "deb https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list # apt-listに追加
$ sudo apt update
$ sudo apt install google-cloud-sdk

osx

$ brew install google-cloud-sdk
  • zshのオートコンプリートがバグることがあるのでその場合はシステム的に変更された.zshrcを戻す
  • caskでインストールされるとPATHが設定されないので、PATHを追加する
    • 一般には/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/binにバイナリがある
  • PATHが特殊なので注意
$(brew --prefix)/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin

windows

$ scoop install gcloud

ユースケース毎の使い方

アカウントのセットアップ

$ gcloud init --skip-diagnostics

現在の設定を確認する

$ gcloud info

複数の設定を使い分ける

設定を作成する

$ gcloud config configurations create <config-name>

設定の一覧の確認

$ gcloud config configurations list
  • すでに登録済みの設定の一覧を確認できる

設定を有効化する

$ gcloud config configurations activate <config-name>

プロジェクトのセット

$ gcloud config set project <project-name>

現在設定しているアカウントを切り替える

  1. gcloud init
  2. [3] Switch to and re-initialize existing configuration: [default]を選択
  3. 切り替え先のアカウントを選択
  4. 切り替え先のプロジェクトを選択

iam-policyの確認

$ gcloud projects get-iam-policy <project-name>
bindings:
- members:
  - serviceAccount:service-*******@compute-system.iam.gserviceaccount.com
  role: roles/compute.serviceAgent
- members:
  - serviceAccount:service-*******@containerregistry.iam.gserviceaccount.com
  role: roles/containerregistry.ServiceAgent
  ...

コンポーネントのアップデート

$ gcloud components update

apiとの関係

  • gcloudコマンドはAPIをコマンドでラップしたものであるが、python等のスクリプトから呼び出す際はgoogle-api-python-clientを用いる
  • 仕様が複雑でドキュメントを精読しないと使うことが難しい

参考

  • Cloud SDK のインストール/Google Cloud

トラブルシューティング

gcloudのコマンドが反応しない

  • 原因
    • クレデンシャルがexpireしていることがある
  • 対応
    • 所属しているGCPによっては短時間でクレデンシャルexpireすることがあり、その度に再認証が必要
    • gcloud auth loginを実行して再認証を行う
    • web browserがないマシンでは、web browserがあるマシンで実行してくれとのメッセージとともにURLとtokenが出力される

Your application has authenticated using end user credentials from Google Cloud SDK without a quota project. という警告がでる

  • 対応
    • GOOGLE_CLOUD_PROJECT=<project-id> と GOOGLE_CLOUD_QUOTA_PROJECT=<project-id> を環境変数に設定する


gcpgcloudcligcloud clicloud sdk Share Tweet