使用 Terraform 创建 VPC 和集群

概览

Terraform 是一种开源工具,用于配置 AWS 等云环境并在其上安装诸如 Kubernetes 等软件。您可以配置 AWS 环境,并使用 Terraform 或 GKE on AWS 安装说明在其中创建集群。

本页面介绍如何使用 Terraform 配置您的 AWS 环境,并使用存储在 GitHub 中的示例配置安装集群。如需使用这些脚本,您需要对 Terraform 有基本的了解。具体而言,您必须修改 Terraform 配置文件,以添加您自己的用户和项目信息,并对默认集群配置进行所需的更改。

如需在不使用 Terraform 的情况下配置 AWS 环境并创建集群,请参阅 AWS 前提条件概览和有关创建集群的说明。

脚本的作用

此脚本将 Terraform 配置为创建 AWS VPC 并在其上部署集群。生成的 VPC 满足 GKE on AWS 的所有前提条件,并且其网络拓扑与通过 Google 的 VPC 创建说明手册创建的 VPC 相同。

该脚本集创建的集群具有以下特征:

  • 三个控制层面节点(三个已配置的可用性区域中各一个)。这些节点的类型为 t3.large
  • 一个节点池,其中包含两个类型为 t3.large 的节点。此节点池部署在 AWS us-east-1 区域中,可以自动扩缩到五个节点。

如何更改默认的 VPC 和集群

您可以通过修改相应的 Terraform 文件来更改 Terraform 脚本创建的 VPC 和集群的特性。

  • 通过修改 variables.tf 文件调整区域和可用性区域。
  • 更改 AWS 实例类型
  • 通过修改 modules/vpc 子文件夹中的文件,更改 VPC 的特性,包括子网、可用性区域和负载均衡器。

如需查看通过特定 Google Cloud 区域及其关联的 Kubernetes 版本控制的 AWS 区域列表,请运行以下命令:

gcloud container aws get-server-config --location `GOOGLE_CLOUD_REGION`

GOOGLE_CLOUD_REGION 替换为您希望 GKE on AWS 通过其控制集群的 Google Cloud 区域的名称。

前提条件

  1. 按照 Google Cloud CLI 安装说明安装 Google Cloud CLI。如果您已经安装了该工具,请按照这些说明确保您运行的是 412.0.0 版或更高版本。

  2. 按照 AWS CLI 安装说明安装 AWS CLI。

  3. 创建您的 AWS 访问密钥

  4. 使用以下命令配置本地 AWS 环境:

    aws configure
    

准备 Terraform

  1. 通过运行以下命令来配置 Google Cloud CLI 身份验证:

    gcloud config set project GOOGLE_PROJECT_ID
    gcloud auth application-default login --no-launch-browser
    
  2. 在 Google Cloud 项目中启用所需的服务。

    gcloud --project="GOOGLE_PROJECT_ID" services enable \
      gkemulticloud.googleapis.com \
      gkeconnect.googleapis.com \
      connectgateway.googleapis.com \
      cloudresourcemanager.googleapis.com \
      anthos.googleapis.com \
      logging.googleapis.com \
      monitoring.googleapis.com \
      opsconfigmonitoring.googleapis.com
    

    GOOGLE_PROJECT_ID 替换为您的 Google 项目 ID。

  3. 创建代码库的本地副本并切换到 AWS 文件夹:

    git clone https://github.com/GoogleCloudPlatform/anthos-samples.git
    cd anthos-samples/anthos-multi-cloud/AWS
    

部署 GKE on AWS

  1. 修改 terraform.tfvars 文件中的以下行以替换默认值:

    gcp_project_id = GOOGLE_PROJECT_ID
    admin_users = ["GCP_ACCOUNT_EMAIL"]
    

    替换以下内容:

    • GOOGLE_PROJECT_ID:您的 Google 项目 ID。您可以在 Google Cloud 控制台的信息中心页面左侧找到此信息。

    • ACCOUNT_EMAILS:创建集群后可以登录集群的电子邮件地址列表(以英文逗号分隔),例如 "admin@example.com","operator@example.com"。至少一个地址必须具有 Google Cloud 账号。如需为集群添加其他身份提供方,请参阅使用 GKE Identity Service 管理身份

  2. 初始化并创建 Terraform 方案:

    terraform init
    

    Terraform 会安装任何所需的库,例如 Google Cloud 提供商。

  3. 应用 Terraform 方案以创建 AWS Virtual Private Cloud 和集群:

    terraform apply
    

    按照说明开始创建集群。

安装过程大约需要 12 分钟。当 Terraform 创建完 AWS Virtual Private Cloud 和集群后,它会输出有关集群的信息并创建一个名为 var.sh 的文件。如果创建其他节点池,则可以使用此文件中的值。

如需验证集群是否已成功创建,请观察它是否显示在您的 Google Cloud 项目中的 Google Cloud 控制台的 Kubernetes Engine 页面中。

连接到集群

如需验证与集群的连接并提取其详细信息,请运行以下命令:

   gcloud container fleet memberships get-credentials CLUSTER_NAME
   kubectl get nodes

CLUSTER_NAME 替换为您的集群名称。您可以在 var.sh Terraform 输出文件中找到您的集群名称。

输出包含集群中的节点及其状态的列表。

删除您的集群和 AWS Virtual Private Cloud

在删除集群和 AWS Virtual Private Cloud 之前,您必须移除以下所有项:

  • AWS Virtual Private Cloud 中的任何活跃 AWS 负载均衡器
  • 集群中未使用 Terraform 创建的任何其他节点池
  • AWS Virtual Private Cloud 中未使用 Terraform 创建的任何其他集群

如需移除使用 Terraform 创建的集群和 AWS Virtual Private Cloud,请运行以下命令:

terraform destroy

Terraform 会从节点中排空工作负载,删除主节点池和集群,并删除 AWS Virtual Private Cloud。

为 Cloud Logging 和 Cloud Monitoring 授权

如果要启用 Cloud Logging 和 Cloud Monitoring,则必须在创建集群后向您的 Google Cloud 项目添加允许政策

使用 Google Cloud CLI 添加允许政策:

gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:PROJECT_ID.svc.id.goog[gke-system/gke-telemetry-agent]" \
--role=roles/gkemulticloud.telemetryWriter

PROJECT_ID 替换为您的项目 ID。

后续步骤

如需详细了解 Terraform GKE on AWS 脚本,请参阅