GCP 配置方法
bash gcloud version
若显示版本号,则说明安装成功。
---
## 初次初始化配置
首次使用时,需通过 `gcloud init` 完成账号认证与默认项目设置。执行以下命令:
```bash
gcloud init
工具会引导你完成以下步骤:
- 登录账号:浏览器会自动打开 Google 登录页面,完成授权后终端会收到认证令牌。
- 选择要使用的配置:如果已有配置,可复用;初次使用选择
Create a new configuration,并为配置命名(例如default)。 - 选择或创建项目:从已存在的项目列表中选一个,或新建项目。此时选定的项目将成为该配置的默认项目。
- 设置默认区域和可用区:输入如
us-central1作为 Compute Engine 资源的默认区域,输入us-central1-a等可用区(可先跳过,稍后单独设置)。
完成后可查看当前激活的配置:
gcloud config list
输出示例:
[core]
account = [email protected]
disable_usage_reporting = True
project = your-project-id
[compute]
zone = us-central1-a
如果想查看所有属性以及它们的设置来源,可使用:
gcloud config list --all
基本配置管理
查看、设置与取消配置属性
gcloud config 提供了一套完整的属性管理子命令。常用的 set、get 和 unset 可以随时调整配置。
设置默认项目:
gcloud config set project PROJECT_ID
设置默认区域和可用区:
gcloud config set compute/region us-west1
gcloud config set compute/zone us-west1-a
获取特定属性值:
gcloud config get-value project
gcloud config get-value compute/zone
删除某个属性(恢复为未设置状态):
gcloud config unset compute/zone
常用配置属性一览
| 属性 | 说明 | 示例值 |
|---|---|---|
core/project |
默认 GCP 项目 ID | my-project-123 |
core/account |
当前认证账号 | [email protected] |
compute/region |
默认 Compute Engine 区域 | us-central1 |
compute/zone |
默认可用区 | us-central1-a |
container/cluster |
默认 GKE 集群名称 | my-cluster |
这些约定可以避免每次执行命令时都要指定 --project、--zone 等参数。
多配置与多账号管理
当需要同时管理多个 GCP 项目(例如开发、测试、生产环境)或使用不同账号时,可以为每个场景创建隔离开的命名配置。
创建新配置
gcloud config configurations create prod
该命令会创建名为 prod 的配置,并自动激活它。
激活不同配置
gcloud config configurations activate default
查看所有配置及当前激活状态:
gcloud config configurations list
输出示例:
NAME IS_ACTIVE ACCOUNT PROJECT
default True [email protected] my-project-dev
prod False [email protected] my-project-prod
在配置间切换时自动完成一整套设定
当你激活一个配置后,可以使用 gcloud auth login 来为该配置绑定对应的账号,并用 gcloud config set 设置项目、区域等。这样每个配置都有独立的认证会话和默认参数,互不干扰。
删除配置
gcloud config configurations delete unused-config
管理认证凭据
用户账号认证
上文 gcloud init 过程中已使用过默认的 Web 流认证。也可以在命令行中随时进行:
gcloud auth login
浏览器登录完成后,当前激活的配置即获得用户凭据。
服务账号认证
在自动化脚本或服务器环境中,通常使用服务账号(Service Account)代替个人账号。步骤如下:
- 在 GCP Console 中创建服务账号,并分配所需角色,下载 JSON 密钥文件。
- 激活服务账号:
gcloud auth activate-service-account --key-file=KEY_FILE.json
- 验证当前活跃账号:
gcloud auth list
输出会标注出 ACTIVE 账号。
也可以直接设置环境变量,让应用程序使用服务账号密钥:
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/key.json"
应用默认凭据(ADC)
许多客户端库支持 Application Default Credentials。生成 ADC 文件可使用:
gcloud auth application-default login
该命令会产生一个 JSON 凭据文件,供本地开发环境的客户端库自动发现。
配置 IAM 与访问权限
正确配置好账户后,确保账号拥有足够的项目权限才能执行操作。在 GCP 中可通过 IAM 策略进行管理。
虽然权限的授予通常在 Console 或通过 gcloud projects add-iam-policy-binding 完成,但配置时需注意:
- 查看当前账号权限(针对某个项目):
gcloud projects get-iam-policy PROJECT_ID \
--flatten="bindings[].members" \
--filter="bindings.members:$(gcloud config get-value account)" \
--format="table(bindings.role)"
- 赋予必要角色(需具备
roles/resourcemanager.projectIamAdmin):
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="user:[email protected]" \
--role="roles/editor"
服务账号同理,只需把 user: 改为 serviceAccount:。
网络与防火墙相关配置
虽然不是 gcloud config 的直接管辖范围,但理解网络默认规则有助于避免“配置后仍无法连接”的问题。
- 默认 VPC 自动存在,如需自定义网络,需明确创建:
gcloud compute networks create my-vpc --subnet-mode=custom
- 创建子网并指定区域(该区域应与默认区域或资源区域一致):
gcloud compute networks subnets create my-subnet \
--network=my-vpc \
--region=us-west1 \
--range=10.0.0.0/24
- 防火墙规则允许特定流量(例如允许 SSH):
gcloud compute firewall-rules create allow-ssh \
--network=my-vpc \
--allow=tcp:22
常用场景配置示例
场景一:快速为单个项目配置开发环境
gcloud init dev-config
# 选择项目 my-app-dev
gcloud config set compute/region us-central1
gcloud config set compute/zone us-central1-a
gcloud auth login # 若需要更换账号
之后所有 gcloud compute instances create 类的命令将默认使用 us-central1-a。
场景二:自动化脚本使用服务账号
# 激活服务账号
gcloud auth activate-service-account --key-file=automation-key.json
# 设置项目
gcloud config set project my-prod-project
# 验证
gcloud compute instances list
场景三:同时管理个人账号和公司账号
- 配置
personal:使用个人 Gmail 登录,关联个人实验项目 - 配置
work:使用企业账号登录,关联生产项目
通过 gcloud config configurations activate 快速切换,所有上下文完全隔离。
故障排查与实用技巧
- 查看当前活跃账号和项目:
gcloud info可显示更详细的诊断信息。 - 无法执行操作,提示权限不足:检查当前账号
gcloud auth list是否正确,且 IAM 角色包含必要权限。 - 命令执行时忽略默认配置:任何命令都可以显式覆盖配置,例如:
gcloud compute instances list --project=other-project --zone=us-east1-b
- 恢复默认配置:如果配置混乱,可删除当前配置重新初始化:
gcloud config configurations delete default
gcloud init