如果貴機構使用共用虛擬私有雲,您可以在服務專案或主專案中設定 Serverless VPC Access 連接器。本指南說明如何在主機專案中設定連接器。
如要在服務專案中設定連接器,請參閱「在服務專案中設定連接器」。如要瞭解各項方法的優點,請參閱「連線至共用虛擬私有雲網路」。
事前準備
- 檢查目前使用的帳戶是否具備身分與存取權管理 (IAM) 角色。有效帳戶必須在主專案中具備下列角色: 
- 在偏好的環境中選取主專案。 
控制台
- 開啟 Google Cloud 控制台資訊主頁。 
- 在資訊主頁頂端的選單列中,按一下專案下拉式選單,然後選取主專案。 
gcloud
在 gcloud CLI 中,將預設專案設為主機專案,方法是在終端機中執行下列指令:
gcloud config set project HOST_PROJECT_ID
更改下列內容:
- HOST_PROJECT_ID:共用虛擬私有雲主專案的 ID
建立 Serverless VPC Access 連接器
如要向虛擬私有雲網路傳送要求並接收相應的回應,您必須建立無伺服器虛擬私有雲存取連接器。您可以使用 Google Cloud 控制台、Google Cloud CLI 或 Terraform 建立連接器:
主控台
- 為專案啟用 Serverless VPC Access API。 
- 前往「Serverless VPC Access」(無伺服器虛擬私人雲端存取) 總覽頁面。 
- 按一下 [Create connector] (建立連接器)。 
- 在「Name」(名稱) 欄位中,輸入連接器的名稱。名稱必須符合 Compute Engine 命名慣例,且長度不得超過 21 個字元。連字號 ( - -) 算兩個字元。
- 在「Region」(區域) 欄位中,選取連接器的區域。這必須與無伺服器服務的地區相符。 - 如果服務位於 - us-central或- europe-west區域,請使用- us-central1或- europe-west1。
- 在「Network」(網路) 欄位中,選取要附加連接器的虛擬私人雲端網路。 
- 按一下「子網路」下拉式選單: - 選取未使用的 - /28子網路。- 子網路只能供連接器使用。其他資源 (例如 VM、Private Service Connect 或負載平衡器) 無法使用這些 IP 位址。
- 如要確認子網路未用於 Private Service Connect 或 Cloud Load Balancing,請在 gcloud CLI 中執行下列指令,檢查子網路 purpose是否為PRIVATE:gcloud compute networks subnets describe SUBNET_NAME SUBNET_NAME替換為子網路名稱。
 
- (選用) 如要設定縮放選項,進一步控管連接器,請按一下「顯示縮放設定」,顯示縮放表單。 - 設定連接器的執行個體數量下限和上限,或使用預設值 (下限為 2,上限為 10)。隨著流量增加,連接器會擴充至指定上限,但流量減少時,連接器不會縮減。你必須使用介於 2和10之間的值,且MIN值必須小於MAX值。
- 在「Instance Type」(執行個體類型) 下拉式選單中,選擇要用於連接器的機器類型,或使用預設的 e2-micro。選擇執行個體類型時,請注意右側的費用側邊欄,其中會顯示頻寬和費用預估。
 
- 設定連接器的執行個體數量下限和上限,或使用預設值 (下限為 2,上限為 10)。隨著流量增加,連接器會擴充至指定上限,但流量減少時,連接器不會縮減。你必須使用介於 
- 點選「建立」。 
- 若連接器可供使用,其名稱旁邊會顯示一個綠色勾號。 
gcloud
- 將 - gcloud元件更新到最新版本:- gcloud components update 
- 為專案啟用 Serverless VPC Access API: - gcloud services enable vpcaccess.googleapis.com 
- 建立無伺服器虛擬私有雲存取連接器: - gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --region=REGION \ --subnet=SUBNET \ --subnet-project=HOST_PROJECT_ID \ # Optional: specify minimum and maximum instance values between 2 and 10, default is 2 min, 10 max. --min-instances=MIN \ --max-instances=MAX \ # Optional: specify machine type, default is e2-micro --machine-type=MACHINE_TYPE - 更改下列內容: - CONNECTOR_NAME:連接器名稱。名稱必須遵循 Compute Engine 命名慣例,且長度不得超過 21 個字元。連字號 (- -) 算兩個字元。
- REGION:連接器的區域;這必須與無伺服器服務的區域相符。如果服務位於- us-central或- europe-west區域,請使用- us-central1或- europe-west1。
- SUBNET:未使用的- /28子網路名稱。- 子網路只能供連接器使用。其他資源 (例如 VM、Private Service Connect 或負載平衡器) 無法使用這些 IP 位址。
- 如要確認子網路未用於 Private Service Connect 或 Cloud Load Balancing,請執行下列 gcloud CLI 指令,檢查子網路 purpose是否為PRIVATE:gcloud compute networks subnets describe SUBNET_NAME - SUBNET_NAME:子網路名稱
 
 
- HOST_PROJECT_ID:主專案的 ID
- MIN:連接器使用的執行個體數量下限。請使用介於- 2至- 9之間的整數。預設為- 2步。如要瞭解連接器資源調度,請參閱「輸送量和資源調度」。
- MAX:連接器使用的執行個體數量上限。請使用介於- 3至- 10之間的整數。預設為- 10步。如果流量需要,連接器會擴充至- [MAX]個執行個體,但不會縮減。如要瞭解連接器資源調度,請參閱「輸送量和資源調度」。
- MACHINE_TYPE:- f1-micro、- e2-micro或- e2-standard-4。如要瞭解連接器輸送量 (包括機器類型和資源調度),請參閱「輸送量和資源調度」。
 - 如要瞭解詳情和選用引數,請參閱 - gcloud參考資料。
