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

与现有基础架构集成

在本主题中,您将配置一个具有公共和专用子网的现有 AWS Virtual Private Cloud (VPC),并运行 anthos-gke 以完成管理服务的安装。

准备工作

如需完成以下步骤,您需要:

  • AWS IAM 权限(如要求中所述)。

  • 具有以下各项的现有 AWS VPC

    • 至少一个公共子网。
    • 至少一个专用子网。
    • 具有到公共子网的路由的互联网网关。
    • 具有到专用子网的路由的 NAT 网关。
    • 已启用 DNS 主机名

    如需详细了解如何配置 AWS VPC,请参阅具有公共和专用子网的 VPC

  • 现有 VPC 的公共和专用子网 ID。例如 subnet-1234567890abcdefg

  • 选择或创建 AWS 安全组,以允许 SSH(端口 22)从您要管理 GKE on AWS 集群的安全组或 IP 范围入站。

创建工作区

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

     apiVersion: multicloud.cluster.gke.io/v1
     kind: AWSManagementService
     metadata:
       name: management
     spec:
       version: aws-1.5.0-gke.6
       region: AWS_REGION
       authentication:
         awsIAM:
           adminIdentityARNs:
           - ADMIN_AWS_IAM_ARN
       kmsKeyARN: KMS_KEY_ARN
       databaseEncryption:
         kmsKeyARN: DATABASE_KMS_KEY_ARN
       securityGroupIDs:
       - SECURITY_GROUP_IDS
       googleCloud:
         projectID: GCP_PROJECT_ID
         serviceAccountKeys:
           managementService: MANAGEMENT_KEY_PATH
           connectAgent: HUB_KEY_PATH
           node: NODE_KEY_PATH
       existingVPC:
         subnetID: VPC_SUBNET_ID
         allowedSSHSecurityGroupIDs:
         - SSH_SECURITY_GROUP
       # Optional
       bastionHost:
         subnetID: BASTION_HOST_SUBNET_ID
         allowedSSHCIDRBlocks:
         - SSH_CIDR_BLOCK
       proxy: PROXY_JSON_FILE
    

    替换以下值:

    • AWS_REGION 替换为要在其中运行集群的 AWS 地区
    • ADMIN_AWS_IAM_ARN 替换为管理员 AWS IAM 密钥的 Amazon 资源名称。
    • KMS_KEY_ARN 替换为可在创建管理服务时保护管理服务的数据的 AWS KMS 密钥的 Amazon 资源名称。
    • DATABASE_KMS_KEY_ARN 替换为用于保护 etcd 数据库的 AWS KMS 密钥的 Amazon 资源名称。
    • SECURITY_GROUP_IDS 替换为允许访问管理服务虚拟机的其他安全组 ID。
    • GCP_PROJECT_ID 替换为托管您的 Anthos 环境的 Google Cloud 项目。
    • MANAGEMENT_KEY_PATH 替换为您的 Google Cloud 管理服务帐号密钥的位置。
    • HUB_KEY_PATH 替换为您的 Google Cloud Connect 服务帐号密钥的位置。
    • NODE_KEY_PATH 替换为您的 GKE on AWS 节点服务帐号密钥的位置。
    • VPC_SUBNET_ID 替换为运行管理服务的子网 ID。
    • SSH_SECURITY_GROUP 替换为管理服务实例中允许 SSH 访问的安全组 ID 列表。
    • BASTION_HOST_SUBNET_ID 替换为堡垒主机在其中运行的子网 ID。确保 VPC_SUBNET_ID 允许来自 BASTION_HOST_SUBNET_ID 的入站连接。
    • SSH_CIDR_BLOCK 替换为堡垒主机允许其入站 SSH 连接的 CIDR 地址块。例如 203.0.113.0/24。如果要允许来自任意 IP 地址的 SSH 连接,请使用 0.0.0.0/0
    • PROXY_JSON_FILE 替换为代理配置文件的相对路径。
  2. 运行 anthos-gke aws management init 以创建配置文件:

    anthos-gke aws management init
    
  3. 运行 anthos-gke aws management apply 以创建集群。

    anthos-gke aws management apply
    

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

使用集群名称标记您的子网

如果您是将现有 AWS 子网与 AWS on GKE 配合使用,并要创建负载平衡器,您需要使用您的管理服务名称标记您的 VPC 和子网。如果您使用 anthos-gke 创建了 VPC 或已标记您的子网,请跳过此步骤。

如需标记您的子网,请执行以下步骤:

  1. 切换到您的 GKE on AWS 配置所在的目录。 您在安装管理服务时创建了此目录。

    cd anthos-aws

  2. 将您的集群 ID 导出为环境变量 $CLUSTER-ID

      export CLUSTER_ID=$(terraform output cluster_id)
    
  3. 将您的 AWS VPC ID 导出为环境变量 $VPC_ID

      export VPC_ID=$(terraform output vpc_id)
    
  4. 使用 aws CLI 工具获取您的专用子网 ID。

      aws ec2 describe-subnets \
          --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*private*" \
          --query "Subnets[*].SubnetId" \
          --output text
    
  5. 使用集群 ID 标记您的子网。针对您的每个子网运行以下命令。

      aws ec2 create-tags \
          --resources SUBNET_IDS \
          --tags Key=gke:multicloud:cluster-id,Value=$CLUSTER_ID
    

    SUBNET_IDS 替换为子网 ID 列表,以空格分隔。例如:subnet-012345678abcdef subnet-abcdef123456789 subnet-123456789abcdef

连接到管理服务

GKE on AWS 文档假定您在 localhost 端口 8118 使用 SSH 隧道访问集群。如果您使用其他类型的连接方式连接 VPC(例如直接互连、VPN 或其他方法),则可以从命令中移除 env HTTP_PROXY=http://localhost:8118 行。

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

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

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

如果您要使用堡垒主机来设置 SSH 隧道,请先anthos-gke.yaml 中配置主机。接着,通过执行以下步骤,创建脚本以打开隧道:

  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 配置所在的目录。

    cd anthos-aws

后续步骤