iT邦幫忙

2025 iThome 鐵人賽

DAY 4
0
Cloud Native

EKS in Practice:IaC × GitOps 實戰 30 天系列 第 4

[Day 4] 準備介紹 EKS,結果 AWS 網路基礎先佔掉半本筆記

  • 分享至 

  • xImage
  •  

在我們使用 EKS 前,會需要其他輔助的 AWS resources 們來讓 EKS 可以正確運作,像是 VPC 網路設定、Route53 設定 DNS record、ACM 來管理憑證等等。這篇文章的重點會放在這些輔助的 infra 介紹,以及基本的 AWS 網路架構。至於使用 EKS 的優點與細節,會在明天的文章裡與 K8s 基本元件一起做介紹。

AWS Service Basic Concept

在使用 AWS 服務時,我們需要先決定所有使用的資源要被放在哪個 Region。每個 region 中都會有多個 Availability Zone (AZ),也就是實體的機房。AWS 會建議我們把資源開在多個 AZ、也就是多個機房中,來提高服務的可用性。詳細的 Region 與 AZ 列表可以看這個頁面的表格介紹。

選擇地區很重要哦!會影響到 end user 連線到服務時的 latency,因此在選 Region 時要盡量靠近 end user 所集中的地區;像是如果 end user 都在台灣的話,就可以選 Taipei region!(只不過最近才開放,所以目前應該只會有比較常見的服務可以用,像是特殊的 bedrock model 可能就還是要去打東京的 api 了)

https://ithelp.ithome.com.tw/upload/images/20250904/20119667etsUYNrgfm.png
後面的概念可以先參考這張極簡架構圖!

VPC

在 AWS 裡,最基本的私有雲網路設定要從 VPC 開始講起。我們的 EKS 也會被開在一個 VPC 裡,而 VPC 需要的基礎知識有下列幾個:

  • CIDR & Subnets:CIDR 用於指定 subnet 的 IP 位址範圍,而 subnet 則是用於把網路切割成更小的子網路,進而達到限制存取等的效果。而每個 subnet 可以存在於一個 AZ 中,不會有 subnet 跨多個 AZ 的情況發生(當年就是因為沒意識到這件事被老大電過)。
  • Internet Gateway:Internet Gateway 是 VPC 與 Internet 之間的橋樑,可讓 VPC 內的 instance 能與外部網路通訊,並且讓外部網路能夠透過指定的 IP 位址訪問 instance 。
  • NAT Gateway:讓 VPC 內的私有子網路中的 instance 能與 Internet 通訊的服務,同時可以防止 Internet 發起與 instance 的連線,確保私有子網路中的 instance 在與 Internet 通訊時的安全。具體的實作方式是,NAT gateway 會儲存一個 NAT table,裡面儲存了「對 NAT IP 的某個 port 的封包,應該要送到子網路中的哪個 IP」的對應;且通常 NAT Gateway 會被放置於 public subnet,讓其可以與 Internet Gateway 做溝通。

Subnets

  • public & private subnet:根據 AWS 官方的定義,當一個 subnet 被關聯的 route table 中,存在導向 Internet Gateway 的 route 時,則這個 subnet 是 Public Subnet;而當 route table 存在 NAT Gateway 的 route 時,則此 subnet 則是 Private Subnet。因此更直觀的定義會是,我們的 instance 如果被開在 public subnet 的話,那他就可以被 Internet 存取;反之被放在 private subnet 的話,我們則預期這個 instance 無法被 Internet 存取。
  • Route Table:Route Table 是一個定義網路流量如何被轉發的規則表。每個子網都必須與至少一個路由表關聯,而每個路由表又可以與多個子網關聯。路由表中的規則會決定「要前往什麼 destination 時,他的下一站 (target) 會是什麼」,基本上就跟網路協定裡大家熟知的 route table 定義相同。

Security

  • Security Groups:Security Groups 是 AWS 提供的虛擬防火牆,可以為 VPC 中的 instance 設定流量控制規則。每個 Security Group 包含一組允許或拒絕的規則,這些規則可以控制進入和離開 instance 的流量。我們可以根據需要添加多個規則,並且這些規則可以隨時新增或刪除,以適應業務需求的變化。
  • Network ACLs:Network ACLs (Network Access Control Lists) 是作用於子網層級的安全防護,可以控制流入和流出子網的流量。與 Security Groups 不同,Network ACLs 是有狀態的,這表示我們需要分別設定輸入和輸出的規則。Network ACLs 可以 Allow 或 Deny 特定的流量,並且會按照規則的編號順序進行評估,因此順序很重要。每個子網都必須與一個 Network ACL 關聯,如果沒有特別設定的話,會關聯到 default Network ACL。

建議大家使用 security groups rule 就好,盡量不要改到 NACL 的規則,否則日後維運 debug 會很麻煩。我們就曾經遇到過有環境設置了複雜的 NACL + 複雜的 security group rules,在網路不通時除錯就花上了比平時多兩倍的時間。

Instances

  • Auto Scaling Group:Auto Scaling Group 是 AWS 提供的服務,可以根據需要自動調整 EC2 instance 的數量。我們可以根據預設的策略來設定何時增加或減少 instance 的數量,這些策略可以根據 CPU 使用率、網路流量或者其他的指標來設定。這樣可以確保在需求增加的時候能夠有足夠的資源,並且在需求降低的時候不會浪費資源。
  • Load Balancer:Load Balancer 是一種能夠將網路流量分配到多個 instance 的服務,確保應用程式的高可用性和可靠性。AWS 提供了幾種不同類型的 Load Balancer,主要包括 Application Load Balancer (ALB) 和Network Load Balancer (NLB)(和現在已經 deprecated 了的 Classic Load Balancer)。在 EKS 環境中,我們通常會使用 ALB 或 NLB 來處理從外部進入 Kubernetes 叢集的流量。關於 Load Balancer 如何與 EKS 整合,我會在後面 Load Balancer Controller 的文章詳細介紹。

總結

以上我們介紹了在設置 EKS 環境之前需要了解的 AWS 網路基礎知識,包含 VPC、Subnet、Internet Gateway、NAT Gateway、Route Table、Security Groups 以及各種網路安全設定。除了這些基本元件外,還有一些重要的 AWS 服務與元件值得了解:

  • ACM (Amazon Certificate Manager):管理 SSL/TLS 憑證的服務,可以為網站和應用程式設定安全連線。
  • Route53:AWS 的 DNS 服務,可以註冊域名、設定 DNS 記錄,並且能夠根據地理位置路由流量。
  • WAF (Web Application Firewall):保護應用程式免受常見的 Web 攻擊,如 SQL injection 和 cross site scripting 等。
  • GuardDuty:使用機器學習和威脅情報來檢測帳戶中的可疑活動和潛在安全威脅。

這些元件共同構成了 EKS 運行的完整基礎環境,理解它們的運作方式對於日後維護和故障排除都相當重要。

其實 AWS 上還有各式各樣五花八門的各種服務,如果要一一介紹的話可能也能再寫另外一組鐵人賽!對 AWS 有興趣的朋友們也可以參考 udemy 上的 AWS 證照課程,我最推薦的是這堂 SAA 的課。不過學習 AWS 最快的管道依舊是去 console 上實際操作,對服務運作的理解會更踏實哦!

下一篇我們將開始正式介紹 Kubernetes 的核心元件,終於要進入正題了!


上一篇
[Day 3] Terraform 是什麼?要怎麼用?三大核心概念與實用工作流程
下一篇
[Day 5] Kubernetes Control Plane & Data Plane
系列文
EKS in Practice:IaC × GitOps 實戰 30 天5
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言