创建管理员工作站

本文档介绍如何为 GKE on VMware 创建管理员工作站,该工作站可用于创建集群。

本文档中的步骤使用 gkeadm 命令行工具,该工具可用于 64 位的 Linux、Windows 10、Windows Server 2019 和 macOS 10.15 及更高版本。

此处为完整说明。如需查看创建管理员工作站的简要说明,请参阅创建管理员工作站(快速入门)

准备工作

了解您的 vCenter 服务器地址

了解您的 CA 证书路径

安装 Google Cloud CLI

按照使用多个 Google Cloud 项目中的说明,创建一个或多个 Google Cloud 项目。

规划服务账号

使用 gkeadm 创建管理员工作站时,您可以选择让 gkeadm 为您创建一些服务账号和密钥。在这种情况下,gkeadm 还会向服务账号授予相应的 Identity and Access Management 角色。

作为替代方案,您可以手动创建服务账号和密钥。在这种情况下,您必须向服务账号授予 IAM 角色。

gkeadm 为您创建服务账号相比,手动创建服务账号具有更大的灵活性:

  • 自动创建的服务账号与您的组件访问服务账号具有相同的父 Google Cloud 项目。手动创建服务账号时,您可以选择父 Google Cloud 项目。

  • 自动创建的服务账号都被授予组件访问服务账号的父 Google Cloud 项目的 IAM 角色。这没什么问题,因为这是与您的集群关联的唯一 Google Cloud 项目。但是,如果您要将您的集群与多个 Google Cloud 项目关联,则需要向服务账号授予在所选 Google Cloud 项目上的角色的灵活性。

如果您决定创建自己的服务账号,请按照服务账号和密钥中的说明操作。

无论您是否让 gkeadm 自动为您创建服务账号,您都必须手动创建一个服务账号:您的组件访问服务账号。如需了解如何创建组件访问服务账号并向其授予适当的 IAM 角色,请参阅组件访问服务账号

生成配置文件模板

下载 gkeadm 到当前目录。

生成模板:

./gkeadm create config

上述命令在当前目录中创建了这些文件:

  • credential.yaml
  • admin-ws-config.yaml

填写 credential.yaml

credential.yaml 中,填写 vCenter 用户名和密码。例如:

kind: CredentialFile
items:
- name: vCenter
  username: "my-account-name"
  password: "AadmpqGPqq!a"

填写 admin-ws-config.yaml

admin-ws-config.yaml 中的多个字段已经填充了默认值或生成的值。您可以保留填充的值,也可以根据需要进行更改。

必须填写的字段

填写以下必填字段。如需了解如何填写这些字段,请参阅管理员工作站配置文件

gcp:
   componentAccessServiceAccountKeyPath: "Fill in"
vCenter:
  credentials:
    address: "Fill in"
  datacenter: "Fill in"
  datastore: "Fill in"
  cluster: "Fill in"
  network: "Fill in"
  resourcePool: "Fill in"
  caCertPath: "Fill in"

如果要在 vSphere 虚拟机文件夹中创建管理员工作站,请填写 vCenter.folder 字段:

vCenter:
  folder: "Fill in"

如果您的管理员工作站位于代理服务器后面,请填写 proxyURL 字段:

adminWorkstation:
  proxyURL: "Fill in"

如果您希望管理员工作站从 DHCP 服务器获取其 IP 地址,请将 ipAllocationMode 设置为 "dhcp",并移除 hostconfig 部分:

adminWorkstation:
  network:
    ipAllocationMode: "dhcp"

如果您希望为管理员工作站指定静态 IP 地址,请将 ipAllocationMode 设置为 "static",然后填写 hostconfig 部分:

adminWorkstation:
  network:
    ipAllocationMode: "static"
    hostconfig:
      ip: "Fill in"
      gateway: "Fill in"
      netmask: "Fill in"
      dns:
      - "Fill in"

登录

您设置为 SDK account 属性的 Google 账号称为 SDK 账号gkeadm 命令行工具使用您的 SDK 账号下载管理员工作站 OVA 并在 Google Cloud 项目中启用服务。

如果您选择让 gkeadm 自动为您创建服务账号,则 gkeadm 还会使用您的 SDK 账号创建服务账号和密钥,并向服务账号授予角色。因此,在运行 gkeadm 以创建管理员工作站之前,请务必设置 SDK account 属性。

使用任意 Google 账号登录。这将设置您的 SDK account 属性:

gcloud auth login

验证您的 SDK account 属性是否已正确设置:

gcloud config list

输出会显示 SDK account 属性的值。例如:

[core]
account = my-name@google.com
disable_usage_reporting = False
Your active configuration is: [default]

向您的 SDK 账号授予角色

您的 SDK 账号必须具有组件访问服务账号的父 Google Cloud 项目的以下 IAM 角色。这样,gkeadm 就可以在 Google Cloud 项目上启用服务。

  • serviceUsage.serviceUsageAdmin

