如果貴機構使用共用虛擬私有雲,您可以在服務專案或主專案中設定 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:主專案的 IDMIN:連接器使用的執行個體數量下限。請使用介於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:共用虛擬私有雲主專案的 IDSERVICE_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:共用虛擬私有雲主專案的 IDPRINCIPAL:部署 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:latestCONNECTOR_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。