如果您需要使用AWS彈性Kubernetes服務(Amazon EKS)和Terraform建立集群,那就太好了。使用Terraform EKS模組和其他所需資源,您可以創建一個Terraform配置並通過代碼創建一個EKS集群。
Amazon EKS是一個管理服務,可在AWS上運行Kubernetes,而無需安裝、操作和維護自己的Kubernetes集群。使用Terraform構建EKS集群可以快速、高效且自動化地創建資源。
在本教程中,您將逐步學習如何使用Terraform配置構建EKS集群。讓我們開始吧!
先決條件
這篇文章將是一個逐步教程。如果您想跟著進行,請確保您已經做好了以下準備:
- 一個Amazon Web Services(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
。 - 一個用於 EKS 節點向其他 AWS 服務發出呼叫的 IAM 角色(
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並創建集群了。與所有其他Terraform配置一樣,為了配置AKS集群,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,然後點擊彈性Kubernetes服務菜單項。您應該會看到terraformEKScluster EKS集群。


3. 點擊配置,你應該看到每個組件都成功地創建了,這些組件是你在Terraform配置中定義的,如下所示。



結論
在這個教程中,你已經學會了如何使用Terraform部署AWS EKS集群及其組件。現在你已準備好使用這個EKS集群並部署應用程序了!
你計劃在你新找到的集群上部署哪些應用程序?