如果您选择让 gkeadm 自动为您创建服务账号,则您的 SDK 账号还必须在组件访问服务账号的父项目中拥有以下角色。这样,gkeadm 就可以创建服务账号和密钥。

  • resourcemanager.projectIamAdmin
  • iam.serviceAccountCreator
  • iam.serviceAccountKeyAdmin

要向 Google Cloud 项目授予角色,您必须拥有 Google Cloud 项目的某些权限。如需了解详情,请参阅授予、更改和撤消对资源的访问权限

如果您拥有所需的权限,则可以自行授予这些角色。否则,必须由您所在组织中的其他人为您授予这些角色。

如需向 SDK 账号授予所需的角色,请执行以下操作:

Linux 和 macOS

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="user:ACCOUNT" \
    --role="roles/serviceusage.serviceUsageAdmin"

Windows

gcloud projects add-iam-policy-binding PROJECT_ID ^
    --member="user:ACCOUNT" ^
    --role="roles/serviceusage.serviceUsageAdmin"

替换以下内容:

  • PROJECT_ID:组件访问服务账号的父级 Google Cloud 项目的 ID

  • ACCOUNT:您的 SDK 账号

如果您希望 gkeadm 自动创建服务账号,则授予其他角色

Linux 和 macOS

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="user:ACCOUNT" \
    --role="roles/resourcemanager.projectIamAdmin"

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="user:ACCOUNT" \
    --role="roles/iam.serviceAccountCreator"

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="user:ACCOUNT" \
    --role="roles/iam.serviceAccountKeyAdmin"

Windows

gcloud projects add-iam-policy-binding PROJECT_ID ^
    --member="user:ACCOUNT" ^
    --role="roles/resourcemanager.projectIamAdmin"

gcloud projects add-iam-policy-binding PROJECT_ID ^
    --member="user:ACCOUNT" ^
    --role="roles/iam.serviceAccountCreator"

gcloud projects add-iam-policy-binding PROJECT_ID ^
    --member="user:ACCOUNT" ^
    --role="roles/iam.serviceAccountKeyAdmin"

替换以下内容:

  • PROJECT_ID:组件访问服务账号的父项目 ID

  • ACCOUNT:您的 SDK 账号

创建管理员工作站

输入下面的命令来创建管理员工作站。如果您希望 gkeadm 为您创建服务账号,请添加 --auto-create-service-accounts 标志。如果您希望手动创建您自己的服务账号,请省略此标志。

./gkeadm create admin-workstation [--auto-create-service-accounts]

输出内容中会包含有关管理员工作站创建过程的详细信息:

...
Getting ... service account...
...
********************************************************************
Admin workstation is ready to use.

Admin workstation information saved to /usr/local/google/home/me/my-admin-workstation
This file is required for future upgrades
SSH into the admin workstation with the following command:
ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.5.1
********************************************************************

与管理员工作站建立 SSH 连接

在上述输出内容的末尾附近,有一条命令,您可以使用该命令通过 SSH 连接到管理员工作站。现在输入该命令。例如:

ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.5.1

列出管理员工作站上的文件:

ls -1

在输出内容中,您可以看到两个集群配置文件、您的 CA 证书文件和您的组件访问服务账号的 JSON 密钥文件。如果 gkeadm 为您创建了服务账号,您还可以看到这些服务账号的 JSON 密钥文件。例如:

admin-cluster.yaml
user-cluster.yaml
vcenter-ca-cert.pem
component-access-key.json

验证 gkeadm 是否已在管理员工作站上激活您的组件访问服务账号:

gcloud config get-value account

将 JSON 密钥文件复制到管理员工作站

在创建集群之前,服务账号的 JSON 密钥文件必须位于管理员工作站的主目录中。

组件访问服务账号的密钥已在管理员工作站中。

如果您在运行 gkeadm create admin-workstation 时添加了 --auto-create-service-accounts 标志,则以下服务账号的密钥已经在管理员工作站的主目录中。否则,您必须手动将密钥复制到管理员工作站的主目录中:

  • 连接和注册服务账号
  • 日志记录和监控服务账号

如果您创建了以下任一服务账号,则必须手动将这些服务账号的密钥复制到管理员工作站的主目录中:

  • 用量计量服务账号
  • 审核日志记录服务账号
  • Binary Authorization 服务账号

从备份文件恢复管理员工作站

默认情况下,升级管理员工作站时,gkeadm 升级命令也会保存备份文件。之后,如果您不再拥有管理员工作站,或者丢失了升级后的管理员工作站中的部分文件,则可以使用该备份文件创建一个管理员工作站,该工作站会立即恢复升级后的数据。

如需从备份文件创建管理员工作站,请运行以下命令:

gkeadm create admin-workstation --restore-from-backup ADMIN_WORKSTATION_NAME-backup.tar.gz

ADMIN_WORKSTATION_NAME 替换为管理员工作站的名称。

后续步骤

创建管理员集群