gcloud CLI 概述 - Initialization GCP Project
gcloud CLI 全稱是 Google Cloud Command Line Interface ,是創建和管理 GCP 雲端資源的「命令行」 工具,還捆綁了專用的子工具例如 BigQuery(bq CLI)、 Kubernetes 集群(kubectl CLI) 可配合使用,是隸屬在 Cloud SDK 內的。對應其他的雲端服務是 :
- Amazon Web Services (AWS) : AWS CLI
- Microsoft Azure : Azure CLI
雖然可以使用 gcloud 來撰寫 script 自動化執行許多常見的任務,但實務上更多是會用例如 Terraform 等 IaC 工具來部屬和管理雲端資源, gcloud 現在基本上用最多是在初始化帳戶如 :管理身份驗證(manage authentication),或是自定義本地配置(customize local configuration),這些如權限管理、Project 設定、Billing 有關的功能會是 gcloud CLI 主要使用的地方。
GCP Project 初始化
GCP 的設計是把所有雲端資源建立在一個 GCP Project 上,故 GCP Project 概念上對應成其他雲端服務的部分類似為:
- azure resource group
- aws account
由於是一切雲端資源創立的起點,故使用 gcloud CLI 時最先要做的,是初始化設定雲端資源要操作哪個 GCP Project 上
# Default configuration ,可以直接從這步驟把 GCP Project 初始化完成
gcloud init
# 防止自動打開 web browser,常用在 remote ssh
gcloud init --console-only
---
gcloud config list --format=yaml
# compute:
# region: us-central1
# zone: us-central1-a
# core:
# account = XXXXX@gmail.com
# project = YYYYY-test-project
# 使用 gcloud CLI 設置 Compute Engine 服務器的 default region/zone = us-east1/us-east1-a
gcloud config set compute/region us-east1
gcloud config set compute/zone us-east1-a
# Config 的 Project 的操作
gcloud config set project [PROJECT_ID]
gcloud config unset [PROJECT_ID]
gcloud init 時在 terminal 會有教學,幫助把 Account、Project、Region/Zone 都設定完成,設定完成之後 default
會是預設的 configuration 名稱
管理 gcloud CLI 配置
實務上蠻有可能會需要配置多個 gcloud CLI configuration 的,原因是可能「有多個 GCP-Accounts 會使用到」或者是「多個 GCP Projects 要切換」,故可以設定 :
# 創建/刪除 configuration
gcloud config configurations create [NAME]
gcloud config configurations delete [NAME]
---
# 列出 configurations
gcloud config configurations list
# 範例如下, True 為目前 active 的 configuration
# NAME IS_ACTIVE ACCOUNT PROJECT DEFAULT_ZONE DEFAULT_REGION
# default False user@gmail.com example-project-1 us-east1-b us-east1
# dev False dev1@gmail.com example-project-2 us-east1-c us-east1
# prod True prod@gmail.com example-project-3 us-east1-b us-east1
# 進階查看 configuration 屬性
gcloud config configurations describe [NAME]
---
# 啟動 configuration
gcloud config configurations activate [NAME]
使用 gcloud config configurations create [NAME]
創建多個配置,並通過 gcloud config configurations activate [NAME]
來切換不同的帳戶和配置,是管理多個 GCP 帳戶的 Best Practice
一般來說 configuration 的儲存位置會在 :
- MacOS/Linux :
~/.config/gcloud
- Windows :
%APPDATA%\gcloud
可以用 gcloud CLI 確認 configuration 設定檔案儲存在本機哪裡 :
gcloud info --format='value(config.paths.global_config_dir)'
# 另外也可用
which gcloud
which 是一個命令,主要用來在類 Unix 系統(如 Linux 或 macOS)中查找指定命令的執行檔所在的路徑。 which 命令會在系統的 PATH 環境變數指定的目錄中,逐一查找可執行文件,如果 which 沒有返回任何結果,可能是指定套件尚未安裝,或它不在 PATH 路徑中
Project 操作
# 單純針對 Project 的操作
gcloud projects describe [PROJECT_ID]
gcloud projects list --format="json"
gcloud projects list --sort-by=[PROJECT_ID] --limit=5
其他常用命令
# Display version and installed components.
gcloud version
# Display current gcloud CLI environment details.
gcloud info
gcloud auth list
# Grant gcloud CLI 的 credentials
gcloud auth login
gcloud auth login --no-browser
gcloud auth login --no-launch-browser
# Revoke 對 gcloud CLI 的 credentials
gcloud auth revoke <ACCOUNT_ID>
# Service-Account Activate
gcloud auth activate-service-account <SERVICE_ACCOUNT_ID> --key-file=<KEY_FILE_PATH> --project=<PROJECT_ID>
Alpha & Beta Version
默認情況下, gcloud CLI 會安裝 alpha
、beta
這種還未正式 release 的 gcloud CLI 版本,可以嘗試的使用它,這兩個的差別介紹如下附表 :
Label | Description |
---|---|
beta | Commands 在功能上是完整的,但可能還未完成, Commands 還是可能發生 Breaking changes 且可能不會另行通知 |
alpha | Commands 處於 early release 早期版本中,如有更改,恕不另行通知! |
使用上就是很簡單的在 gcloud 後面加上 Label 就可以使用了例如:
# 與 Compute Engine 相關的 Beta 版命令
gcloud beta compute
# Alpha 版本中管理 App Engine 命令
gcloud alpha app