使用多个 Google Cloud 项目

本文档介绍如何在 Anthos Clusters on VMware (GKE On-Prem) 的各个方面使用单独的 Google Cloud 项目。

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

准备工作

安装 Google Cloud CLI

集群配置文件

管理员集群用户集群配置文件具有多个字段,您可以在这些字段中指定 Cloud 项目 ID:

stackdriver:
  projectID: ""
...
gkeConnect:
  projectID: ""
...
usageMetering:
  bigQueryProjectID: ""
...
cloudAuditLogging:
  projectID: ""

其理念为,您可以将一个项目用于在 Google Cloud Console 中管理集群,另一个项目用于查看日志和指标,等等。唯一的例外是审核日志记录项目必须与舰队宿主项目相同。

您无需使用不同的项目 ID。例如,您可以将同一个项目用于管理和日志记录。如果您愿意,也可以使用一个项目来处理所有任务。

在 Cloud 项目中启用服务

每个 Cloud 项目都必须启用特定服务。例如,您的舰队宿主项目必须启用以下服务:

cloudresourcemanager.googleapis.com
container.googleapis.com
gkeconnect.googleapis.com
gkehub.googleapis.com
serviceusage.googleapis.com
iam.googleapis.com

如需在项目中启用服务,您必须拥有 Cloud 项目的特定权限。如需了解详情,请参阅访问权限控制services.enable 所需的权限。

如果您拥有所需的权限,则可以自行启用服务。否则,必须由您所在组织中的其他人为您启用服务。

舰队宿主项目

当您创建用户集群时,Anthos Clusters on VMware 使用 Connect 向您选择的 Cloud 项目注册集群。注册集群后,您可以在 Google Cloud Console 中查看和管理此项目中的集群。

Connect 使用名为 Connect AgentDeployment 在用户集群和 Cloud 项目之间建立连接。

在用户集群配置文件中,将 gkecConnect.projectID 设置为要在其中查看和管理集群的 Cloud 项目的 ID。

在舰队宿主项目中启用 API

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

Linux 和 macOS

如果您要在 Google Cloud 控制台中管理用户集群的生命周期,请启用以下 API:

gcloud services enable --project [PROJECT_ID] \
    anthos.googleapis.com \
    anthosgke.googleapis.com \
    anthosaudit.googleapis.com \
    cloudresourcemanager.googleapis.com \
    container.googleapis.com \
    gkeconnect.googleapis.com \
    gkehub.googleapis.com \
    serviceusage.googleapis.com \
    stackdriver.googleapis.com \
    opsconfigmonitoring.googleapis.com \
    monitoring.googleapis.com \
    logging.googleapis.com \
    iam.googleapis.com \
    storage.googleapis.com

如果您不打算使用 Google Cloud 控制台管理用户集群的生命周期,请启用以下各项:

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

其中,[PROJECT_ID] 是舰队宿主项目的 ID。

Windows

如果您要在 Google Cloud 控制台中管理用户集群的生命周期,请启用以下 API:

gcloud services enable --project [PROJECT_ID] ^
    anthos.googleapis.com ^
    anthosgke.googleapis.com ^
    gkehub.googleapis.com ^
    gkeconnect.googleapis.com ^
    stackdriver.googleapis.com ^
    storage.googleapis.com

如果您不打算使用 Google Cloud 控制台管理用户集群的生命周期,请启用以下各项:

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

其中,[PROJECT_ID] 是舰队宿主项目的 ID。

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

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

日志记录和监控项目

在用户集群中,日志记录和指标代理会收集数据并将数据提供给 Cloud Logging 和 Cloud Monitoring。如需查看集群的日志和指标,您必须指定关联的 Cloud 项目。

在用户集群配置文件中,将 stackdriver.projectID 设置为要与日志记录和监控关联的 Cloud 项目的 ID。您将在此项目中查看集群的日志和指标。

在日志记录和监控项目中启用 API

如需在日志记录和监控项目中启用所需的 API,请运行以下命令:

Linux 和 macOS

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

其中,[PROJECT_ID] 是您的日志记录和监控项目的 ID。

Windows

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

其中,[PROJECT_ID] 是您的日志记录和监控项目的 ID。

向服务帐号授予日志记录和监控项目上的角色

您的日志记录和监控服务帐号必须被授予日志记录和监控项目上的特定角色。

如需了解详情,请参阅日志记录和监控服务帐号

审核日志记录项目

如果您为集群启用了 Cloud Audit Logs,则集群的 Kubernetes API 服务器的审核日志条目将发送到 Google Cloud。

您在其中查看审核日志的项目称为审核日志记录项目。您的审核日志记录项目必须与舰队宿主项目相同。

在集群配置文件中,将 cloudAuditLogging.projectID 设置为舰队宿主项目的 ID。

在审核日志记录项目中启用 API

如需在审核日志记录项目中启用所需的 API,请运行以下命令:

Linux 和 macOS

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

其中,[PROJECT_ID] 是您的审核日志记录项目的 ID。

Windows

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

其中,[PROJECT_ID] 是您的审核日志记录项目的 ID。

向服务帐号授予审核日志记录项目上的角色

您的审核日志服务帐号必须被授予审核日志记录项目上的特定角色。

如需了解详情,请参阅审核日志记录服务帐号

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

在创建集群之前,您必须拥有一个服务帐号,VMware 上的 Anthos 集群可用它从 Container Registry 下载组件。此服务帐号称为组件访问服务帐号。

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

用量计量项目

如果您为用户集群启用 GKE 用量计量,则 Anthos Clusters on VMware 会将使用情况数据存储在与您选择的 Cloud 项目关联的 BigQuery 数据集中。

用户集群配置文件中,将 usageMetering.bigQueryProjectID 设置为存储空间用量数据的 Cloud 项目的 ID。

在用量计量项目中启用 API

如需在用量计量项目中启用所需的 API,请使用以下代码:

Linux 和 macOS

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

其中,[PROJECT_ID] 是您的用量计量项目的 ID。

Windows

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

其中,[PROJECT_ID] 是您的用量计量项目的 ID。

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

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

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

后续步骤

创建服务帐号和密钥