集結國內外精選文章,掌握最新雲端技術新知與應用
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 最佳實例是賦予每個使用者最少的權限。Shared VPC Admins 負責將網路管理任務委派給 Shared VPC network 中的網路和安全管理員,而不允許 Service Project Admins 來進行網路維護。Service Project Admins 只擁有創建與管理使用 Shared VPC Network 的 instances
限制額度:
計價方式:
如果該 Resource 是創建在 Service project 上,帳單會計在 Service project 的 Billing。舉例來說,一台位於 Service project 的 VM 產生了 Egress 費用。即使該台 VM 使用的是 Shared VPC network 的 subnet,Egress 費用還是會記錄在 Service project 的 Billing account。
如果還未使用 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]
選定一個 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 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
使用者可以根據需求劃分 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]
以下的步驟,根據 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
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