创建服务帐号和密钥

本页面介绍如何创建安装 GKE On-Prem 所需的 Google Cloud 服务帐号和密钥。

通过 SSH 连接到管理员工作站

通过 SSH 连接到管理员工作站:

ssh -i ~/.ssh/vsphere_workstation ubuntu@[IP_ADDRESS]

其中,[IP_ADDRESS] 是您的管理员工作站的 IP 地址。

在管理员工作站上完成本主题中的所有其余步骤。

登录

使用您的帐号凭据登录 Google Cloud:

gcloud auth login

服务帐号概览

在安装 GKE On-Prem 之前,您需要在 Google Cloud 项目中创建四个服务帐号。您还需要为每个服务帐号创建一个 JSON 密钥。以下是您需要的服务帐号:

  • 已列入许可名单的服务帐号
  • 连接服务帐号
  • 注册服务帐号
  • Google Cloud 的运维套件服务帐号

列出您的服务帐号:

gcloud iam service-accounts list

输出会显示您的服务帐号的电子邮件地址:

whitelisted-service-account@my-gcp-project.iam.gserviceaccount.com
some-other-service-account@my-gcp-project.iam.gserviceaccount.com
...

记下每个帐号的电子邮件地址。

已列入许可名单的服务帐号

您已经拥有一个已列入许可名单的服务帐号

为已列入许可名单的服务帐号创建密钥:

gcloud iam service-accounts keys create whitelisted-key.json \
   --iam-account [ALLOWLISTED_SERVICE_ACCOUNT_EMAIL]

其中,[ALLOWLISTED_SERVICE_ACCOUNT_EMAIL] 是已列入许可名单的服务帐号的电子邮件地址。

Connect 服务帐号

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

创建您的 Connect 服务帐号:

gcloud iam service-accounts create connect-service-account

为您的 Connect 服务帐号创建密钥:

gcloud iam service-accounts keys create connect-key.json \
   --iam-account [Connect_SERVICE_ACCOUNT_EMAIL]

其中,[Connect_SERVICE_ACCOUNT_EMAIL] 是您的 Connect 服务帐号的电子邮件地址。

注册服务帐号

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

创建您的注册服务帐号:

gcloud iam service-accounts create register-service-account

为注册服务帐号创建密钥:

gcloud iam service-accounts keys create register-key.json \
   --iam-account [REGISTER_SERVICE_ACCOUNT_EMAIL]

其中,[REGISTER_SERVICE_ACCOUNT_EMAIL] 是您的注册服务帐号的电子邮件地址。

Google Cloud 的运维套件服务帐号

Connect 使用此服务帐号通过 GCP 项目将集群日志从集群导出到 Stackdriver。

创建您的 Google Cloud 的运维套件服务帐号:

gcloud iam service-accounts create stackdriver-service-account

为您的 Google Cloud 运维套件服务帐号创建密钥:

gcloud iam service-accounts keys create stackdriver-key.json \
   --iam-account [Google Cloud's operations suite_SERVICE_ACCOUNT_EMAIL]

其中,[Google Cloud's operations suite_SERVICE_ACCOUNT_EMAIL] 是 Google Cloud 的运营套件服务帐号的电子邮件地址。

此时,您已经在 Google Cloud 项目中创建了四个服务帐号,并且您的管理员工作站上的每个服务帐号都有一个 JSON 密钥。

将 Identity and Access Management 角色分配给您的服务帐号

您的每个服务帐号都需要拥有特定的 IAM 角色。最好为每个服务帐号授予它所需的最少角色组。

首先,列出您的 Google Cloud 项目中的服务帐号:

gcloud iam service-accounts list

输出会显示您的服务帐号的电子邮件地址:

whitelisted-service-account@my-gcp-project.iam.gserviceaccount.com
register-service-account@my-gcp-project.iam.gserviceaccount.com
connect-service-account@my-gcp-project.iam.gserviceaccount.com
stackdriver-service-account@my-gcp-project.iam.gserviceaccount.com

记录每个帐号的电子邮件地址。对于以下各个部分,您需要提供相关帐号的电子邮件地址。

注册服务帐号

向您的注册服务帐号授予 gkehub.adminserviceuseage.serviceUsageViewer 角色:

gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[REGISTER_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/gkehub.admin"
gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[REGISTER_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/serviceusage.serviceUsageViewer"

连接服务帐号

向您的 Connect 服务帐号授予 gkehub.connect 角色:

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

Google Cloud 的运维套件服务帐号

向您的 Google Cloud 运维套件服务帐号授予 stackdriver.resourceMetadata.writerlogging.logWritermonitoring.metricWriter 角色:

gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[Google Cloud's operations suite_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/stackdriver.resourceMetadata.writer"
gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[Google Cloud's operations suite_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/logging.logWriter"
gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[Google Cloud's operations suite_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/monitoring.metricWriter"