- 先驗證您的連接器是否處於 - READY狀態,然後再使用:- gcloud compute networks vpc-access connectors describe CONNECTOR_NAME \ --region=REGION - 更改下列內容: - CONNECTOR_NAME:連接器名稱,也就是您在上一個步驟中指定的名稱
- REGION:連接器所在的區域,也就是您在上一個步驟中指定的區域
 - 輸出內容應包含 - state: READY這一行。
Terraform
您可以使用 Terraform 資源啟用 vpcaccess.googleapis.com API。
您可以使用 Terraform 模組建立虛擬私有雲網路和子網路,然後建立連接器。
為服務專案啟用 Cloud Run
為服務專案啟用 Cloud Run API。這是必要步驟,因為後續步驟需要新增 IAM 角色,且服務專案必須使用 Cloud Run。
主控台
- 開啟 Cloud Run API 頁面。 
- 在資訊主頁頂端的選單列中,按一下專案下拉式選單,然後選取服務專案。 
- 按一下「啟用」。 
gcloud
在終端機中執行下列指令:
gcloud services enable run.googleapis.com --project=SERVICE_PROJECT_ID
更改下列內容:
- SERVICE_PROJECT_ID:服務專案的 ID
提供連接器存取權
將主專案的「無伺服器虛擬私有雲存取使用者」IAM 角色授予服務專案的「Cloud Run 服務代理程式」,以提供連接器存取權。
主控台
- 開啟 IAM 頁面。 
- 按一下專案下拉式選單,然後選取主專案。 
- 按一下「新增」。 
- 在「New principals」(新增主體) 欄位中,輸入 Cloud Run 服務的 Cloud Run 服務代理程式電子郵件地址: - service-SERVICE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com - 更改下列內容: 
- 在「角色」欄位中,選取「無伺服器虛擬私有雲存取使用者」。 
- 按一下 [儲存]。 
gcloud
在終端機中執行下列指令:
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member=serviceAccount:service-SERVICE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com \ --role=roles/vpcaccess.user
更改下列內容:
- HOST_PROJECT_ID:共用虛擬私有雲主專案的 ID
- SERVICE_PROJECT_NUMBER:與服務帳戶相關聯的專案編號。這與專案 ID 不同。您可以執行下列指令來找出專案編號:- gcloud projects describe SERVICE_PROJECT_ID 
讓連接器可供探索
在主專案的 IAM 政策中,您必須將下列兩個預先定義的角色授予部署 Cloud Run 服務的主體:
- 無伺服器虛擬私有雲存取檢視者 (vpcaccess.viewer): 必要。
- Compute 網路檢視者 (compute.networkViewer): 建議使用,但可略過。允許 IAM 主體列舉共用虛擬私有雲網路中的子網路。
或者,您也可以使用自訂角色或其他預先定義的角色,這些角色包含無伺服器虛擬私有雲存取檢視者 (vpcaccess.viewer) 角色的所有權限。
主控台
- 開啟 IAM 頁面。 
- 按一下專案下拉式選單,然後選取主專案。 
- 按一下「新增」。 
- 在「New principals」(新增主體) 欄位中,輸入應可從服務專案查看連接器的主要電子郵件地址。您可以在這個欄位中輸入多個電子郵件地址。 
- 在「Role」(角色) 欄位中,選取下列兩個角色: - 無伺服器虛擬私有雲存取檢視者
- Compute 網路檢視者
 
