服务帐号和密钥

本页面介绍在 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 项目中的服务帐号授予角色。

使用 gkeadm 自动创建服务帐号

本页面介绍如何手动创建服务帐号并向服务帐号授予角色。除了手动执行这些步骤外,您还可以在创建管理员工作站时,让 gkeadm 创建一些服务帐号并授予角色。如需了解详情,请参阅创建管理员工作站

组件访问服务帐号

GKE On-Prem 使用此服务帐号代表您从 Container Registry 下载 GKE On-Prem 组件。

如需创建组件访问服务帐号,请输入以下命令:

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 角色。必须拥有以下角色,以便 GKE On-Prem 可以进行预检检查:

  • serviceusage.serviceUsageViewer
  • iam.serviceAccountCreator
  • iam.roleViewer

对于您在集群配置文件中指定的每个 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.serviceAccountCreator"
gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/iam.roleViewer"

请替换以下内容:

  • PROJECT_ID:您在配置文件中指定的某个 Google Cloud 项目的 ID。

  • SERVICE_ACCOUNT_EMAIL:组件访问服务帐号的电子邮件地址。

连接和注册服务帐号

GKE On-Prem 使用此服务帐号向 Google Cloud 注册您的 GKE On-Prem 集群。

如需创建连接注册服务帐号,请输入以下命令:

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 角色。这是要在其中查看和管理 GKE On-Prem 集群的 Google Cloud 项目。

如需将 gkehub.admin 角色授予您的连接和注册服务帐号,请输入以下命令:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/gkehub.admin"

PROJECT_ID 替换为您的连接项目 ID。

连接和代理服务帐号

GKE On-Prem 使用此服务帐号来维护 GKE On-Prem 与 Google Cloud 之间的连接。

如需创建连接代理服务帐号,请输入以下命令:

gcloud iam service-accounts create connect-agent-sa \
    --project PROJECT_ID

PROJECT_ID 替换为您要作为连接代理服务账号父级项目的 Google Cloud 项目的 ID。

如需为您的连接代理服务帐号创建 JSON 密钥,请输入以下命令:

gcloud iam service-accounts keys create connect-agent-key.json \
    --iam-account SERVICE_ACCOUNT_EMAIL

SERVICE_ACCOUNT_EMAIL 替换为您的连接和代理服务帐号的电子邮件地址。

您的连接和代理服务帐号必须获得连接项目上的 gkehub.connect 角色。这是要在其中查看和管理 GKE On-Prem 集群的 Google Cloud 项目。

如需将 gkehub.connect 角色授予您的连接和代理服务帐号,请输入以下命令:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/gkehub.connect"

PROJECT_ID 替换为您的连接项目 ID。

日志记录和监控服务帐号

GKE On-Prem 使用此服务帐号将日志和指标从集群导出到 Cloud LoggingCloud 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 替换为日志记录和监控服务帐号的电子邮件地址。

您的日志记录监控服务帐号必须获得日志记录监控项目上的以下角色。这是要在其中查看 GKE On-Prem 集群日志的 Google Cloud 项目。

  • stackdriver.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/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。

可选服务帐号

用量计量服务帐号

GKE On-Prem 使用此服务帐号将使用情况数据存储在 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 角色。这是您要在其中查看 GKE On-Prem 集群的使用情况数据的 Google Cloud 项目。

如需向您的用量计量服务帐号授予 bigquery.dataEditor 角色,请输入以下命令:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/bigquery.dataEditor"

PROJECT_ID 替换为您的用量计量项目的 ID。

审核日志记录服务帐号

GKE On-Prem 使用此服务帐号将集群中的 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 服务帐号

GKE On-Prem 使用此服务帐号调用 Binary Authorization API

如需了解如何创建 Binary Authorization 服务帐号,请参阅 GKE On-Prem 中的 Binary Authorization