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

安装管理服务

管理服务可创建、更新和删除 GKE on AWS 集群。本主题介绍如何在专用 AWS Virtual Private Cloud (VPC) 内创建管理服务。如果您已有 VPC,请改为参阅与现有基础架构集成

准备工作

在开始使用 GKE on AWS 之前,请确保您已执行以下任务:

  • 完成前提条件
  • 使用 gcloud 命令行工具进行身份验证。
    gcloud auth login &&\
          gcloud auth application-default login

您需要的值

如需完成本主题,您需要具备前提条件中的以下各项:

  • KMS 密钥 ARN
  • Google Cloud 服务帐号密钥
  • Google Cloud 项目
  • awsterraformanthos-gke 命令行工具已安装和配置。
  • GKE on AWS 在其中创建管理集群的 AWS 地区和可用性区域。

配置管理服务

您可以使用 YAML 文件配置 GKE on AWS 管理服务。该文件类似于 Kubernetes 自定义资源配置,但它不是资源的表示法。

  1. 为 GKE on AWS 配置创建一个空目录,然后切换到该目录。

    mkdir anthos-aws && \
    cd anthos-aws
    
  2. 在文本编辑器中创建名为 anthos-gke.yaml 的文件。将以下内容粘贴到此文件中。

     apiVersion: multicloud.cluster.gke.io/v1
     kind: AWSManagementService
     metadata:
       name: management
     spec:
       version: ANTHOS_CLI_VERSION
       region: AWS_REGION
       authentication:
         awsIAM:
           adminIdentityARNs:
           - ADMIN_AWS_IAM_ARN
       kmsKeyARN: KMS_KEY_ARN
       databaseEncryption:
         kmsKeyARN: DATABASE_KMS_KEY_ARN
       googleCloud:
         projectID: GCP_PROJECT_ID
         serviceAccountKeys:
           managementService: MANAGEMENT_KEY_PATH
           connectAgent: HUB_KEY_PATH
           node: NODE_KEY_PATH
       dedicatedVPC:
         vpcCIDRBlock: VPC_CIDR_BLOCK
         availabilityZones:
         - ZONE_1
         - ZONE_2
         - ZONE_3
         privateSubnetCIDRBlocks:
         - PRIVATE_CIDR_BLOCK_1
         - PRIVATE_CIDR_BLOCK_2
         - PRIVATE_CIDR_BLOCK_3
         publicSubnetCIDRBlocks:
         - PUBLIC_CIDR_BLOCK_1
         - PUBLIC_CIDR_BLOCK_2
         - PUBLIC_CIDR_BLOCK_3
       # Optional
       bastionHost:
         allowedSSHCIDRBlocks:
         - SSH_CIDR_BLOCK
       proxy: PROXY_JSON_FILE # optional
    

    替换以下值:

    • ANTHOS_CLI_VERSION 替换为您的 anthos-gke 工具的版本。如需获取版本,请运行 anthos-gke version

    • AWS_REGION 替换为要在其中运行集群的 AWS 地区

    • ADMIN_AWS_IAM_ARN 替换为用户的 Amazon 资源名称,该用户具有 AWS IAM 权限,可创建管理服务。如需获取对 aws 工具进行身份验证的用户的 ARN,请运行 aws sts get-caller-identity

    • KMS_KEY_ARN 替换为可在创建期间保护管理服务的数据的 AWS KMS 密钥的 Amazon 资源名称。
      这不是 AliasARN。如果您没有 ARN,请运行 aws kms list-keys 以获取 keyArn。

    • DATABASE_KMS_KEY_ARN 替换为保护管理服务的 etcd 数据库的 AWS KMS 密钥的 Amazon 资源名称。
      这不是 AliasARN。如果您没有 ARN,请运行 aws kms list-keys 以获取 keyArn。

    • GCP_PROJECT_ID 替换为托管您的 Anthos 环境的 Google Cloud 项目。

    • MANAGEMENT_KEY_PATH 替换为您的 Google Cloud 管理服务帐号密钥的位置。

    • HUB_KEY_PATH 替换为您的 Google Cloud Connect 服务帐号密钥的位置。

    • NODE_KEY_PATH 替换为您的 GKE on AWS 节点服务帐号密钥的位置。

    • VPC_CIDR_BLOCK 替换为 anthos-gke 创建的 AWS VPC IP 地址的总 CIDR 范围。例如 10.0.0.0/16。如需了解详情,请参阅 AWS 文档中的 VPC 和子网基础知识

    • ZONE_1ZONE_2ZONE_3 替换为要在其中创建节点和控制层面的 AWS EC2 可用性区域。GKE on AWS 会在这些区域中创建子网。当您使用 anthos-gke 为用户集群生成配置时,GKE on AWS 会在这些可用性区域中创建控制层面和节点池。
      如果要使用 anthos-gke 在一个区域中创建用户集群,则可以移除 ZONE_2ZONE_3

    • PRIVATE_CIDR_BLOCK_1PRIVATE_CIDR_BLOCK_2PRIVATE_CIDR_BLOCK_3 替换为专用子网的 CIDR 地址块。GKE on AWS 组件(如管理服务)在专用子网中运行。此子网必须位于 vpcCIDRBlock 中指定的 VPC 的 CIDR 范围内。每个可用性区域都需要一个子网。例如 10.0.1.0/24

    • PUBLIC_CIDR_BLOCK_1PUBLIC_CIDR_BLOCK_2PUBLIC_CIDR_BLOCK_3 替换为您的公共子网的 CIDR 地址块。每个可用性区域都需要一个子网。公共子网向 AWS 网络 ACL安全组中指定的安全组和地址范围公开负载平衡器等集群服务。例如 10.0.100.0/24

    • SSH_CIDR_BLOCK 替换为允许到堡垒主机的入站 SSH 连接的 CIDR 地址块。例如 203.0.113.0/24。如果要允许来自任意 IP 地址的 SSH 连接,请使用 0.0.0.0/0

    • (可选)将 PROXY_JSON_FILE 替换为代理配置文件的相对路径。如果您不使用代理,请删除此行。

  3. 运行 anthos-gke aws management init 以生成具有其他配置的 anthos-gke.status.yaml 文件。init 命令还会验证 anthos-gke.yaml 文件中的 AWSManagementService 对象。

    anthos-gke aws management init
    
  4. 运行 anthos-gke aws management apply 以在 AWS 上创建管理服务。

    anthos-gke aws management apply
    

    anthos-gke aws management apply 命令最多可能需要十分钟才能完成。命令完成后,您的管理服务会在 AWS 上运行。

