Shared VPC 基本介紹與實作

Shared VPC 基本概念

Shared VPC 可以讓同一個 Organization(機構) 底下的數個 projects(專案) 連結相同的 VPC network,讓這些 projects 能夠安全、有效率地使用內網傳輸。如下圖,Shared VPC 的架構為一個 Host project 連接多個 Service project。Host project 的 VPC networks 就稱為 Shared VPC networks。而位於 Service project 的 Eligible resources 可以使用 Shared VPC networks 的 subnets。

Shared VPC 的 IAM roles 分為三種:

  • Organization Admin:
    • 位於 Organization-level,賦予使用者 Shared VPC Admin 與新增、刪除 project 的 roles。
  • Shared VPC Admin:
    • 位於 Organization-level,擁有設置 Shared VPC 的權限。Shared VPC Admin 賦予使用者 Service Project Admin roles。
  • Service Project Admin:
    • 位於 Organization or Project level,Service Project Admin 分為兩種 Project-level 以及 Subnet-level。依照 Shared VPC Admin 的設定,可以取得一整個 project 的管理權限或是只有幾個 subnets 的管理權限。

官方建議的 Shared VPC 最佳實例是賦予每個使用者最少的權限。Shared VPC Admins 負責將網路管理任務委派給 Shared VPC network 中的網路和安全管理員,而不允許 Service Project Admins 來進行網路維護。Service Project Admins 只擁有創建與管理使用 Shared VPC Network 的 instances

Shared VPC 計價與額度

限制額度:

項目 限制 備註
一個 Host projects 的 Service projects 數量 100 聯絡我們來加大限制
Host projects 的數量 100 無法加大限制
Service projects 連接 Host projects 的數量 1 無法加大限制

計價方式:

如果該 Resource 是創建在 Service  project 上,帳單會計在 Service project 的 Billing。舉例來說,一台位於 Service project 的 VM 產生了 Egress 費用。即使該台 VM 使用的是 Shared VPC network 的 subnet,Egress 費用還是會記錄在 Service project 的 Billing account。

Shared VPC 手把手教學

預先準備

如果還未使用 gcloud 驗證 Organization Admin 的身份則需要按照以下步驟驗證 Organization Admin 的身份,或是直接使用 Console 的 Cloud Shel,小編這邊使用的是 Cloud Shelll。[ORG_ADMIN] 替換為 Organization Admin 的帳號

gcloud auth login [ORG_ADMIN]

查看 Organization 的 ID

gcloudorganizations list

賦予使用者 Shared VPC Admin 的 role,[ORG_ID] 為 Organization ID,[EMAIL_ADDRESS] 為使用者的帳號。

gcloud organizations add-iam-policy-binding [ORG_ID] \
--member 'user:[EMAIL_ADDRESS]' \
--role "roles/compute.xpnAdmin"

完成以上的動作後,登出 Organization Admin 的身份

gcloud auth revoke [ORG_ADMIN]

設置 Host project

選定一個 project 為 Host project。

gcloud compute shared-vpc enable sharedvpc-1 //sharedvpc-1 為 Host project

列出 Organization 裡面所有的 Host projects,確認剛剛的設定是否成功。[ORG_ID] 為 Organization 的 ID

gcloud compute shared-vpc organizations list-host-projects [ORG_ID]

連結 Service projects

連結 Service project 至剛剛啟用的 Host project

gcloud compute shared-vpc associated-projects add sharedvpc-2 \
--host-project sharedvpc-1

確認是否有成功連結至 Host project

gcloud compute shared-vpc get-host-project sharedvpc-2

也可以列出指定 Host project 的所有 Service project

gcloud compute shared-vpc list-associated-resources sharedvpc-1

設置 Service Project Admins

使用者可以根據需求劃分 subnets 的權限,為處於 Service project 的其中一位使用者加入 Service Project Admin 的 Role。這個 Role 有權限存取所有的 subnets。

gcloud projects add-iam-policy-binding sharedvpc-1 \
--member "user:[SERVICE_PROJECT_ADMIN]" \
--role "roles/compute.networkUser"

完成以上的動作後,登出 Shared VPC Admin 的身份

gcloud auth revoke [SHARED_VPC_ADMIN]

使用 Shared VPC

以下的步驟,根據 GCP 的 Best practice,會由 Service Project Admins 來實作。列出所有該 Service Project Admin 可用的 subnets。

gcloud compute networks subnets list-usable --project sharedvpc-1

註冊一個靜態的內部 IP,而該 IP 會從指定的 subnet 範圍內隨機選出。

gcloud compute addresses create sharedvpcip \
--project sharedvpc-2 \
--subnet projects/sharedvpc-1/regions/asia-east1/subnetworks/default

新增一台 VM 並進行驗證

Service Project Admins 只能使用他們有權限存取的 subnet 創建一台 VM instance。當 GCP 收到在 Shared VPC network 創建一台 VM instance 的請求時,GCP 會自動判斷該使用者是否有權限可以使用該段 subnet。

gcloud compute instances create sharedvpc-2vm \
--project sharedvpc-2 \
--private-network-ip sharedvpcip \
--zone asia-east1-a --subnet \
projects/sharedvpc-1/regions/asia-east1/subnetworks/default

在 Host project 新增一台 VM (選定與 sharedvpc-2vm 同一個 subnet )並 ssh 至該 VM。ping sharedvpc-2vm 的內部 IP,成功互連的話代表兩台位於不同 project 的 VM 成功地創建在同一個 subnet 裡,並可以使用內網互通。

ping [IP_ADDR]//為處於 Host project 的 VM IP

Shared VPC FAQ

  • 一個 project 是否能同時為 Host project 跟 Service Project?
    • 不行。
  • 一個 service project 是否能夠連結多個 host projects?
    • 不行,一個 service project 只能連結一個 host project。但一個 host project 可以連結多個 service projects。
  • Share VPC的架構與權限機制
    • 權限設定可參考文件
  • 如何設定 host & service projects?
  • GCP 的最佳實例?
  • Shared VPC 的計費是否有要留意的部分?
    • shared VPC 的計價方式跟一般 VPC network 的計價方式是相同的

原文出處

 


連絡「GCP 專門家」