本页面介绍如何创建安装 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.admin
和 serviceuseage.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.writer
、logging.logWriter
和 monitoring.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"