连接到管理服务

接下来,使用 anthos-gke 连接到 GKE on AWS 管理服务并进行身份验证。

使用默认设置创建管理服务时,控制层面具有专用 IP 地址。此 IP 地址无法从 AWS VPC 外部访问。如需访问 GKE on AWS 资源,请参阅以下说明。

如果您在专用 VPC 中创建管理服务,则 GKE on AWS 会在公共子网中添加一个堡垒主机。

如需连接到您的管理服务,请执行以下步骤:

  1. 使用 terraform 生成一个脚本,用于打开指向堡垒主机的 SSH 隧道:

    terraform output bastion_tunnel > bastion-tunnel.sh
    chmod 755 bastion-tunnel.sh
    

    Terraform 会创建 bastion-tunnel.sh 脚本,该脚本引用 ~/.ssh/anthos-gke 中的堡垒主机的 SSH 密钥。

  2. 要打开隧道,请运行 bastion-tunnel.sh 脚本。隧道会将内容从 localhost:8118 转发到堡垒主机。

    如需打开堡垒主机的隧道,请运行以下命令:

    ./bastion-tunnel.sh -N
    

    来自 SSH 隧道的消息会显示在此窗口中。准备好关闭连接后,请使用 Control+C 或关闭窗口来停止该进程。

  3. 打开新终端,并将目录切换到您的 GKE on AWS 配置所在的目录。

  4. 生成 kubeconfig 以进行身份验证。使用 anthos-gke 将凭据附加到存储在 ~/.kube/config 中的配置。

    anthos-gke aws management get-credentials
    
  5. 使用 kubectl 检查是否可以连接到管理服务。

    env HTTP_PROXY=http://localhost:8118 \
    kubectl cluster-info
    

    输出包括管理服务 API 服务器的网址。

后续步骤