使用多个 Google Cloud 项目

本文档介绍了如何将一个或多个 Google Cloud 项目与 VMware 上的 GKE Enterprise 集群相关联。

此处为完整说明。如需了解如何使用 Google Cloud 项目,请参阅设置最小基础架构

准备工作

安装 Google Cloud CLI

队列宿主项目

每个管理员集群都必须注册到集群。由管理员集群管理的所有用户集群都必须注册到与管理员集群相同的队列。

管理员或用户集群注册到队列时,它会与队列宿主项目相关联。管理员集群及其管理的所有用户集群具有相同的集群宿主项目。在 Google Cloud 控制台的队列宿主项目中,您可以查看和管理管理员集群和用户集群。

如需为管理员集群指定队列宿主项目,请在管理员集群配置文件gkeConnect.projectID 字段中输入项目 ID。

如果您使用 gkectl 命令行工具创建用户集群,请在用户集群配置文件gkeConnect.projectID 字段中输入项目 ID。

如果您在配置文件中包括 stackdrivercloudAuditLogginggkeOnPremAPI 部分,请注意新集群的以下要求:

  • gkeConnect.projectID 中的 ID 必须与 stackdriver.projectIDcloudAuditLogging.projectID 中设置的 ID 相同。

  • 必须在 stackdriver.clusterLocationcloudAuditLogging.clusterLocation 中设置相同的 Google Cloud 区域。此外,如果 gkeOnPremAPI.enabledtrue,则必须在 gkeOnPremAPI.location 中设置同一区域。

如果项目 ID 和区域不相同,则集群创建会失败。

如果您使用 Google Cloud 控制台创建用户集群,则当前 Google Cloud 项目会自动成为队列宿主项目。

在舰队宿主项目中启用 API

Linux 和 macOS

如需在队列宿主项目中启用所需的 API,请运行以下命令:

gcloud services enable --project FLEET_HOST_PROJECT_ID \
    anthos.googleapis.com \
    container.googleapis.com \
    gkehub.googleapis.com \
    gkeconnect.googleapis.com \
    connectgateway.googleapis.com \
    stackdriver.googleapis.com \
    monitoring.googleapis.com \
    logging.googleapis.com \
    opsconfigmonitoring.googleapis.com \
    serviceusage.googleapis.com \
    iam.googleapis.com \
    cloudresourcemanager.googleapis.com

如果您要在 Google Cloud 控制台、Google Cloud CLI 或 Terraform 中管理用户集群的生命周期,请在舰队宿主项目中启用以下附加 API:

gcloud services enable --project FLEET_HOST_PROJECT_ID \
    gkeonprem.googleapis.com \
    anthosaudit.googleapis.com \
    storage.googleapis.com

Windows

如需在队列宿主项目中启用所需的 API,请运行以下命令:

gcloud services enable --project FLEET_HOST_PROJECT_ID ^
    anthos.googleapis.com ^
    container.googleapis.com ^
    gkehub.googleapis.com ^
    gkeconnect.googleapis.com ^
    connectgateway.googleapis.com ^
    stackdriver.googleapis.com ^
    monitoring.googleapis.com ^
    logging.googleapis.com ^
    opsconfigmonitoring.googleapis.com ^
    serviceusage.googleapis.com ^
    iam.googleapis.com ^
    cloudresourcemanager.googleapis.com

如果您要在 Google Cloud 控制台、Google Cloud CLI 或 Terraform 中管理用户集群的生命周期,请在舰队宿主项目中启用以下附加 API:

gcloud services enable --project FLEET_HOST_PROJECT_ID ^
    gkeonprem.googleapis.com ^
    anthosaudit.googleapis.com ^
    storage.googleapis.com

查看队列宿主项目中的日志和指标

如果要在 Google Cloud 控制台中查看集群日志和指标,请在adminadmin集群配置文件的 stackdriver.projectID 字段中输入队列宿主项目的 ID。

默认情况下,此 stackdriver 部分是必填的。也就是说,如果您不填写 stackdriver 部分,则必须在运行 gkectl create 时添加 --skip-validation-stackdriver 标志。

您不能在 stackdriver.projectID 字段中输入任何其他项目 ID。所输入的值必须是舰队宿主项目的 ID。

如果您选择在 Google Cloud 控制台中查看集群日志和指标,请在队列宿主项目中启用以下 API:

Linux 和 macOS

