連線至在無伺服器環境中代管的服務
本頁面說明如何設定整合連接器,以便連線至在無伺服器環境中託管的服務,例如 Google Cloud 中的 Cloud Run。
下圖顯示從 Integration Connectors 到 Google Cloud 中 Cloud Run 環境中託管的服務的私人網路連線設定:
本頁假設您熟悉下列概念:
注意事項
建立 PSC 服務附件時,請考量下列重點:
- PSC 服務連結和負載平衡器是在同一個 VPC 中的不同子網路中建立。具體來說,服務附件一律會在 NAT 子網路中建立。
- 負載平衡器和健康狀態檢查探針的流量必須傳送至相同的通訊埠。
- 設定防火牆規則,以利流量流動。
Ingress 規則
PSC 服務附件的子網路流量必須抵達後端服務。
輸出規則
除非設定特定拒絕規則,否則 Google Cloud 專案會預設啟用外送流量。
- 所有 Google Cloud 元件 (例如 PSC 服務附件和負載平衡器) 都必須位於同一個區域。
建立 PSC 服務連結
為了透過 Integration Connectors 建立私人連線,您的服務必須使用 PSC 服務連結公開給 Integration Connectors。服務附件一律會使用負載平衡器。因此,如果您的服務並未在負載平衡器後方,就需要設定負載平衡器。
- 建立負載平衡器。如果您已使用負載平衡器,請略過這個步驟。
如要使用無伺服器 NEG 做為後端,請按照「使用 Cloud Run 設定區域性內部應用程式負載平衡器」一文中的說明建立應用程式負載平衡器。
- 建立服務附件
- 建立 PSC NAT 的子網路。下列指令會建立名稱為
psc-nat-subnet1
的子網路,用途為PRIVATE_SERVICE_CONNECT
。gcloud compute networks subnets create psc-nat-subnet1 \ --network=VPC_NETWORK --range=SUBNET_RANGE_1 \ --purpose=PRIVATE_SERVICE_CONNECT
- 建立防火牆規則,允許從 PSC NAT 傳入負載平衡器的流量。
gcloud compute network-firewall-policies rules create PRIORITY --firewall-policy FIREWALL_POLICY_NAME_SA \ --direction=INGRESS --network=VPC_NETWORK \ --action=allow --allow=tcp:BACKEND_SERVER_PORT --src-ip-ranges=SUBNET_RANGE_1
- 使用明確核准建立服務連結。
gcloud compute service-attachments create SERVICE_ATTACHMENT_NAME --producer-forwarding-rule=FORWARDING_RULE_NAME --connection-preference=ACCEPT_MANUAL --consumer-accept-list=SERVICE_DIRECTORY_PROJECT_ID=LIMIT --nat-subnets=psc-nat-subnet1
在這條指令中,LIMIT 是專案的連線限制。連線限制是指可連線至此服務的消費者 PSC 端點數量。如要取得 SERVICE_DIRECTORY_PROJECT_ID,請執行下列步驟:
-
您可以建立 PSC 服務附件,讓 PSC 只接受指定 Google Cloud 專案的要求。不過,您必須提供與 Google Cloud 專案相關聯的服務目錄專案 ID,才能執行這項操作。如要取得服務目錄的專案 ID,您可以使用 List Connections API,如以下範例所示。
語法
curl -X GET \ -H "authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://connectors.googleapis.com/v1/projects/CONNECTORS_PROJECT_ID/locations/-/connections"
請依指示取代下列內容:
- CONNECTORS_PROJECT_ID:您建立連線的 Google Cloud 專案 ID。
範例
這個範例會取得
connectors-test
Google Cloud 專案的服務目錄專案 ID。curl -X GET \ -H "authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://connectors.googleapis.com/v1/projects/connectors-test/locations/-/connections"
在終端機上執行這個指令後,會顯示類似以下的輸出內容:
..... { "connections": [ { "name": "projects/connectors-test/locations/asia-northeast1/connections/big-query-iam-invalid-sa", "createTime": "2022-10-07T09:02:31.905048520Z", "updateTime": "2022-10-07T09:22:39.993778690Z", "connectorVersion": "projects/connectors-test/locations/global/providers/gcp/connectors/bigquery/versions/1", "status": { "state": "ACTIVE" }, "configVariables": [ { "key": "project_id", "stringValue": "connectors-test" }, { "key": "dataset_id", "stringValue": "testDataset" } ], "authConfig": {}, "serviceAccount": "564332356444-compute@developer.gserviceaccount.com", "serviceDirectory": "projects/abcdefghijk-tp/locations/asia-northeast1/namespaces/connectors/services/runtime", "nodeConfig": { "minNodeCount": 2, "maxNodeCount": 50 } }, ....
在輸出範例中,
connectors-test
Google Cloud 專案的服務目錄專案 ID 為abcdefghijk-tp
。
-
- 建立 PSC NAT 的子網路。下列指令會建立名稱為
建立端點連結,以便使用 PSC 服務連結
端點連結為 IP 位址如需建立端點附件做為 IP 位址的操作說明,請參閱「建立端點附件做為 IP 位址」。
端點連結做為主機名稱在某些情況下 (例如啟用 TLS 的後端),目的地會要求您使用主機名稱,而非私人 IP 來執行 TLS 驗證。如果您使用私人 DNS 而非 IP 位址做為主機目的地,除了建立端點附件做為 IP 位址之外,您還必須設定受管理的可用區。如需建立端點附件做為主機名稱的操作說明,請參閱「建立端點附件做為主機名稱」。
日後,當您設定連線以使用端點附件時,即可選取這個端點附件。
設定使用端點連結的連線
建立端點連結後,請在連線中使用端點連結。建立新連線或更新現有連線時,請在「目的地」部分中,將「端點連結」選為「目的地類型」,然後從「端點連結」清單中選取您建立的端點連結。
如果您建立了代管區域,請選取「主機位址」做為「目的地類型」,並使用建立代管區域時建立的 A 記錄。
疑難排解提示
請按照本節列出的規範避免常見問題:
- 如要確認端點連結正確設定,並建立 PSC 連線,請檢查連線狀態。詳情請參閱「驗證端點附件連線」。
- 如要瞭解如何排解負載平衡器問題,請參閱「排解內部應用程式負載平衡器的問題」。
- 您可以使用 Google Cloud 連線測試找出網路設定中的任何缺口。詳情請參閱「建立並執行連線測試」。