前提条件

本页面介绍了在安装 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 密钥。

命令行

  1. 在您的 AWS 账号中创建 KMS 密钥。

    aws kms create-key
    

    输出包含密钥的元数据。

  2. 在上一个命令的输出中,从 Arn 字段中复制密钥的 Amazon 资源名称 (ARN)。例如,us-west-2 区域中的密钥具有 ARN arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

  3. 使用 aws kms create-alias 为密钥创建别名。您可以使用别名来按名称管理 AWS KMS 密钥。

    aws kms create-alias \
        --alias-name=alias/key-name \
        --target-key-id=key-arn
    
  4. 请对其他密钥重复执行上述步骤。

控制台

  1. 登录 AWS 控制台
  2. 导航到 KMS,然后从侧边栏中选择 Customer managed keys
  3. 点击 Create Key
  4. 保留默认选项。
  5. 创建完成后,从列表中选择密钥。
  6. 复制密钥的 ARN。
  7. 请对其他密钥重复执行上述步骤。

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 的权限。

命令行

  1. 使用 Google Cloud CLI 进行身份验证。

    gcloud auth login &&\
    gcloud auth application-default login
    

    系统会两次提示您访问 cloud.google.com 并使用您的 Google 账号进行身份验证。

  2. 将 Google Cloud 项目设置为环境变量,并使用 gcloud CLI 设置默认 project-id

    export PROJECT_ID=project-id
    
    gcloud config set project $PROJECT_ID
    

    project-id 的值替换为您的 Google Cloud 项目。

  3. 启用 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
    
  4. 使用 gcloud 运行以下命令以创建服务账号。

    gcloud iam service-accounts create management-sa
    gcloud iam service-accounts create hub-sa
    gcloud iam service-accounts create node-sa
    
  5. 使用 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
    
  6. 向管理服务账号授予角色。

    gcloud projects add-iam-policy-binding \
        $PROJECT_ID \
        --member serviceAccount:management-sa@$PROJECT_ID.iam.gserviceaccount.com \
        --role roles/gkehub.admin
    
  7. 向 Hub 服务账号授予角色。

    gcloud projects add-iam-policy-binding \
        $PROJECT_ID \
        --member serviceAccount:hub-sa@$PROJECT_ID.iam.gserviceaccount.com \
        --role roles/gkehub.connect
    
  8. 向节点服务账号授予角色。

    gcloud projects add-iam-policy-binding \
          $PROJECT_ID \
          --member serviceAccount:node-sa@$PROJECT_ID.iam.gserviceaccount.com \
          --role roles/storage.objectViewer
    

控制台

  1. 打开 Google Cloud 控制台 API 库页面
  2. 从屏幕顶部的下拉菜单中选择您的首选项目。
  3. 找到并启用以下 API。

    • Anthos
    • Cloud Resource Manager
    • Cloud Storage
    • Cloud Logging
    • Google Cloud Storage JSON API
    • GKE Hub
    • GKE Connect API
    • Service Usage
    • Stackdriver
    • Stackdriver Monitoring
  4. 打开服务账号页面。

  5. 接下来,创建服务账号并向 management-sa 服务账号分配角色。

    1. 点击创建服务账号
    2. 命名 management-sa 账号并点击创建。此时将显示向此服务账号授予对项目的访问权限屏幕。
    3. 添加 GKE HUB Admin 角色。
    4. 点击继续。此时将显示向用户授予访问此服务账号的权限屏幕。
    5. 点击完成。此时将显示项目的服务账号屏幕。
    6. 找到包含您的服务账号的电子邮件地址 management-sa@project_id.iam.gserviceaccount.com 的所在行。
    7. 点击服务账号的 操作菜单,然后选择管理密钥
    8. 点击添加密钥下拉菜单。
    9. 点击创建新密钥
    10. 选择 JSON 作为密钥类型,然后点击创建。您的浏览器会下载该服务账号密钥。
    11. 重命名 management-key.json 文件。
  6. 接下来,创建服务账号并为 hub-sa 服务账号分配角色。

    1. 点击创建服务账号
    2. 命名 hub-sa 账号并点击创建。此时将显示向此服务账号授予对项目的访问权限屏幕。
    3. 添加 GKE Hub Connection Agent 角色。
    4. 点击继续。此时将显示向用户授予访问此服务账号的权限屏幕。
    5. 点击完成。此时将显示项目的服务账号屏幕。
    6. 找到包含您的服务账号的电子邮件地址 hub-sa@project_id.iam.gserviceaccount.com 的所在行。
    7. 点击服务账号的 操作菜单,然后选择管理密钥
    8. 点击添加密钥下拉菜单。
    9. 点击创建新密钥
    10. 选择 JSON 作为密钥类型,然后点击创建。您的浏览器会下载该服务账号密钥。
    11. 重命名 hub-key.json 文件。
  7. 接下来,创建服务账号并为 node-sa 服务账号分配角色。

    1. 点击创建服务账号
    2. 命名 node-sa 账号并点击创建。此时将显示向此服务账号授予对项目的访问权限屏幕。
    3. 添加 Storage Object Viewer 角色。
    4. 点击完成。此时将显示项目的服务账号屏幕。
    5. 找到包含您的服务账号的电子邮件地址 node-sa@project_id.iam.gserviceaccount.com 的所在行。
    6. 点击服务账号的 操作菜单,然后选择管理密钥
    7. 点击添加密钥下拉菜单。
    8. 点击创建新密钥
    9. 选择 JSON 作为密钥类型,然后点击创建。您的浏览器会下载该服务账号密钥。
    10. 重命名 node-key.json 文件。

anthos-gke 命令行工具

anthos-gke 是 GKE on AWS 的命令行工具。您可以使用 anthos-gke 创建配置并安装管理服务anthos-gke 的最新版本为 aws-1.14.1-gke.0。

anthos-gke 命令行工具仅支持 Linux 和 macOS。

  1. 从 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 .
    
  2. 更新 anthos-gke 的权限并将其复制到 /usr/local/bin

    chmod 755 anthos-gke
    sudo mv anthos-gke /usr/local/bin
    
  3. 确认版本为 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 initanthos-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

后续步骤