Compare GCP VPC Network with AWS
整理 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 可以放大,但不能縮小。
- 在單一的 regions 裡. 每個 region 裡可以有多個
- Gateway:
- 每個 Subnet 會有預設的 Gateway:
xxx.yyy.zzz.1
- 沒有 NAT 概念的節點,透過
Route
、Firewall
控制
- 每個 Subnet 會有預設的 Gateway:
配置與管理
- 建立 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
下圖是官方的文件描述的使用概念:
規劃使用 XPN 要從 organization
開始看起:
- 權限 (IAM Role): 在
organization
裡的IAM
, 授權特定User
有Compute Shared VPC Admin
的權限 - 規劃
Shared VPC host project
:這個 Project 用途就是共享 VPC Network,同時也只有 Infra / Network Admin 可以控管
- 規劃 CIDR 分配範圍 (RFC1918)
- 考慮 Regional, Project
- 規劃
Shared VPC service project
:規劃多個特定功能的 Project,只要是團隊、架構、預算獨立,就可以獨立一個 project。
- 想像 microservice 每個 service 規劃一個 project
- 一個 scrum team (PO, Dev, QA, Ops),他們有獨立的商業目標、開發流程、預算考量。
- Infra & Security 交由專門的 Team 統控
- 特殊需求的,像是 PCI DSS 需要的環境,則可以使用
Standalone project
,換言之,他是獨立的 VPC Network,不跟 XPN 共享。
規劃案例 - 依環境拆分
這是官方舉的案例,考慮環境:
- 開發、正式環境切離
- 每個環境維度都有個
XPN Host Project
- 每個服務不同的環境,都有獨立的預算與權限
Limitation
- 每個 VM Instance 最多 8 張 Network Interface,詳細參閱 Creating Instances with Multiple Network Interfaces
- 每個 Project 最多 5 個 VPC Network
- 每個 Cloud Organization 可以有 100 個 shared VPC host projects
- 每個 shared VPC host project 可以 attach 100 個 service projects
- GKE / GAE 目前不支援 Shared VPC.
Compare GCP VPC Network with AWS
簡單整理 GCP 跟 AWS 的比較,如下圖:
大家都知道 Google 對於基礎架構投入非常多資源,包含跨洲光纜、資料中心的建置,實體基礎設施如此的強大,想見 Cloud 上的 Infra 不會太令人失望,果然!GCP 的強項就在於 Global
的概念,光這一點的基礎架構,就讓原本以 IaaS 開始的 AWS 加緊推出對應的服務,像是 Endpoint Service / Private Link
、Inter-Region VPC peering connection 等功能。
雖然 GCP VPC 完整性平心而論,還是有一些不足,但是未來依舊是可以期待的!
更多 GCP 加值服務歡迎隨時聯繫 GCP 專門家,也可以至 GCP 技術部落格 查看更多 GCP 最新消息與技術內容!
延伸閱讀
- GCP: Experience GCP
- GCP: Building a VPN Between GCP and AWS
- AWS: Study Notes - AWS VPC (Virtual Private Cloud)
- AWS: Plan and Design Multiple VPCs in Different Regions
- AWS: Inter-Region VPC Peering
參考資料
- Virtual Private Cloud (VPC) Network Overview
- Shared VPC Overview
- Google Cloud Platform for AWS Professionals: Networking