GCP 配置方法

FreeGuideOnline 11阅读 2026-07-14

bash gcloud version


若显示版本号,则说明安装成功。

---

## 初次初始化配置

首次使用时,需通过 `gcloud init` 完成账号认证与默认项目设置。执行以下命令:

```bash
gcloud init

工具会引导你完成以下步骤:

  1. 登录账号:浏览器会自动打开 Google 登录页面,完成授权后终端会收到认证令牌。
  2. 选择要使用的配置:如果已有配置,可复用;初次使用选择 Create a new configuration,并为配置命名(例如 default)。
  3. 选择或创建项目:从已存在的项目列表中选一个,或新建项目。此时选定的项目将成为该配置的默认项目。
  4. 设置默认区域和可用区:输入如 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 提供了一套完整的属性管理子命令。常用的 setgetunset 可以随时调整配置。

设置默认项目

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)代替个人账号。步骤如下:

  1. 在 GCP Console 中创建服务账号,并分配所需角色,下载 JSON 密钥文件。
  2. 激活服务账号:
gcloud auth activate-service-account --key-file=KEY_FILE.json
  1. 验证当前活跃账号:
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