如果貴組織使用共用虛擬私有雲,您可以在服務專案或主專案中設定 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」(網路) 欄位中,選取要附加連接器的虛擬私有雲網路。
按一下「Subnetwork」下拉式選單:
選取未使用的
/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
替換為子網路名稱。
(選用) 如要設定縮放選項以便進一步控制連接器,請按一下「Show Scaling Settings」,顯示縮放表單。
- 設定連接器的執行個體數量下限和上限,或使用預設值 (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 模組建立 VPC 網路和子網路,然後建立連接器。
為服務專案啟用 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
更改下列內容:
在「Role」欄位中,選取「Serverless VPC Access User」。
按一下 [儲存]。
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
標記。
將服務設定為使用連接器
針對需要存取共用 VPC 的每個 Cloud Run 服務,您必須為服務指定連接器。部署新服務或更新現有服務時,您可以使用 Google Cloud 控制台、Google Cloud CLI、YAML 檔案或 Terraform 指定連接器。
控制台
前往 Google Cloud 控制台的 Cloud Run:
從選單中選取「Services」(服務),然後按一下「Deploy container」(部署容器),即可設定新的服務。如果您要設定現有服務,請按一下該服務,然後點選「編輯並部署新修訂版本」。
如果您要設定新服務,請填寫初始服務設定頁面,然後按一下「容器、磁碟區、網路與安全性」展開服務設定頁面。
按一下「連線設定」分頁標籤。
- 在「VPC Connector」(虛擬私有雲連接器) 欄位中,選取要使用的連接器,或選取「None」(無),將服務與虛擬私有雲網路中斷連線。
按一下 [Create] (建立) 或 [Deploy] (部署)。
gcloud
將 gcloud CLI 設為使用包含 Cloud Run 資源的專案:
取代下列內容:gcloud config set project PROJECT_ID
PROJECT_ID
:專案 ID,其中包含需要存取共用虛擬私有雲的 Cloud Run 資源。如果 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
:專案 ID,其中包含需要存取共用虛擬私有雲的 Cloud Run 資源。如果 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。