- 按一下 [儲存]。 
gcloud
在終端機中執行下列指令:
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member=PRINCIPAL \ --role=roles/vpcaccess.viewer gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member=PRINCIPAL \ --role=roles/compute.networkViewer
更改下列內容:
- HOST_PROJECT_ID:共用虛擬私有雲主專案的 ID
- PRINCIPAL:部署 Cloud Run 服務的主體。進一步瞭解- --member旗標。
將服務設定為使用連接器
如果 Cloud Run 服務需要存取共用 VPC,您必須為該服務指定連接器。部署新服務或更新現有服務時,您可以使用 Google Cloud 控制台、Google Cloud CLI、YAML 檔案或 Terraform 指定連接器。
控制台
- 前往 Google Cloud 控制台的 Cloud Run: 
- 從選單中選取「服務」,然後按一下「部署容器」,設定新服務。如要設定現有服務,請按一下該服務,然後點選「Edit and deploy new revision」(編輯及部署新修訂版本)。 
- 如要設定新服務,請填寫初始服務設定頁面,然後按一下「容器、磁碟區、網路與安全性」,展開服務設定頁面。 
- 按一下「連結」分頁標籤。   - 在「VPC Connector」(虛擬私有雲連接器) 欄位中,選取要使用的連接器,或選取「None」(無),將服務與虛擬私有雲網路中斷連線。
 
- 按一下 [Create] (建立) 或 [Deploy] (部署)。 
gcloud
- 將 gcloud CLI 設為使用含有 Cloud Run 資源的專案: - gcloud config set project PROJECT_ID - PROJECT_ID:含有 Cloud Run 資源的專案 ID,該資源需要存取共用虛擬私有雲。如果 Cloud Run 資源位於主專案中,這就是主專案 ID。如果 Cloud Run 資源位於服務專案中,則為服務專案 ID。
 
- 使用 - --vpc-connector標記。
- 現有服務:
gcloud run services update SERVICE --vpc-connector=CONNECTOR_NAME 
- 新服務:
gcloud run deploy SERVICE --image=IMAGE_URL --vpc-connector=CONNECTOR_NAME - SERVICE:服務名稱
- IMAGE_URL:容器映像檔的參照,例如- us-docker.pkg.dev/cloudrun/container/hello:latest
- CONNECTOR_NAME:連結器的名稱。從共用虛擬私有雲服務專案 (而非主專案) 部署時,請使用完整名稱,例如:- projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME - HOST_PROJECT_ID是主機專案的 ID,- CONNECTOR_REGION是連接器的區域,- CONNECTOR_NAME則是您為連接器指定的名稱。
 
YAML
將 gcloud CLI 設為使用含有 Cloud Run 資源的專案:
gcloud config set project PROJECT_ID
更改下列內容:
- PROJECT_ID:含有 Cloud Run 資源的專案 ID,該資源需要存取共用虛擬私有雲。如果 Cloud Run 資源位於主專案中,這就是主專案 ID。如果 Cloud Run 資源位於服務專案中,則為服務專案 ID。
- 如要建立新服務,請略過這個步驟。 如要更新現有服務,請下載其 YAML 設定: - gcloud run services describe SERVICE --format export > service.yaml 
- 在頂層 - spec屬性下的- annotations屬性中,新增或更新- run.googleapis.com/vpc-access-connector屬性:- apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/vpc-access-connector: CONNECTOR_NAME name: REVISION - 更改下列內容: - SERVICE:Cloud Run 服務名稱。
- CONNECTOR_NAME:連結器的名稱。從共用虛擬私有雲服務專案 (而非主專案) 部署時,請使用完整名稱,例如:projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME HOST_PROJECT_ID是主機專案的 ID,CONNECTOR_REGION是連接器的區域,CONNECTOR_NAME則是您為連接器指定的名稱。
- REVISION,然後輸入新的修訂版本名稱,或刪除現有名稱。如果您提供新的修訂版本名稱,則必須符合下列條件:- 開頭為「SERVICE-」
- 只能包含小寫字母、數字和 -
- 結尾不是 -
- 不超過 63 個半形字元
 
- 開頭為「
 
- 使用下列指令,以新設定取代服務: - gcloud run services replace service.yaml 
Terraform
您可以使用 Terraform 資源建立服務,並將服務設定為使用連接器。
後續步驟
- 使用無伺服器虛擬私有雲存取稽核記錄監控管理活動。
- 使用 VPC Service Controls 建立服務範圍,保護資源和資料。
- 使用網路標記限制連接器 VM 對 VPC 資源的存取權。
- 瞭解與無伺服器虛擬私有雲存取相關聯的 Identity and Access Management (IAM) 角色。如要查看與各角色相關聯的權限清單,請參閱 IAM 說明文件中的「無伺服器虛擬私有雲存取角色」。
- 瞭解如何連線至 Memorystore。