安装管理服务

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

准备工作

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

  • 完成前提条件
  • 使用 Google Cloud CLI 进行身份验证。
    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. 在安装并配置 awsterraformanthos-gke 命令行工具的计算机上打开终端。

  2. 为 GKE on AWS 配置创建一个空目录,然后切换到该目录。 GKE on AWS 文档使用 anthos-aws 作为示例配置目录。

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

     apiVersion: multicloud.cluster.gke.io/v1
     kind: AWSManagementService
     metadata:
       name: management
     spec:
       version: aws-1.14.1-gke.0
       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
    

    替换以下值:

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

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

    • KMS_KEY_ARN 替换为 AWS KMS 密钥的 Amazon 资源名称或可在创建过程保护管理服务数据的 KMS 密钥别名。例如:arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab。如果您没有 ARN,请运行 aws kms list-keys 以检索 ARN 列表。

    • DATABASE_KMS_KEY_ARN 替换为具有 AWS KMS 密钥 的 Amazon 资源名称或可保护管理服务的 etcd 数据库(例如 arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab)的别名。

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

    • 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 会在这些可用区中创建控制平面和节点池(例如 us-east-1a)。
      如果您只想使用 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 替换为代理配置文件的相对路径。如果您不使用代理,请删除此行。

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

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

    anthos-gke aws management apply
    

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

可选字段

上面的 anthos-gke.yaml 文件显示了大多数客户所需的一组典型的字段。anthos-gke.yaml 中的配置还支持许多可选字段。其中包括:

如需详细了解 anthos-gke.yaml 支持的所有字段,请参阅 AWS Management Service 参考文档。

连接到管理服务

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

使用默认设置创建管理服务时,控制层面具有专用 IP 地址,该地址无法从 AWS VPC 外部访问。您可以通过以下三种方法中的任何一种访问管理服务:

如果您在专用 VPC 中创建管理服务,则 GKE on AWS 会在公共子网中自动创建一个堡垒主机。如果您要通过 VPN 或 AWS Direct Connect 连接到管理服务,则不需要此堡垒主机。否则,要通过堡垒主机连接到管理服务,请执行以下步骤:

  1. 使用 terraform 工具生成用于打开到堡垒主机的 SSH 隧道的脚本。选择您的 Terraform 版本,然后运行以下命令:

    Terraform 0.12、0.13

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

    Terraform 0.14.3+

    terraform output -raw 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 -4
    

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

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

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

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

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

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

后续步骤