GCP vs AWS:VPC Network 大比拼
本文整理 GCP 的 Virtual Private Cloud (VPC) 的筆記,重點在 VPC Network、Shared VPC (XPN),同時跟 AWS VPC 的設計比較。
摘要 VPC Network
GCP 的 VPC Network 整體來講,有以下三個強項:
• Global
• Sharable
• Expandable
這三點大概都是 AWS 比較沒有的,也是很吸引我的因素之一。
基本概念
• VPC Network : a global entity spanning all GCP regions. 在這個 VPC Network 裡的 VM (不管在哪一個 Region) 都可以直接透過 Private IP 溝通.
• entity spanning: 實體跨越
• 每個 Project 會有一個預設的 network
• 每個 Project 限制有 5 個 network (同 AWS 的 soft limit)
• Subnets:
• 在單一的 regions 裡. 每個 region 裡可以有多個 subnet
• 在 GCP 裡,跟 Subnetworks 是指同一個東西。
• gcloud cli 裡會用 subnetwork 表示 sub command
• GCP 的 Subnet 概念等同於 AWS Region 裡的一個 VPC CIDR
• GCP 沒有類似 AWS VPC Subnet 的概念,要做類似概念就是在同一個 Region 直接規劃很多 Subnets
• Subnet 的 CIDR Space 可以放大,但不能縮小。
• Gateway:
• 每個 Subnet 會有預設的 Gateway: xxx.yyy.zzz.1
• 沒有 NAT 概念的節點,透過 Route、Firewall 控制
配置與管理
• 建立 VPC Network 有兩種方法:自動、手動
• 自動:會在每個 region 配置一個 subnet (相當於開一個 AWS Account, 每個 region 都會有一個 default VPC)
• 手動:可以自己規劃 subnet 的 CIDR, 相當於自行規劃 AWS 每個 VPC 的 CIDR
• 預設自動的 VPC Network CIDR 都一樣,所以 project 之間要透過網路互通,CIDR 要避開 Space,不然就無法串接。
• 詳細參見: Types of VPC networks
• 手動規劃 Subnet CIDR,要符合 RFC1918 規範
• 每個 subnet 都會有以下四個保留位址:
• Network address (first address in the CIDR range)
• Default gateway address (second address in the CIDR range)
• Reserved address (second-to-last address in the CIDR range)
• Broadcast address (last address in the CIDR range)
Firewall rules
• Scope: Global, 每個 VPC Network 有預設數個常用的 firewalls,像是 icmp, rdp, ssh, 還有 internal
• 預設的 firewall rules 只有 default network 才有, 自己建出來的 VPC network 則不會有這些 firewall rules, 得自己設定
• 可以透過 tag 方式套用到不同的 VM or resources
• 有 allow、deny 兩種,每條 rule 只能是一種
Shared VPC Network
預設 GCP 每個 Project 都有獨立的 VPC Network,預設的 CIDR 是一樣的,換句話說,未來如果要資料交換,將會造成 CIDR 碰撞問題,所以如果組織有一定規模,應該交由 Network or Infra Team 負責網路 CIDR 規劃,避免未來因資料交換需求,造成路由複雜以及管理困難。
類似概念,在 AWS VPC 規劃也是一樣,更多請參閱:Plan and Design Multiple VPCs in Different Regions 筆記。
GCP 提供的功能稱為 Shared VPC (簡稱 XPN),目的就是讓不同的 Project,共享同樣的 VPC Network。規劃時就是在一個 Project 裡規劃 VPC Network,透過 XPN 把 Subnet 分享給其他 Project。
Overview
下圖是官方的文件描述的使用概念: