本页面介绍了在安装 GKE on AWS 之前需要完成的步骤。
环境
如需安装 GKE on AWS,您需要一个可以在其中安装和运行各种工具的环境。以下步骤假设您在 Linux 或 macOS 上使用 bash shell。如果您无权访问 bash shell 环境,则可以使用 Cloud Shell。
AWS 要求
如需完成本主题,您需要一个具有命令行访问权限的 AWS 账号以及两个与用户集群位于同一区域的 AWS 密钥管理服务 (KMS) 密钥。
如需详细了解其他必需的 AWS 资源,请参阅要求。
配置 AWS
准备工作
在完成本部分之前,请执行以下操作:
- 下载并安装 AWS CLI。运行
aws --version
以确认安装。如果找不到可执行文件,请将aws
工具添加到PATH
。 - 使用
aws configure
配置您的 AWS IAM 凭据和 AWS 地区。
管理员用户权限
GKE on AWS 要求管理服务的创建者具有特定权限。在创建管理服务或用户集群之前,请先创建或获取对符合要求的 AWS IAM 凭据的访问权限。
创建 KMS 密钥
GKE on AWS 需要两个 AWS KMS 密钥。KMS 密钥会对以下数据进行加密:
- 安装过程中使用信封加密的数据。
- 用户集群中的应用层 Secret。
请按照以下步骤创建两个 AWS KMS 密钥。
命令行
在您的 AWS 账号中创建 KMS 密钥。
aws kms create-key
输出包含密钥的元数据。
在上一个命令的输出中,从
Arn
字段中复制密钥的 Amazon 资源名称 (ARN)。例如,us-west-2
区域中的密钥具有 ARNarn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
。使用
aws kms create-alias
为密钥创建别名。您可以使用别名来按名称管理 AWS KMS 密钥。aws kms create-alias \ --alias-name=alias/key-name \ --target-key-id=key-arn
请对其他密钥重复执行上述步骤。
控制台
- 登录 AWS 控制台。
- 导航到 KMS,然后从侧边栏中选择 Customer managed keys。
- 点击 Create Key。
- 保留默认选项。
- 创建完成后,从列表中选择密钥。
- 复制密钥的 ARN。
- 请对其他密钥重复执行上述步骤。
Google Cloud 要求
您的组织定义的安全限制条件可能会导致您无法完成以下步骤。如需了解相关问题排查信息,请参阅在受限的 Google Cloud 环境中开发应用。
准备工作
确保您拥有 Google 账号的 Project Owner 权限,以便在连接 GKE on AWS 环境的 Google Cloud 项目上启用 API。在下面的部分中,您仅使用 Owner 权限创建 GKE on AWS 服务账号。
安装 Google Cloud CLI。
必须为您的 Google Cloud 项目启用 GKE Enterprise API。启用此 API 使您可以在 Google Cloud 项目中使用其他 GKE Enterprise 功能。
创建 GKE on AWS 服务账号
在本部分中,您将为 GKE on AWS 创建三个 IAM 服务账号和密钥。这些服务账号如以下列表所示:
名称 | 角色 | 说明 |
---|---|---|
management-sa
|
gkehub.admin | 管理 Hub 成员资格的权限 |
hub-sa
|
gkehub.connect | 拥有在用户集群和 Hub 之间设置连接的权限。 |
node-sa
|
storage.objectViewer | 访问 Container Registry 的权限。 |
命令行
使用 Google Cloud CLI 进行身份验证。
gcloud auth login &&\ gcloud auth application-default login
系统会两次提示您访问
cloud.google.com
并使用您的 Google 账号进行身份验证。将 Google Cloud 项目设置为环境变量,并使用 gcloud CLI 设置默认 project-id。
export PROJECT_ID=project-id gcloud config set project $PROJECT_ID
将 project-id 的值替换为您的 Google Cloud 项目。
启用 Google Cloud API。
gcloud services enable anthos.googleapis.com gcloud services enable cloudresourcemanager.googleapis.com gcloud services enable gkehub.googleapis.com gcloud services enable gkeconnect.googleapis.com gcloud services enable logging.googleapis.com gcloud services enable monitoring.googleapis.com gcloud services enable serviceusage.googleapis.com gcloud services enable stackdriver.googleapis.com gcloud services enable storage-api.googleapis.com gcloud services enable storage-component.googleapis.com
使用
gcloud
运行以下命令以创建服务账号。gcloud iam service-accounts create management-sa gcloud iam service-accounts create hub-sa gcloud iam service-accounts create node-sa
使用
gcloud
运行以下命令以下载每个服务账号的密钥。gcloud iam service-accounts keys create management-key.json \ --iam-account management-sa@$PROJECT_ID.iam.gserviceaccount.com gcloud iam service-accounts keys create hub-key.json \ --iam-account hub-sa@$PROJECT_ID.iam.gserviceaccount.com gcloud iam service-accounts keys create node-key.json \ --iam-account node-sa@$PROJECT_ID.iam.gserviceaccount.com
向管理服务账号授予角色。
gcloud projects add-iam-policy-binding \ $PROJECT_ID \ --member serviceAccount:management-sa@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/gkehub.admin
向 Hub 服务账号授予角色。
gcloud projects add-iam-policy-binding \ $PROJECT_ID \ --member serviceAccount:hub-sa@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/gkehub.connect
向节点服务账号授予角色。
gcloud projects add-iam-policy-binding \ $PROJECT_ID \ --member serviceAccount:node-sa@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/storage.objectViewer
控制台
- 打开 Google Cloud 控制台 API 库页面。
- 从屏幕顶部的下拉菜单中选择您的首选项目。
找到并启用以下 API。
- Anthos
- Cloud Resource Manager
- Cloud Storage
- Cloud Logging
- Google Cloud Storage JSON API
- GKE Hub
- GKE Connect API
- Service Usage
- Stackdriver
- Stackdriver Monitoring
打开服务账号页面。
接下来,创建服务账号并向
management-sa
服务账号分配角色。- 点击创建服务账号。
- 命名 management-sa 账号并点击创建。此时将显示向此服务账号授予对项目的访问权限屏幕。
- 添加 GKE HUB Admin 角色。
- 点击继续。此时将显示向用户授予访问此服务账号的权限屏幕。
- 点击完成。此时将显示项目的服务账号屏幕。
- 找到包含您的服务账号的电子邮件地址
management-sa@project_id.iam.gserviceaccount.com
的所在行。 - 点击服务账号的 more_vert 操作菜单,然后选择管理密钥。
- 点击添加密钥下拉菜单。
- 点击创建新密钥。
- 选择 JSON 作为密钥类型,然后点击创建。您的浏览器会下载该服务账号密钥。
- 重命名
management-key.json
文件。
接下来,创建服务账号并为
hub-sa
服务账号分配角色。- 点击创建服务账号。
- 命名 hub-sa 账号并点击创建。此时将显示向此服务账号授予对项目的访问权限屏幕。
- 添加 GKE Hub Connection Agent 角色。
- 点击继续。此时将显示向用户授予访问此服务账号的权限屏幕。
- 点击完成。此时将显示项目的服务账号屏幕。
- 找到包含您的服务账号的电子邮件地址
hub-sa@project_id.iam.gserviceaccount.com
的所在行。 - 点击服务账号的 more_vert 操作菜单,然后选择管理密钥。
- 点击添加密钥下拉菜单。
- 点击创建新密钥。
- 选择 JSON 作为密钥类型,然后点击创建。您的浏览器会下载该服务账号密钥。
- 重命名
hub-key.json
文件。
接下来,创建服务账号并为
node-sa
服务账号分配角色。- 点击创建服务账号。
- 命名 node-sa 账号并点击创建。此时将显示向此服务账号授予对项目的访问权限屏幕。
- 添加 Storage Object Viewer 角色。
- 点击完成。此时将显示项目的服务账号屏幕。
- 找到包含您的服务账号的电子邮件地址
node-sa@project_id.iam.gserviceaccount.com
的所在行。 - 点击服务账号的 more_vert 操作菜单,然后选择管理密钥。
- 点击添加密钥下拉菜单。
- 点击创建新密钥。
- 选择 JSON 作为密钥类型,然后点击创建。您的浏览器会下载该服务账号密钥。
- 重命名
node-key.json
文件。
anthos-gke 命令行工具
anthos-gke
是 GKE on AWS 的命令行工具。您可以使用 anthos-gke
创建配置并安装管理服务。anthos-gke
的最新版本为 aws-1.14.1-gke.0。
anthos-gke
命令行工具仅支持 Linux 和 macOS。
从 Cloud Storage 下载二进制文件。
Linux
gsutil cp gs://gke-multi-cloud-release/aws/aws-1.14.1-gke.0/bin/linux/amd64/anthos-gke .
macOS
gsutil cp gs://gke-multi-cloud-release/aws/aws-1.14.1-gke.0/bin/darwin/amd64/anthos-gke .
更新
anthos-gke
的权限并将其复制到/usr/local/bin
。chmod 755 anthos-gke sudo mv anthos-gke /usr/local/bin
确认版本为
aws-1.14.1-gke.0
anthos-gke version
anthos-gke 命令行工具的权限
要使用 anthos-gke
命令行工具,执行命令的用户必须具有 ServiceUsageViewer 和 StorageAdmin 角色。如需将角色添加到 IAM 主账号,请运行以下命令:
gcloud projects add-iam-policy-binding PROJECT_NAME \
--member user:USER_NAME \
--role roles/serviceusage.serviceUsageViewer
gcloud projects add-iam-policy-binding PROJECT_NAME \
--member user:USER_NAME \
--role roles/storage.admin
替换以下内容:
PROJECT_NAME
:您的 Google Cloud 项目USER_NAME
:执行anthos-gke
命令行工具的用户名。如果您使用的是服务账号,请使用serviceAccount:SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com
Terraform
anthos-gke
工具会生成 Terraform 配置文件并调用 terraform
命令行工具。
GKE on AWS 需要高于 v0.14.3 的 Terraform 版本。您可以使用以下命令来检查 Terraform 版本:
terraform version
如果您没有 v0.14.3 或更高版本,请在创建管理服务之前下载并安装 Terraform。
升级 Terraform
如需在安装 GKE on AWS 后升级 Terraform,您必须按顺序通过每个次要版本升级 Terraform 二进制文件。
例如,如果您要将 Terraform 从 v0.12.x 升级到 v0.14.x,则必须暂时安装 v0.13.x。安装 v0.13.x 后,运行 anthos-gke aws
management init
和 anthos-gke aws management apply
。GKE on AWS 会更新您的配置。然后再升级到 v0.14.x。
Kubernetes
GKE on AWS 需要 kubectl
1.17 版或更高版本。您可以运行以下命令来检查 kubectl
版本:
kubectl version --client -o yaml | grep gitVersion
如果您没有 1.17 或更高版本,请安装较新版本的 kubectl
。