IaC with Terraform 22

Automate Provisioning EKS cluster with Terraform — Part 3

ZONGRU Li
8 min readJun 27, 2023

這篇筆記就是要到AWS Console上面檢視EKS Cluster建立結果

並且佈署一個Nginx來連線測試

這邊為了觀察方便,參考講師改到一個沒用過的Region來建置EKS

執行實際的建置:

#執行Terraform建置EKS到倫敦Region,前篇看過plan了,所以省去確認(大約要10~15分鐘):
terraform apply --auot-approve
要跑一陣子..

其中額外要記得使用的AWS管理帳號(不是root)要有EKS相關權限IAM開通

(可以看到EKS第二篇筆記)

大約15分鐘左右看到:

順利建置完成

EKS Cluster Overview

順利完成後得到的基礎設施建置內容如下:

登入AWS Web Console切到倫敦區(eu-west-2),然後到EKS服務頁面

接著來檢視一下IAM服務上,Terraform幫我們建立了哪些東西:

接著看到EC2頁面:

看到VPC服務:

再來看到Subnet部分:

再來看到SG:

這些都是為了:

這邊背後到底防火牆怎麼開,就都是自動化建立好,並且遵守最低權限原則

嘗試透過kubectl工具使用這個EKS Cluster

首先要先建立可以跟這座EKS溝通用的kubeconfig檔(可以參考EKS筆記2)

主要前置需要安裝:

  1. AWS CLI
  2. kubectl
  3. aws-iam-authenticator
#執行以下aws工具指令取得該Region指定的EKS Cluster名稱的kubeconfig檔:
aws eks update-kubeconfig --name myapp-eks-cluster --region eu-west-2

然後因為我沒有把kubectl工具加到環境變數去,所以要到該工具目錄執行

並且發現連不到API-Server:

後來嘗試開我本機防火牆到各個SG都沒用

#改用詳細kubectl指令:
kubectl get node -v=10

另外我注意到上面的10.0.1.XXX或有時候是10.0.3.XXXprivate subnet網段

然後看到AWS文件上EKS進到endpoint有這類設定:

LINK

然後發現EKS module有這兩個input,我應該要給true才能連進去:

現在這座是我重建的,看起來有些異常,重建出現的Error log:

看起是是自動發配public IPNode groupEC2有問題

因為我這時候嘗試改成這樣導致的:

但是更新上面的input後至少可以發request

後面再砍掉重來,重建後看到:

再次嘗試kubectl指令溝通(記得要刷新kubeconfig檔)

#刷新 & kubectl指令:
aws eks update-kubeconfig --name myapp-eks-cluster --region eu-west-2
kubectl get node

建立一個測試用的Nginx服務

使用的Nginxyaml如下:

搬到kubectl工具目錄下
#執行建置:
kubectl apply -f nginx-config.yaml

EKS篇章有說過,EKS內當有typeLoadBalancerServer元件被建立時

自動地就會建立AWSLoad Balancer來對應並暴露服務到Cluster之外:

並且可以仔細看到是該Region的所有AZ:

這時候就可以複製其DNS位置:

然後真的打到外面暴露的80 PORTNginx:

這邊我想再重新貼一下EKS筆記那時候做的描述網路的一張圖:

這時候的網路流程圖

就會看到是我們建立的publicSubnet三個其中一個:

Destroy all Components

這邊就體現Terraform的一個非常大的好處是即便建立了55AWS Cloud元件

根本記不起來有哪些

要移除的時候只要...

#在Terraform專案程式路徑執行以下指令即可移除:
terraform destroy --auto-approve

這邊我剛好遇到Terraform刪除卡住,因為沒有拿到provider的回應:

剩下一些subnet及igw跟VPC沒刪完

索性ctrl+c中止重新刪除:

還是卡住:

先暫時手動移除igw,subnet,vpc

後來發現可能是因為ELB卡到,要先手動去刪:

然後就可以透過指令刪除,大概兩秒鐘:

最後還是有因為卡住,手動刪除VPC

#最後還可以執行以下指令確認(刪除後,才執行這指令應該沒有output):
terraform state list

Terraform程式部分就commit推上git

參考課程reference

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet