如果您需要使用AWS弹性Kubernetes服务(Amazon EKS)和Terraform建立集群,那您运气不错。使用Terraform EKS模块和所有其他所需资源,您可以创建一个Terraform配置,并使用代码创建一个AKS集群。
Amazon EKS是在AWS上运行Kubernetes的托管服务,无需安装、运营和维护自己的Kubernetes集群。使用Terraform构建EKS集群可以让您快速、高效地创建资源,并采用自动化的方法。
在本教程中,您将逐步学习如何使用Terraform配置构建EKS集群。让我们开始吧!
先决条件
本文将是一个逐步教程。如果您想跟着进行,请确保您已经准备好以下内容:
- 一个Amazon Web Service(AWS)账户。
- A code editor – Even though you can use any text editor to work with Terraform configuration files, you should consider Visual Studio (VS) Code as it understands the HCL Terraform language well.
- Terraform – 本教程将使用在Ubuntu 18.04.5 LTS上运行的Terraform v0.14.9,但任何安装了Terraform的操作系统都应该可以工作。
为AWS EKS集群构建Terraform配置
Terraform是一种基础设施即代码工具,允许您安全高效地构建、更改和版本控制基础设施。Terraform使用不同类型的配置文件,每个文件都以纯文本格式(.tf)或JSON格式(.tfjson)编写。
让我们首先创建一个Terraform配置,该配置将在应用时从头开始创建一个AKS集群。
1. 打开终端。
2. 创建一个名为~ / terraform-eks-cluster-demo的文件夹,然后更改(cd
)工作目录到该文件夹。此文件夹将包含您将使用的所有配置文件。
3. 接下来,打开您喜欢的代码编辑器,复制/粘贴以下配置,并将其保存在main.tf文件中,位于〜/ terraform-eks-cluster-demo内。此main.tf文件是AKS集群的Terraform配置。
main.tf文件包含创建EKS集群所需的所有资源:
- 一个 AWS 身份和访问管理(IAM)角色(
terraformekscluster
) – 此资源将由 Amazon EKS 管理,并代表您调用其他 AWS 服务,如 AWS S3、CloudWatch 等,来管理您在该服务中使用的资源。 - 一个 AWS EC2 安全组(
resource "aws_security_group" "eks-cluster"
) – 允许来自 AWS EKS 集群的入站和出站网络流量。您将启动一个名为SG-eks-cluster
的安全组,通过 VPC ID 连接,允许所有流入/流出集群的流量。0.0.0.0/0
是互联网的 IP 地址。 - EKS 集群(
terraformEKScluster
) – 此 EKS 集群将是版本 1.19
。 - 一个IAM 角色,用于 EKS 节点调用其他 AWS 服务(
eks-node-group
)。此角色附加有一个策略,允许在实例上假定临时安全凭证,以访问其他 AWS 资源。 - EKS 集群节点组(
node_group1
) – 此资源通过scaling_config
属性定义集群将具有的节点数。
4. 在 ~/terraform-eks-cluster-demo 中创建另一个文件,命名为 provider.tf 并粘贴以下内容。提供者文件定义了诸如 AWS、Oracle 或 Azure 等的提供者,以便 Terraform 可以与正确的云服务建立连接。
教程将在us-east-2地区创建资源。
5. 通过运行tree
命令验证文件夹中是否存在以下所有必需文件。

使用Terraform EKS模块创建AWS EKS集群
现在您已经准备好Terraform配置文件和变量文件,是时候启动Terraform并创建集群了。为了提供AKS集群,与所有其他Terraform配置一样,Terraform使用三个命令(terraform init → terraform plan → terraform apply)。
现在让我们逐个介绍每个阶段。
1. 打开终端并导航到~/terraform-eks-cluster-demo
目录。 cd ~/terraform-eks-cluster-demo
2. 在相同目录中运行terraform init
命令。 terraform init
命令初始化插件和提供程序,这些插件和提供程序对于处理资源是必需的。
如果一切顺利,您应该会在输出中看到消息 Terraform 初始化成功,如下所示。

3. 现在,运行terraform plan
命令。运行terraform plan
并非必需,但建议为确保配置文件的语法正确性并提供将在基础设施中创建的资源的蓝图。
如果成功,您应该会在输出中看到类似计划:“X”个要添加,“Y”个要更改,或“Z”个要销毁的消息。

4. 接下来,运行terraform apply
以删除训练轮并调用 Terraform 创建 AKS 集群。调用terraform apply
会读取当前目录中的每个配置(*.tf)以编译发送到 AWS 的状态文件,以构建 EKS 集群和其他组件。
AWS 每小时收取每个 EKS 集群 0.10 美元。请务必销毁您创建的任何测试集群!

验证 AWS EKS 集群
此时,您应该已经构建了一个正常运行的 AKS 集群,但让我们进行验证以确保在 AWS 管理控制台中。
1. 打开您喜欢的网络浏览器,导航到AWS 管理控制台并登录。
2. 在顶部的搜索栏中单击,搜索 EKS,然后单击 Elastic Kubernetes Service 菜单项。您应该会看到terraformEKScluster EKS 集群。


3. 单击配置,您应该看到在Terraform配置中成功创建的每个组件,如下所示。



结论
在本教程中,您已经学会了如何使用Terraform部署AWS EKS集群及其组件。现在,您已经准备好使用这个EKS集群并部署应用程序了!
您计划在您新发现的集群上部署什么应用程序?