新版 GKE on AWS 已于 10 月 2 日发布。如需了解详情,请参阅版本说明

前提条件

本页面介绍安装 GKE on AWS 之前需要满足的前提条件。

环境

以下说明假设您在 Linux 或 macOS 上使用 bash shell。如果您无法访问常规 shell 环境,可以使用 Cloud Shell

AWS 要求

如需完成本主题,您需要一个具有命令行访问权限的 AWS 帐号以及两个与 GKE on 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 密钥会对以下数据进行加密:

  • 安装过程中使用信封加密的数据。
  • GKE on AWS 集群上的应用层 Secret。

请按照以下步骤创建两个 AWS KMS 密钥。

命令行

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

    aws kms create-key
    

    输出包含密钥的元数据。

  2. 在上一个命令的输出中,从 Arn 字段中复制密钥的 Amazon 资源名称 (ARN)。

  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 帐号的 Project Owner 权限,以便在连接 GKE on AWS 组件的 Google Cloud 项目上启用 API。

  • 安装 Cloud SDK

  • 必须为您的 Google Cloud 项目启用 Anthos API。启用此 API 使您可以在 Cloud 项目中使用其他 Anthos 功能。

创建 GKE on AWS 服务帐号

在本部分中,您将为 GKE on AWS 创建三个 IAM 服务帐号和密钥。这些服务帐号如以下列表所示:

名称 角色 说明
management-sa gkehub.admin,
serviceusage.serviceUsageViewer
拥有管理 Hub 成员资格以及验证 Google Cloud API 是否已启用的权限。
hub-sa gkehub.connect 拥有在 GKE on AWS 集群和 Hub 之间设置连接的权限。
node-sa storage.objectViewer 访问 Container Registry 的权限。

命令行

  1. 使用 gcloud 命令行工具进行身份验证。

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

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

  2. 将 Google Cloud 项目设置为环境变量,并使用 gcloud 工具设置默认 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
    gcloud projects add-iam-policy-binding \
        $PROJECT_ID \
        --member serviceAccount:management-sa@$PROJECT_ID.iam.gserviceaccount.com \
        --role roles/serviceusage.serviceUsageViewer
    
  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 Console 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 和 Service Usage Viewer 角色。
    4. 点击继续。此时将显示向用户授予访问此服务帐号的权限屏幕。
    5. 点击完成。此时将显示项目的服务帐号屏幕。
    6. 点击您的服务帐号的电子邮件地址 management-sa@project_id.iam.gserviceaccount.com
    7. 点击添加密钥 -> 创建新密钥。此时将显示为 management-sa 创建私钥对话框。
    8. 选择 JSON 作为密钥类型,然后点击创建。您的浏览器会下载该服务帐号密钥。
    9. 重命名 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. 点击添加密钥 -> 创建新密钥。此时将显示为 hub-sa 创建私钥对话框。
    8. 选择 JSON 作为密钥类型,然后点击创建。您的浏览器会下载该服务帐号密钥。
    9. 重命名 hub-key.json 文件。
  7. 接下来,创建服务帐号并为 node-sa 服务帐号分配角色。

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

Anthos GKE 命令行工具

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

  1. 从 Cloud Storage 下载二进制文件。

    Linux

    gsutil cp gs://gke-multi-cloud-release/aws/aws-1.5.0-gke.6/bin/linux/amd64/anthos-gke .
    

    macOS

    gsutil cp gs://gke-multi-cloud-release/aws/aws-1.5.0-gke.6/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.5.0-gke.6

    anthos-gke version
    

Terraform

GKE on AWS 要求 Terraform 0.12.28 或更高版本。在开始之前,下载并安装 Terraform。

anthos-gke 工具会生成 Terraform 配置文件。该配置是声明式的,可以进行版本控制和审核。

Kubernetes

GKE on AWS 要求 kubectl 1.16 或更高版本。您可以运行以下命令来检查 kubectl 版本:

kubectl version --client -o yaml | grep gitVersion

如果您没有 1.16 或更高版本,请安装较新版本的 kubectl

后续步骤