gcloud services enable --project FLEET_HOST_PROJECT_ID \
    stackdriver.googleapis.com \
    monitoring.googleapis.com \
    logging.googleapis.com \
    opsconfigmonitoring.googleapis.com \
    serviceusage.googleapis.com \
    iam.googleapis.com \
    cloudresourcemanager.googleapis.com

Windows

gcloud services enable --project FLEET_HOST_PROJECT_ID ^
    stackdriver.googleapis.com ^
    monitoring.googleapis.com ^
    logging.googleapis.com ^
    opsconfigmonitoring.googleapis.com ^
    serviceusage.googleapis.com ^
    iam.googleapis.com ^
    cloudresourcemanager.googleapis.com

查看队列宿主项目中的审核日志

如果您查看审核日志并且您处于 Google Cloud 控制台中,请在admin用户集群配置文件的 cloudAuditLogging.projectID 字段中输入队列宿主项目的 ID。

您不能在 cloudAuditLogging.projectID 字段中输入任何其他项目 ID。所输入的值必须是舰队宿主项目的 ID。

如果您选择在 Google Cloud 控制台中查看审核日志,请在队列宿主项目中启用以下 API:

Linux 和 macOS

gcloud services enable --project FLEET_HOST_PROJECT_ID \
    anthosaudit.googleapis.com \
    serviceusage.googleapis.com \
    iam.googleapis.com \
    cloudresourcemanager.googleapis.com

Windows

gcloud services enable --project FLEET_HOST_PROJECT_ID ^
    anthosaudit.googleapis.com ^
    serviceusage.googleapis.com ^
    iam.googleapis.com ^
    cloudresourcemanager.googleapis.com

向舰队宿主项目的服务账号授予角色

您的连接注册服务账号必须获得舰队宿主项目上的特定角色。如需了解详情,请参阅连接注册服务账号

您的日志记录监控服务账号必须获得队列宿主项目上的特定角色。如需了解详情,请参阅日志记录和监控服务账号

您的审核日志服务账号必须获得队列宿主项目上的特定角色。如需了解详情,请参阅审核日志记录服务账号

用量计量项目

如果您为用户集群启用了 GKE 用量计量,则 GKE on VMware 会将用量数据存储在与您选择的 Google Cloud 项目关联的 BigQuery 数据集中。此 Google Cloud 项目称为“用量计量项目”

您的用量计量项目可以与队列宿主项目相同,也可以不同。

如需启用用量计量功能,请在用户集群配置文件中将 usageMetering.bigQueryProjectID 设置为用量计量项目 ID。

如果您选择启用用量计量,请在用量计量项目中启用以下 API:

Linux 和 macOS

gcloud services enable --project USAGE_METERING_PROJECT_ID] \
    bigquery.googleapis.com \
    serviceusage.googleapis.com \
    iam.googleapis.com \
    cloudresourcemanager.googleapis.com

Windows

gcloud services enable --project USAGE_METERING_PROJECT_ID ^
    bigquery.googleapis.com ^
    serviceusage.googleapis.com ^
    iam.googleapis.com ^
    cloudresourcemanager.googleapis.com

向服务账号授予用量计量项目上的角色

您的用量计量服务账号必须被授予用量计量项目上的特定角色。

如需了解详情,请参阅用量计量服务账号

组件访问服务账号的父项目

在创建集群之前,您必须有一个服务帐号,GKE on VMware 可以使用该帐号从 Container Registry 下载组件。此服务账号称为组件访问服务账号。

您在其中创建组件访问服务账号的 Google Cloud 项目被称为组件访问服务账号的父级parent。此项目可以与您在集群配置文件中指定的某一个项目相同,也可以不同于您在配置文件中指定的所有项目。如需详细了解服务账号和父项目,请参阅了解服务账号和 Google Cloud 项目

如需为组件访问服务账号的父项目启用所需的 API,请执行以下操作:

Linux 和 macOS

gcloud services enable --project [PROJECT_ID] \
    serviceusage.googleapis.com \
    iam.googleapis.com \
    cloudresourcemanager.googleapis.com

其中,[PROJECT_ID] 是组件访问服务账号的父项目的 ID。

Windows

gcloud services enable --project [PROJECT_ID] ^
    serviceusage.googleapis.com ^
    iam.googleapis.com ^
    cloudresourcemanager.googleapis.com

其中,[PROJECT_ID] 是组件访问服务账号的父项目的 ID。

后续步骤

创建服务账号和密钥