本文档介绍您在 VMware 上的 Anthos 集群 (GKE On-Prem) 实现中创建集群所需的 Google Cloud 服务账号和密钥。
此处为完整说明。如需查看使用服务账号的简要说明,请参阅服务账号(快速入门)。
准备工作
服务账号概览
在创建管理员集群和用户集群之前,您需要具有以下服务账号:
- 组件访问服务账号
- 连接和注册服务账号
- 日志记录和监控服务账号
根据您要启用的功能,您可能还需要有一些可选服务账号。
了解服务账号和 Google Cloud 项目
创建服务账号时,请将其与 Google Cloud 项目关联。此 Google Cloud 项目称为服务账号的父级项目。
您可以通过查看服务账号的电子邮件地址来确定服务账号的父项目。例如,以下是名为 logger
的服务账号的电子邮件地址。父项目为 alice-123
。
logger@alice-123.iam.gserviceaccount.com
向服务账号授予 Identity and Access Management (IAM) 角色时,您会将该角色授予特定 Google Cloud 项目上的该服务账号。这遵循向资源上的身份授予角色的一般模式。
例如,您可以将 bigquery.dataEditor
角色授予 bob-456
项目上的 logger@alice-123.iam.gserviceaccount.com
服务账号。在这种情况下,服务账号是身份,Google Cloud 项目是资源。
请务必了解,您可以向不是服务账号父项目的 Google Cloud 项目中的服务账号授予角色。
向服务账号授予角色的权限
您必须向每个服务账号授予相关 Google Cloud 项目中的特定角色。例如,您的连接和注册服务账号必须被授予舰队宿主项目的 gkehub.admin
角色。
要授予 Google Cloud 项目的角色,您必须拥有项目的某些权限。如需了解详情,请参阅了解角色中的 roles/resourcemanager.projectIamAdmin
。
如果您拥有所需的权限,则可以自行授予这些角色。否则,必须由您所在组织中的其他人为您授予这些角色。
使用 gkeadm
自动创建服务账号
本页面介绍如何手动创建服务账号并向服务账号授予角色。除了手动执行这些步骤外,您还可以在创建管理员工作站时,让 gkeadm
创建一些服务账号并授予角色。如需了解详情,请参阅创建管理员工作站。
组件访问服务账号
Anthos clusters on VMware 使用此服务账号代表您从 Container Registry 下载集群组件。
如需创建组件访问服务账号,请输入以下命令:
gcloud iam service-accounts create component-access-sa \ --display-name "Component Access Service Account" \ --project PROJECT_ID
将 PROJECT_ID 替换为您要作为服务账号父项目的 Google Cloud 项目 ID。
如需为您的组件访问服务账号创建 JSON 密钥,请输入以下命令:
gcloud iam service-accounts keys create component-access-key.json \ --iam-account SERVICE_ACCOUNT_EMAIL
将 SERVICE_ACCOUNT_EMAIL 替换为您的组件访问服务账号的电子邮件地址。
向组件访问服务账号授予角色
管理员和用户集群配置文件具有几个用于指定项目 ID 的字段。
在管理员集群配置文件中:
stackdriver: projectID: "" ... cloudAuditLogging: projectid: ""
在用户集群配置文件中:
stackdriver: projectID: "" ... gkeConnect: projectID: "" ... usageMetering: bigQueryProjectID: "" ... cloudAuditLogging: projectid: ""
配置文件中的项目 ID 不必不同。例如,gkeConnect.projectID
可以与 cloudAuditLogging.projectID
相同。实际上,配置文件中的所有项目 ID 都可能相同。
您的组件访问服务账号必须在管理员和用户集群配置文件中指定的每个 Google Cloud 项目中获得以下 IAM 角色。这些角色是必需的,以便 Anthos clusters on VMware 可以进行预检检查:
serviceusage.serviceUsageViewer
iam.roleViewer
iam.serviceAccountViewer
对于您在集群配置文件中指定的每个 Google Cloud 项目,请运行以下命令,向您的组件访问服务账号授予所需角色:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/serviceusage.serviceUsageViewer"
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/iam.roleViewer"
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/iam.serviceAccountViewer"
请替换以下内容:
PROJECT_ID:您在配置文件中指定的某个 Google Cloud 项目的 ID。
SERVICE_ACCOUNT_EMAIL:组件访问服务账号的电子邮件地址。
连接和注册服务账号
Anthos clusters on VMware 使用此服务账号向 Google Cloud 注册您的用户集群。
如需创建连接注册服务账号,请输入以下命令:
gcloud iam service-accounts create connect-register-sa \ --project PROJECT_ID
将 PROJECT_ID 替换为您要作为连接注册服务账号父项目的 Google Cloud 项目 ID。
如需为您的连接注册服务账号创建 JSON 密钥,请输入以下命令:
gcloud iam service-accounts keys create connect-register-key.json \ --iam-account SERVICE_ACCOUNT_EMAIL
将 SERVICE_ACCOUNT_EMAIL 替换为您的连接注册服务账号的电子邮件地址。
您的连接和注册服务账号必须被授予舰队宿主项目的 gkehub.admin
角色。这是您要在其中查看和管理集群的 Google Cloud 项目。
如需将 gkehub.admin
角色授予您的连接和注册服务账号,请输入以下命令:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/gkehub.admin"
将 PROJECT_ID 替换为您的舰队宿主项目的 ID。
日志记录和监控服务账号
Anthos clusters on VMware 使用此服务账号将日志和指标从集群导出到 Cloud Logging 和 Cloud Monitoring。
如需创建日志记录监控服务账号,请输入以下命令:
gcloud iam service-accounts create logging-monitoring-sa \ --project=PROJECT_ID
将 PROJECT_ID 替换为您要作为日志记录监控服务账号父项目的 Google Cloud 项目 ID。
如需为日志记录监控服务账号创建 JSON 密钥,请输入以下命令:
gcloud iam service-accounts keys create logging-monitoring-key.json \ --iam-account SERVICE_ACCOUNT_EMAIL
将 SERVICE_ACCOUNT_EMAIL 替换为日志记录和监控服务账号的电子邮件地址。
您的日志记录监控服务账号必须获得日志记录监控项目上的以下角色。这是您要在其中查看集群日志的 Google Cloud 项目。
stackdriver.resourceMetadata.writer
opsconfigmonitoring.resourceMetadata.writer
logging.logWriter
monitoring.metricWriter
monitoring.dashboardEditor
如需向日志记录监控服务账号授予所需角色,请输入以下命令:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/stackdriver.resourceMetadata.writer"
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/opsconfigmonitoring.resourceMetadata.writer"
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/logging.logWriter"
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/monitoring.metricWriter"
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/monitoring.dashboardEditor"
将 PROJECT_ID 替换为日志记录监控项目的 ID。
可选服务账号
用量计量服务账号
Anthos clusters on VMware 使用此服务账号将使用情况数据存储在 BigQuery 数据集中。
如需创建用量计量服务账号,请输入以下命令:
gcloud iam service-accounts create usage-metering-sa \ --project PROJECT_ID
将 PROJECT_ID 替换为您要作为用量计量服务账号父项目的 Google Cloud 项目 ID。
如需为您的用量计量服务账号创建 JSON 密钥,请输入以下命令:
gcloud iam service-accounts keys create usage-metering-key.json \ --iam-account SERVICE_ACCOUNT_EMAIL
将 SERVICE_ACCOUNT_EMAIL 替换为您的用量计量服务账号的电子邮件地址。
您的用量计量服务账号必须获得用量计量项目的 bigquery.dataEditor
角色。这是您要在其中查看用户集群的用量数据的 Google Cloud 项目。
如需向您的用量计量服务账号授予 bigquery.dataEditor
角色,请输入以下命令:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role "roles/bigquery.dataEditor"
将 PROJECT_ID 替换为您的用量计量项目的 ID。
审核日志记录服务账号
Anthos clusters on VMware 使用此服务账号将集群中的 Kubernetes 审核日志发送到 Cloud Audit Logs。
如需创建审核日志记录服务账号,请输入以下命令:
gcloud iam service-accounts create audit-logging-sa \ --project PROJECT_ID
将 PROJECT_ID 替换为您要作为审核日志记录服务账号父项目的 Google Cloud 项目 ID。
如需为审核日志记录服务账号创建 JSON 密钥,请输入以下命令:
gcloud iam service-accounts keys create audit-logging-key.json \ --iam-account SERVICE_ACCOUNT_EMAIL
将 SERVICE_ACCOUNT_EMAIL 替换为审核日志记录服务账号的电子邮件地址。
您无需向审核日志记录服务账号授予任何角色。
Binary Authorization 服务账号
Anthos clusters on VMware 使用此服务账号调用 Binary Authorization API。
如需了解如何创建 Binary Authorization 服务账号,请参阅 GKE On-Prem 中的 Binary Authorization。