本文說明如何為 Cloud SQL 執行個體的私人網路連線設定及配置 Private Service Connect。
設定 Private Service Connect 和端點後,您和應用程式用戶端就能從屬於不同群組、團隊、專案或機構的多個虛擬私有雲 (VPC) 網路,連線至主要 Cloud SQL 執行個體或任何唯讀副本。您也可以為以 DNS 名稱為基礎的用戶端連線設定執行個體或全域 DNS 名稱,這對於容錯移轉和災難復原用途很有幫助。
事前準備
- 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Service Networking, Network Connectivity, Cloud DNS APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Make sure that you have the following role or roles on the project: Compute Network Admin, Cloud SQL Admin, Cloud DNS Admin, Cloud SQL Instance User
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
- Click Grant access.
-
In the New principals field, enter your user identifier. This is typically the email address for a Google Account.
- Click Select a role, then search for the role.
- To grant additional roles, click Add another role and add each additional role.
- Click Save.
-
-
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
執行下列指令,初始化 gcloud CLI:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Service Networking, Network Connectivity, Cloud DNS APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Make sure that you have the following role or roles on the project: Compute Network Admin, Cloud SQL Admin, Cloud DNS Admin, Cloud SQL Instance User
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
- Click Grant access.
-
In the New principals field, enter your user identifier. This is typically the email address for a Google Account.
- Click Select a role, then search for the role.
- To grant additional roles, click Add another role and add each additional role.
- Click Save.
-
-
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
執行下列指令,初始化 gcloud CLI:
gcloud init
Private Service Connect 的必要角色
下表提供設定及連線至 Private Service Connect 和 Cloud SQL 執行個體時所需的角色資訊。
| 角色 | 說明 |
|---|---|
compute.networkAdmin |
授予啟動 Cloud SQL 執行個體連線的虛擬私有雲網路完整控制權。您可以建立及管理 IP 位址、防火牆規則、服務連線政策和 Private Service Connect 端點。 如果您使用 Private Service Connect 從多個虛擬私有雲網路連線至 Cloud SQL 執行個體,則每個網路都有自己的管理員。 |
dns.admin |
授予 Cloud DNS 資源的完整控制權,包括 DNS 區域和記錄。 |
cloudsql.admin |
提供 Cloud SQL 執行個體的完整控制權,並在執行個體的生命週期內控管執行個體。 |
cloudsql.instanceUser |
提供 Cloud SQL 執行個體的存取權。如果您透過 Cloud SQL 驗證 Proxy 用戶端連線,則必須具備 Cloud SQL 用戶端角色。如果直接連線,則不需要任何 Identity and Access Management (IAM) 角色和權限。 |
如要在建立 Cloud SQL 執行個體時自動設定服務連線政策,您需要額外角色,並有權將這些角色指派給 Cloud SQL 服務代理。詳情請參閱「建立服務連線政策」。
建立 Private Service Connect 端點
Private Service Connect 端點是用戶虛擬私有雲網路中的內部 IP 位址,該網路中的用戶端可以直接存取。用戶端可以使用這些端點連線至 Cloud SQL 執行個體。
您可以讓 Cloud SQL 在 VPC 中自動建立 Private Service Connect 端點,也可以手動建立端點。
自動建立端點
如要讓 Cloud SQL 自動建立 Private Service Connect 端點,請按照下列步驟操作:
在虛擬私有雲網路中建立服務連線政策。透過這項政策,您可以自動佈建 Private Service Connect 端點。
建立 Cloud SQL 執行個體,並為該執行個體啟用 Private Service Connect,然後設定執行個體,自動建立 Private Service Connect 端點。
擷取執行個體的端點。這樣您就能使用端點連線至執行個體。
建立服務連線政策
您可以使用 Google Cloud 控制台、gcloud CLI 或 API 建立服務連線政策。
控制台
前往 Google Cloud 控制台的「Private Service Connect」頁面。
按一下「連線政策」分頁標籤。
按一下「建立連線政策」。
輸入連線政策的「Name」(名稱)。
請執行下列操作,指定服務類別:
- 在「來源服務類別」部分,選取「Google 服務」。
- 從「服務類別」選單中選取
google-cloud-sql,因為 Cloud SQL 是連線政策的代管服務。
在「目標端點範圍」部分中,選取要套用這項政策的「網路」和「區域」。
選用:如果服務連線政策和 Cloud SQL 執行個體位於不同的專案、資料夾或機構,請設定自訂服務執行個體範圍:
- 將「自訂服務執行個體範圍」切換鈕撥到「開啟」位置。
- 在「範圍」欄位中,輸入執行個體所在的專案、資料夾或機構 ID。
在「政策」部分,從「子網路」選單中選取一或多個子網路。子網路會用於為端點分配 IP 位址。
選用:為政策指定連線限制。這項限制決定了可透過這項連線政策建立的端點數量。如未指定連線限制,則代表沒有限制。
點選「建立政策」。
gcloud
如要建立服務連線政策,請使用 service-connection-policies create 指令。
gcloud network-connectivity service-connection-policies create POLICY_NAME \
--network=NETWORK \
--project=PROJECT_ID \
--region=REGION \
--service-class=SERVICE_CLASS \
--subnets=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETS \
--psc-connection-limit=LIMIT \
--description="DESCRIPTION" \
--producer-instance-location=PRODUCER_INSTANCE_LOCATION \
--allowed-google-producers-resource-hierarchy-level=RESOURCE_HIERARCHY_LEVEL
更改下列內容:
POLICY_NAME:服務連線政策的名稱。NETWORK:適用這項政策的網路。PROJECT_ID:虛擬私有雲網路專案的專案 ID 或編號。如果是 Shared VPC 網路,您必須在主專案中部署服務連線政策,因為服務專案不支援這些政策。REGION:這項政策適用的區域。如要自動化服務連線,每個區域都必須有相同的政策。SERVICE_CLASS:服務類別的供應商提供資源 ID。如果是 Cloud SQL,服務類別為google-cloud-sql。SUBNETS:一或多個一般消費者子網路,用於為 Private Service Connect 端點分配 IP 位址。這些 IP 位址會自動分配,並在建立及刪除代管服務執行個體時,返回子網路的集區。子網路必須與服務連線政策位於相同區域。如果多項連線政策共用相同區域,您可以在這些政策中重複使用相同的子網路。您可以用逗號分隔的清單輸入多個子網路。LIMIT:您可使用這項政策建立的端點數量上限。如未指定上限,則代表沒有限制。DESCRIPTION:服務連線政策的選用說明。PRODUCER_INSTANCE_LOCATION:指定是否要授權 Cloud SQL 執行個體的自訂位置階層。如果執行個體與政策位於不同的專案、資料夾或機構,則必須將這個值設為custom-resource-hierarchy-levels。RESOURCE_HIERARCHY_LEVEL:執行個體所在的專案、資料夾或機構清單。這份清單的格式如下:projects/PROJECT_IDfolders/FOLDER_IDorganizations/ORGANIZATION_ID。
舉例來說,下列指令會為
google-cloud-sql 服務類別建立服務連線政策,從 managed-services 子網路分配 IP 位址。使用這項政策最多可建立 10 個 Private Service Connect 端點。端點必須在與代管服務執行個體位於相同機構的專案中建立。Cloud SQL 執行個體位於 myproject 專案中。
gcloud network-connectivity service-connection-policies create cloud-sql-policy \
--network=default \
--project=my-project \
--region=us-central1 \
--service-class=google-cloud-sql \
--subnets=managed-service-subnet \
--psc-connection-limit=10 \
--producer-instance-location=custom-resource-hierarchy-levels \
--allowed-google-producers-resource-hierarchy-level=projects/myproject
REST
使用任何要求資料之前,請先修改下列項目的值:
PROJECT_ID:專案的 ID。REGION:服務連線政策的區域。POLICY_NAME:服務連線政策的名稱。DESCRIPTION:服務連線政策的選用說明。NETWORK:服務連線政策的網路。LIMIT:您可使用這項政策建立的端點數量上限。如未指定上限,則代表沒有限制。SUBNETS:一或多個一般消費者子網路,用於為 Private Service Connect 端點分配 IP 位址。系統會自動分配這些 IP 位址,並在建立及刪除代管服務執行個體時,將 IP 位址傳回子網路的集區。子網路必須與服務連線政策位於相同區域。如果多個連線政策共用相同區域,您可以在這些政策中重複使用相同的子網路。您可以輸入多個子網路,並以半形逗號分隔。SERVICE_CLASS:服務類別的供應商提供資源 ID。
HTTP 方法和網址:
POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies?serviceConnectionPolicyId=POLICY_NAME
JSON 要求主體:
{
"description": "DESCRIPTION",
"network": "projects/PROJECT_ID/global/networks/NETWORK",
"pscConfig": {
"limit": "LIMIT",
"subnetworks": [
"projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET"
]
},
"serviceClass": "SERVICE_CLASS"
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.networkconnectivity.v1.OperationMetadata",
"createTime": "2023-08-15T16:59:29.236110917Z",
"target": "projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies/POLICY_NAME",
"verb": "create",
"requestedCancellation": false,
"apiVersion": "v1"
},
"done": false
}
自動建立服務連線政策
建立 Cloud SQL 執行個體時,您可以自動建立服務連線政策,但這個選項需要額外的管理權限。
控制台
如果您使用 Google Cloud 控制台,請建立啟用 Private Service Connect 的 Cloud SQL 執行個體。 Google Cloud 控制台會檢查必要角色,並自動設定。如果專案尚未啟用 Network Connectivity API,您可能需要啟用這項 API。
gcloud 或 REST
如果您使用 gcloud CLI 或 Cloud SQL Admin API,則必須先授予 Cloud SQL 服務代理程式其他角色,才能建立執行個體。
如果專案中尚未有專屬的 Cloud SQL 服務代理程式,請在將代管 Cloud SQL 執行個體的專案中建立一個。
如要建立服務代理程式,請執行下列指令:
gcloud beta services identity create \ --service=sqladmin.googleapis.com \ --project=INSTANCE_PROJECT
更改下列內容:
INSTANCE_PROJECT: 您打算在其中建立 Cloud SQL 執行個體的專案。
這項指令會建立格式為
service-INSTANCE_PROJECT_NUMBER@gcp-sa-cloudsql.iam.gserviceaccount.com的服務代理程式。將下列角色授予服務代理,為 Cloud SQL 服務代理提供必要的 IAM 權限:
- 服務自動化用戶端網路管理員
(
roles/networkconnectivity.consumerNetworkAdmin) - Compute 網路檢視者 (
roles/compute.networkViewer)
如要將角色新增至 Cloud SQL 服務代理人,請執行下列指令:
gcloud projects add-iam-policy-binding CONSUMER_PROJECT \ --member='serviceAccount:CLOUD_SQL_SERVICE_AGENT' \ --role='roles/networkconnectivity.consumerNetworkAdmin' gcloud projects add-iam-policy-binding CONSUMER_PROJECT \ --member='serviceAccount:CLOUD_SQL_SERVICE_AGENT' \ --role='roles/compute.networkViewer'
更改下列內容:
CONSUMER_PROJECT:要建立 Private Service Connect 端點的專案。如果您使用共用虛擬私有雲網路,則可以是主專案或服務專案。CLOUD_SQL_SERVICE_AGENT:您建立的 Cloud SQL 服務代理程式帳戶電子郵件地址。
- 服務自動化用戶端網路管理員
(
建立 Cloud SQL 執行個體
您可以建立已啟用 Private Service Connect 的執行個體,並使用 Google Cloud 控制台、gcloud CLI 或 API,將執行個體設定為自動建立端點。
控制台
-
前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。
- 在「自訂執行個體」部分,展開「連線」部分。
- 勾選「Private IP」(私人 IP) 核取方塊。
- 在「選擇私人連線方法」部分,選取「Private Service Connect (PSC)」核取方塊。
- 在「端點設定」部分,按一下「新增端點」。
- 在「端點設定」部分,執行下列操作:
- 在「New Endpoint」(新端點) 資訊卡中,從「Project」(專案) 選單選取要設定端點的專案。
- 從「網路」選單中,為端點選取網路。
- 如果尚未啟用 Network Connectivity API,請點選「啟用」。
- 按一下「確認網路設定」。如果系統偵測到所選網路的服務連線政策,就會顯示成功訊息。如果系統未偵測到服務連線政策,但已成功授予權限,則 Google Cloud 會為您建立服務連線政策。
- 選用:完成任何其他執行個體設定選項。
- 點選「建立執行個體」。
gcloud
如要建立已啟用 Private Service Connect 的執行個體,請使用 gcloud sql instances create 指令:
gcloud sql instances create INSTANCE_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --cpu=NUMBER_OF_vCPUs \ --memory=MEMORY_SIZE \ --root-password=ROOT_PASSWORD \ --availability-type=AVAILABILITY_TYPE \ --database-version=DATABASE_VERSION \ --no-assign-ip \ --enable-private-service-connect \ --allowed-psc-projects=ALLOWED_PROJECTS \ --psc-auto-connections=network=CONSUMER_NETWORK,project=CONSUMER_PROJECT \ --enable-psc-auto-dns \ --enable-psc-write-endpoint-dns
選用。如要在建立 Cloud SQL 執行個體時自動建立或更新服務連線政策,請在指令中加入 --enable-psc-auto-connection-policy 參數。如要使用這個參數,必須設定額外權限。詳情請參閱「自動建立服務連線政策」。
更改下列內容:
INSTANCE_NAME:執行個體的名稱。PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號。REGION_NAME:執行個體的區域名稱。NUMBER_OF_vCPUs:執行個體的核心數量。MEMORY_SIZE:執行個體的記憶體容量。ROOT_PASSWORD:rootCloud SQL 使用者的密碼。AVAILABILITY_TYPE:為執行個體啟用高可用性。請為這個參數指定下列其中一個值:REGIONAL:可提高高可用性,建議用於正式版執行個體。執行個體會容錯移轉至所選區域內的其他可用區。ZONAL:不提供容錯移轉功能。這是預設值。
如要進一步瞭解如何為執行個體設定及移除高可用性,請參閱「設定現有執行個體的高可用性」和「停用執行個體的高可用性」。
DATABASE_VERSION:執行個體的資料庫版本 (例如SQLSERVER_2019_STANDARD)。ALLOWED_PROJECTS:以半形逗號分隔的允許專案 ID 或編號清單,Private Service Connect 端點可從這些專案連線至 Cloud SQL 執行個體。如果專案不在這個清單中,您就無法在專案中建立 Private Service Connect 端點,連線至執行個體。
CONSUMER_NETWORK:虛擬私有雲網路的路徑,必須從該網路建立 Private Service Connect 端點。例如:projects/my-host-project/global/networks/default。CONSUMER_PROJECT:建立 Private Service Connect 端點的專案。如果您使用 Shared VPC 虛擬私有雲網路,則可以是主專案或服務專案。您在自動連線參數中指定的任何專案,都會自動新增至允許的專案。您也可以選擇將要手動建立 Private Service Connect 端點的專案,新增至允許的專案清單。
使用這些參數啟用及設定 Private Service Connect:
--enable-private-service-connect:啟用 Private Service Connect。--allowed-psc-projects=ALLOWED_PROJECTS:指定以半形逗號分隔的允許專案 ID 或數字清單。這些是 Private Service Connect 端點可連線至 Cloud SQL 執行個體的專案。--psc-auto-connections=network=CONSUMER_NETWORK,project=CONSUMER_PROJECT: 指定需要建立 Private Service Connect 端點的虛擬私有雲網路路徑。--enable-psc-auto-dns:指出是否應為這個執行個體啟用 Private Service Connect DNS 自動化功能。使用--enable-private-service-connect啟用 Private Service Connect 時,新執行個體預設會停用這項功能。啟用 DNS 自動化功能後,Cloud SQL 會在所有設定 Private Service Connect 自動連線的網路中,佈建每個執行個體的 DNS 記錄。
--enable-psc-write-endpoint-dns:指出這個執行個體是否已啟用 Private Service Connect 寫入端點 DNS 自動化功能。這項功能僅適用於已設定--enable-psc-auto-dns的 Enterprise Plus 執行個體,且預設會在建立新執行個體時停用。啟用寫入端點 DNS 自動化功能後,Cloud SQL 會在所有設定 Private Service Connect 自動連線的網路中,佈建全域 DNS 記錄,做為複寫叢集的寫入端點。這個全域 DNS 記錄一律會指向複寫叢集的目前主要執行個體,因此在發生副本容錯移轉或切換作業時,應用程式可以順暢地完成容錯移轉,不必更新任何用戶端連線字串。
REST
使用任何要求資料之前,請先修改下列項目的值:
- INSTANCE_NAME:Cloud SQL 執行個體的名稱。
- PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號。
- REGION_NAME:執行個體的區域名稱。
- DATABASE_VERSION:執行個體的資料庫版本 (例如
SQLSERVER_2019_STANDARD)。 - ROOT_PASSWORD:
rootCloud SQL 使用者的密碼。 - AVAILABILITY_TYPE:執行個體的可用區類型。使用這個參數,指定下列其中一個值,即可啟用或停用執行個體的高可用性:
REGIONAL:啟用高可用性,建議用於實際工作環境執行個體。執行個體會容錯移轉至所選區域內的其他可用區。ZONAL:不提供切換功能。這是預設值。
如要進一步瞭解如何為執行個體設定及移除高可用性,請參閱「為現有執行個體設定高可用性」和「停用執行個體的高可用性」。
- ALLOWED_PROJECTS:以半形逗號分隔的允許專案 ID 或編號清單,Private Service Connect 端點可從這些專案連線至 Cloud SQL 執行個體。
如果專案不在這份清單中,您就無法在專案中建立 Private Service Connect 端點,連線至執行個體。
-
CONSUMER_PROJECT:建立 Private Service Connect 端點的專案。如果您使用共用虛擬私有雲網路,則可以是主專案或服務專案。
您在自動連線參數中指定的任何專案,都會自動新增至允許的專案。如要手動建立 Private Service Connect 端點,可以選擇將專案新增至允許的專案清單。
- PARENT_PROJECT:包含網路 CONSUMER_NETWORK 的專案。如未在 CONSUMER_PROJECT 中指定其他專案,系統會在 PARENT_PROJECT 中自動建立端點
-
CONSUMER_PROJECT:選用。只有在 CONSUMER_NETWORK 是共用虛擬私有雲網路,且您想在服務專案中自動建立 Private Service Connect 端點時,才需要指定這個參數。
您在自動連線參數中指定的任何專案,都會自動新增至允許的專案。如要手動建立 Private Service Connect 端點,可以將專案新增至允許的專案清單。
- CONSUMER_NETWORK:您要允許自動建立 Private Service Connect 端點的虛擬私有雲網路。例如:
projects/my-host-project/global/networks/default。 - MACHINE_TYPE:列舉字串值,代表執行個體的機型。舉例來說:code>db-custom-NUMBER_OF_vCPUs-MEMORY_SIZE,其中 NUMBER_OF_vCPUs 和 MEMORY_SIZE 分別是執行個體的核心數量和記憶體大小。
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
JSON 要求主體:
{
"name": "INSTANCE_NAME",
"project": PROJECT_ID",
"region": "REGION_NAME",
"databaseVersion": "SQLSERVER_2019_STANDARD",
"rootPassword": "ROOT_PASSWORD",
"kind": "sql#instance",
"settings": {
"availabilityType": "AVAILABILITY_TYPE",
"ipConfiguration": {
"ipv4Enabled": false,
"pscConfig": {
"allowedConsumerProjects": [
"ALLOWED_PROJECTS"
],
"pscAutoConnections": [
{
"consumerProject":"CONSUMER_PROJECT",
"consumerNetwork":"projects/PARENT_PROJECT/global/networks/CONSUMER_NETWORK"
}
],
"pscEnabled": true,
"pscAutoConnectionPolicyEnabled": true,
"pscAutoDnsEnabled": true,
"pscWriteEndpointDnsEnabled": true
}
},
"kind": "sql#settings",
"pricingPlan": "PER_USE",
"replicationType": "SYNCHRONOUS",
"tier": "MACHINE_TYPE"
}
}請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME",
"status": "RUNNING",
"user": "user@example.com",
"insertTime": "2020-01-16T02:32:12.281Z",
"startTime": "2023-06-14T18:48:35.499Z",
"operationType": "CREATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_NAME",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
您可以使用下列欄位啟用 DNS 自動化和全域寫入端點 DNS 名稱:
psc_auto_dns_enabled:指出這個執行個體是否已啟用 Private Service Connect DNS 自動化功能。使用--enable-private-service-connect啟用 Private Service Connect 時,新執行個體預設會停用這項功能。啟用 DNS 自動化功能後,Cloud SQL 會在所有設定 Private Service Connect 自動連線的網路中,佈建通用 DNS 記錄。
psc_write_endpoint_dns_enabled:指出這個執行個體是否已啟用 Private Service Connect 寫入端點 DNS 自動化。這項功能僅適用於已設定--enable-psc-auto-dns的 Enterprise Plus 執行個體,且新建立執行個體時,這項功能預設為停用。啟用寫入端點 DNS 自動化功能後,Cloud SQL 會在所有設定 Private Service Connect 自動連線的網路中,佈建全域 DNS 記錄做為寫入端點。這個全域 DNS 記錄一律會指向複寫叢集的目前主要執行個體,因此在發生副本容錯移轉或切換作業時,應用程式可以順暢地完成容錯移轉,不必更新任何用戶端連線字串。
如要在建立執行個體時自動建立服務連線政策,請啟用下列欄位:
psc_auto_connection_policy_enabled:指出是否要在建立 Cloud SQL 執行個體時,允許Google Cloud 建立或更新服務連結政策。如要使用這個選項,必須設定額外權限。詳情請參閱「自動建立服務連線政策」。
Terraform
如要建立執行個體,請使用具有 psc_config 欄位的 Terraform 資源:
resource "google_sql_database_instance" "INSTANCE_NAME"
{
name = "INSTANCE_NAME"
database_version = "DATABASE_VERSION"
settings
{
tier = "MACHINE_TYPE"
ip_configuration
{
psc_config
{
psc_enabled = true
psc_auto_dns_enabled = true
psc_write_endpoint_dns_enabled = true
allowed_consumer_projects = ["ALLOWED_PROJECTS"]
psc_auto_connections
{
consumer_network = "CONSUMER_NETWORK"
consumer_service_project_id = "CONSUMER_PROJECT"
}
}
ipv4_enabled = false
}
}
}更改下列內容:
INSTANCE_NAME:執行個體的名稱。DATABASE_VERSION:執行個體的資料庫版本 (例如SQLSERVER_2019_STANDARD)。MACHINE_TYPE:執行個體的機型。ALLOWED_PROJECTS:以半形逗號分隔的允許專案 ID 或編號清單,Private Service Connect 端點可從這些專案連線至 Cloud SQL 執行個體。如果專案不在這個清單中,您就無法在專案中建立 Private Service Connect 端點,連線至執行個體。
CONSUMER_NETWORK:虛擬私有雲網路的路徑,必須從該網路建立 Private Service Connect 端點。例如:projects/my-host-project/global/networks/default。CONSUMER_PROJECT:建立 Private Service Connect 端點的專案。如果您使用 Shared VPC 虛擬私有雲網路,則可以是主專案或服務專案。
使用這些欄位啟用 DNS 自動化和全域寫入端點 DNS 名稱:
psc_auto_dns_enabled:指出這個執行個體是否已啟用 Private Service Connect DNS 自動化功能。使用--enable-private-service-connect啟用 Private Service Connect 時,新執行個體預設會停用這項功能。啟用 DNS 自動化功能後,Cloud SQL 會在所有設定 Private Service Connect 自動連線的網路中,佈建通用 DNS 記錄。
psc_write_endpoint_dns_enabled:指出這個執行個體是否已啟用 Private Service Connect 寫入端點 DNS 自動化。這項功能僅適用於已設定--enable-psc-auto-dns的 Enterprise Plus 執行個體,且新建立執行個體時,這項功能預設為停用。啟用寫入端點 DNS 自動化功能後,Cloud SQL 會在所有設定 Private Service Connect 自動連線的網路中,佈建全域 DNS 記錄做為寫入端點。這個全域 DNS 記錄一律會指向複寫叢集的目前主要執行個體,因此在發生副本容錯移轉或切換作業時,應用程式可以順暢地完成容錯移轉,不必更新任何用戶端連線字串。
如要啟用 Private Service Connect 並自動建立服務連線政策,請使用下列欄位:
psc_auto_connection_policy_enabled:指出是否要在建立 Cloud SQL 執行個體時,允許Google Cloud 建立或更新服務連結政策。如要使用這個選項,必須設定額外權限。詳情請參閱「自動建立服務連線政策」。
套用變更
如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節的步驟。
準備 Cloud Shell
- 啟動 Cloud Shell。
-
設定要套用 Terraform 設定的預設 Google Cloud 專案 。
每個專案只需要執行一次這個指令,且可以在任何目錄中執行。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
如果您在 Terraform 設定檔中設定明確值,環境變數就會遭到覆寫。
準備目錄
每個 Terraform 設定檔都必須有自己的目錄 (也稱為根模組)。
-
在 Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱的副檔名必須是
.tf,例如main.tf。在本教學課程中,這個檔案稱為main.tf。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
如果您正在學習教學課程,可以複製每個章節或步驟中的程式碼範例。
將程式碼範例複製到新建立的
main.tf中。視需要從 GitHub 複製程式碼。如果 Terraform 程式碼片段是端對端解決方案的一部分,建議您使用這個選項。
- 查看並修改範例參數,套用至您的環境。
- 儲存變更。
-
初始化 Terraform。每個目錄只需執行一次這項操作。
terraform init
如要使用最新版 Google 供應商,請加入
-upgrade選項:terraform init -upgrade
套用變更
-
查看設定,確認 Terraform 即將建立或更新的資源符合您的預期:
terraform plan
視需要修正設定。
-
執行下列指令,並在提示中輸入
yes,套用 Terraform 設定:terraform apply
等待 Terraform 顯示「Apply complete!」訊息。
- 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。
刪除變更
如要刪除變更,請按照下列步驟操作:
- 如要停用防刪除功能,請在 Terraform 設定檔中將
deletion_protection引數設為false。deletion_protection = "false"
- 執行下列指令,並在提示中輸入
yes,套用更新的 Terraform 設定:terraform apply
-
執行下列指令,並在提示中輸入
yes,即可移除先前透過 Terraform 設定套用的資源:terraform destroy
擷取端點
擷取內部 IP 位址 (執行個體的 Private Service Connect 端點) 後,您可以使用這個端點連線至執行個體。
gcloud
如要查看執行個體的相關資訊,包括執行個體的 Private Service Connect 端點 IP 位址,請使用 gcloud sql instances describe 指令:
gcloud sql instances describe INSTANCE_NAME \ --project=PROJECT_ID \ --format='json(settings.ipConfiguration.pscConfig.pscAutoConnections)'
請將下列項目改為對應的值:
- INSTANCE_NAME: :Cloud SQL 執行個體的名稱。如果這個執行個體已啟用 Private Service Connect,虛擬私有雲網路中的 Private Service Connect 端點就能連線至該執行個體。
- PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號。
在回應中,請記下「pscConfig:pscAutoConnections:ipAddress」欄位旁顯示的值。這個值是執行個體的內部 IP 位址,也是 Private Service Connect 端點。
REST
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號。
- INSTANCE_NAME: :Cloud SQL 執行個體的名稱。如果這個執行個體已啟用 Private Service Connect,虛擬私有雲網路中的 Private Service Connect 端點就能連線至該執行個體。
HTTP 方法和網址:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#instance",
"state": "RUNNABLE",
"databaseVersion": "SQLSERVER_2019_STANDARD",
"settings": {
"authorizedGaeApplications": [],
"tier": "db-custom-2-7680",
"kind": "sql#settings",
"availabilityType": "REGIONAL",
"pricingPlan": "PER_USE",
"replicationType": "SYNCHRONOUS",
"activationPolicy": "ALWAYS",
"ipConfiguration": {
"authorizedNetworks": [],
"pscConfig": {
"allowedConsumerProjects": [
"ALLOWED_PROJECTS"
],
"pscAutoConnections": {
consumerNetwork:"projects/PARENT_PROJECT/global/networks/CONSUMER_NETWORK",
consumerNetworkStatus:"CONSUMER_NETWORK_STATUS",
consumerProject:"CONSUMER_PROJECT",
ipAddress:"IP_ADDRESS",
status:"STATUS"
},
"pscEnabled": true
},
"ipv4Enabled": false
},
}
如果執行個體已啟用 Private Service Connect,則會包含下列欄位:
allowedConsumerProjects:執行個體的允許專案清單。您可以在這些專案的任何虛擬私有雲網路中,建立 Private Service Connect 端點,連至執行個體的服務連結。pscAutoConnections:允許的虛擬私有雲網路、服務連線政策的狀態,以及執行個體端點的 IP 位址狀態。pscEnabled:執行個體是否已啟用 Private Service Connect。
如要瞭解如何建立這項工作的基礎 REST API 要求,請參閱 instances:get 頁面。
手動建立端點
如要手動建立 Private Service Connect 端點,請按照下列步驟操作:
建立 Cloud SQL 執行個體,並為該執行個體啟用 Private Service Connect。
取得服務連結 URI。您可以使用這個 URI 建立 Private Service Connect 端點。
為 Private Service Connect 端點預留內部 IP 位址,並使用該位址建立端點。
建立 Cloud SQL 執行個體
您可以使用 gcloud CLI、Terraform 或 API,為執行個體建立並啟用 Private Service Connect。
gcloud
如要建立已啟用 Private Service Connect 的執行個體,請使用 gcloud sql instances create 指令:
gcloud sql instances create INSTANCE_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --enable-private-service-connect \ --allowed-psc-projects=ALLOWED_PROJECTS \ --availability-type=AVAILABILITY_TYPE \ --no-assign-ip \ --database-version=DATABASE_VERSION --cpu=NUMBER_OF_vCPUs \ --memory=MEMORY_SIZE \ --root-password=ROOT_PASSWORD
請將下列項目改為對應的值:
- INSTANCE_NAME:執行個體的名稱。
- PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號。
- REGION_NAME:執行個體的區域名稱。
ALLOWED_PROJECTS:以半形逗號分隔的允許專案 ID 或編號清單,Private Service Connect 端點可從這些專案連線至 Cloud SQL 執行個體。
如果專案不在這個清單中,您就無法在專案中建立 Private Service Connect 端點,連線至執行個體。
- AVAILABILITY_TYPE:為執行個體啟用高可用性。請為這個參數指定下列其中一個值:
REGIONAL:啟用高可用性,建議用於實際工作環境執行個體。執行個體會容錯移轉至所選區域內的其他可用區。ZONAL:不提供容錯移轉功能。這是預設值。
如要進一步瞭解如何為執行個體設定及移除高可用性,請參閱「為現有執行個體設定高可用性」和「停用執行個體的高可用性」。
- DATABASE_VERSION:執行個體的資料庫版本 (例如
SQLSERVER_2019_STANDARD)。 - NUMBER_OF_vCPUs: 實例的核心數。
- MEMORY_SIZE: 實例的記憶體量。
- ROOT_PASSWORD:
rootCloud SQL 使用者的密碼。
Terraform
如要建立啟用 Private Service Connect 的執行個體,請使用 google_sql_database_instanceTerraform 資源。
如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節的步驟。
準備 Cloud Shell
- 啟動 Cloud Shell。
-
設定要套用 Terraform 設定的預設 Google Cloud 專案 。
每個專案只需要執行一次這個指令,且可以在任何目錄中執行。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
如果您在 Terraform 設定檔中設定明確值,環境變數就會遭到覆寫。
準備目錄
每個 Terraform 設定檔都必須有自己的目錄 (也稱為根模組)。
-
在 Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱的副檔名必須是
.tf,例如main.tf。在本教學課程中,這個檔案稱為main.tf。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
如果您正在學習教學課程,可以複製每個章節或步驟中的程式碼範例。
將程式碼範例複製到新建立的
main.tf中。視需要從 GitHub 複製程式碼。如果 Terraform 程式碼片段是端對端解決方案的一部分,建議您使用這個選項。
- 查看並修改範例參數,套用至您的環境。
- 儲存變更。
-
初始化 Terraform。每個目錄只需執行一次這項操作。
terraform init
如要使用最新版 Google 供應商,請加入
-upgrade選項:terraform init -upgrade
套用變更
-
查看設定,確認 Terraform 即將建立或更新的資源符合您的預期:
terraform plan
視需要修正設定。
-
執行下列指令,並在提示中輸入
yes,套用 Terraform 設定:terraform apply
等待 Terraform 顯示「Apply complete!」訊息。
- 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。
REST
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號。
- INSTANCE_NAME:執行個體的名稱。
- REGION_NAME:執行個體的區域名稱。
- ROOT_PASSWORD:
rootCloud SQL 使用者的密碼。 - AVAILABILITY_TYPE:為執行個體啟用高可用性。請為這個參數指定下列其中一個值:
REGIONAL:啟用高可用性,建議用於實際工作環境執行個體。執行個體會容錯移轉至所選區域內的其他可用區。ZONAL:不提供容錯移轉功能。這是預設值。
如要進一步瞭解如何為執行個體設定及移除高可用性,請參閱「為現有執行個體設定高可用性」和「停用執行個體的高可用性」。
ALLOWED_PROJECTS:以半形逗號分隔的允許專案 ID 或編號清單,Private Service Connect 端點可從這些專案連線至 Cloud SQL 執行個體。
如果專案不在這個清單中,您就無法在專案中建立 Private Service Connect 端點,連線至執行個體。
- MACHINE_TYPE:列舉字串值,代表執行個體的機型。例如:
db-custom-NUMBER_OF_vCPUs-MEMORY_SIZE,其中 NUMBER_OF_vCPUs 和 MEMORY_SIZE 是您希望執行個體擁有的核心數量和記憶體容量。
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
JSON 要求主體:
{
"name": "INSTANCE_NAME",
"project": PROJECT_ID",
"region": "REGION_NAME",
"databaseVersion": "SQLSERVER_2019_STANDARD",
"rootPassword": "ROOT_PASSWORD",
"kind": "sql#instance",
"settings": {
"availabilityType": "AVAILABILITY_TYPE",
"ipConfiguration": {
"ipv4Enabled": false,
"pscConfig": {
"allowedConsumerProjects": [
"ALLOWED_PROJECTS"
],
"pscEnabled": true
}
},
"kind": "sql#settings",
"pricingPlan": "PER_USE",
"replicationType": "SYNCHRONOUS",
"tier": "MACHINE_TYPE"
}
}請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME",
"status": "RUNNING",
"user": "user@example.com",
"insertTime": "2020-01-16T02:32:12.281Z",
"startTime": "2023-06-14T18:48:35.499Z",
"operationType": "CREATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_NAME",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
取得服務連結
建立啟用 Private Service Connect 的 Cloud SQL 執行個體後,請取得服務連結 URI,並使用該 URI 建立 Private Service Connect 端點。
gcloud
如要查看啟用 Private Service Connect 的執行個體摘要資訊,例如顯示指向執行個體服務連結的 URI 的 pscServiceAttachmentLink 欄位,請使用 gcloud sql instances describe 指令:
gcloud sql instances describe INSTANCE_NAME \ --project=PROJECT_ID
請將下列項目改為對應的值:
- INSTANCE_NAME:虛擬私有雲網路中的 Private Service Connect 端點可連線的 Cloud SQL 執行個體名稱
- PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號
以下範例顯示這項指令的輸出範例:
gcloud sql instances describe myinstance \ --project=12345 ... pscServiceAttachmentLink: projects/45678/regions/myregion/serviceAttachments/myserviceattachment
REST
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號
- INSTANCE_NAME:執行個體的名稱
HTTP 方法和網址:
GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
...
pscServiceAttachmentLink: "projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME"
}
pscServiceAttachmentLink 欄位會顯示指向執行個體服務連結的 URI。
建立 Private Service Connect 端點
您可以為 Private Service Connect 端點預留內部 IP 位址,並使用該位址建立端點。如要建立端點,您需要服務連結 URI 和允許執行個體存取的專案。
gcloud
如要為 Private Service Connect 端點預留內部 IP 位址,請使用
gcloud compute addresses create指令:gcloud compute addresses create ADDRESS_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --subnet=SUBNET_URI \ --addresses=INTERNAL_IP_ADDRESS
請將下列項目改為對應的值:
- ADDRESS_NAME:內部 IP 位址的名稱。
- PROJECT_ID:端點所屬 Google Cloud 專案的 ID 或專案編號。
- REGION_NAME:端點的區域名稱。
- SUBNET_URI:IP 位址的子網路名稱。格式為:
projects/SUBNET_PROJECT_ID/regions/REGION_NAME/subnetworks/SUBNET_NAME。 如果子網路位於共用虛擬私有雲網路中,建議 SUBNET_PROJECT_ID 為主專案。 - INTERNAL_IP_ADDRESS:要保留的 IP 位址。這個 IP 位址必須位於子網路的主要 IP 範圍內。IP 位址可以是 RFC 1918 位址,也可以是具有非 RFC 範圍的子網路。如要 Google Cloud 保留子網路中可用的 IP 位址,請省略這個旗標。
如要確認 IP 位址是否已保留,請使用
gcloud compute addresses list指令:gcloud compute addresses list ADDRESS_NAME \ --project=PROJECT_ID
在回應中,確認 IP 位址的狀態為
RESERVED。如要建立 Private Service Connect 端點並指向 Cloud SQL 服務連結,請使用
gcloud compute forwarding-rules create指令:gcloud compute forwarding-rules create ENDPOINT_NAME \ --address=ADDRESS_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --network=NETWORK_URI \ --target-service-attachment=SERVICE_ATTACHMENT_URI \ --allow-psc-global-access
請將下列項目改為對應的值:
- ENDPOINT_NAME:端點名稱
- NETWORK_URI:端點的虛擬私有雲網路 URI。格式為:
projects/NETWORK_PROJECT_ID/global/networks/NETWORK_NAME。 如要使用共用虛擬私有雲網路,請將主專案指定為 NETWORK_PROJECT_ID。 - SERVICE_ATTACHMENT_URI:服務連結的 URI
如要確認服務連結是否接受端點,請使用
gcloud compute forwarding-rules describe指令:gcloud compute forwarding-rules describe ENDPOINT_NAME \ --project=PROJECT_ID \ --region=REGION_NAME
在回應中,確認
pscConnectionStatus欄位顯示ACCEPTED狀態。端點可以連線至服務連結。
Terraform
如要建立 Private Service Connect 端點,請使用 google_sql_database_instanceTerraform 資源。
使用下列範例建立 IPv4 Private Service Connect 端點。
使用下列範例建立 IPv6 Private Service Connect 端點。
如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節的步驟。
準備 Cloud Shell
- 啟動 Cloud Shell。
-
設定要套用 Terraform 設定的預設 Google Cloud 專案 。
每個專案只需要執行一次這個指令,且可以在任何目錄中執行。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
如果您在 Terraform 設定檔中設定明確值,環境變數就會遭到覆寫。
準備目錄
每個 Terraform 設定檔都必須有自己的目錄 (也稱為根模組)。
-
在 Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱的副檔名必須是
.tf,例如main.tf。在本教學課程中,這個檔案稱為main.tf。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
如果您正在學習教學課程,可以複製每個章節或步驟中的程式碼範例。
將程式碼範例複製到新建立的
main.tf中。視需要從 GitHub 複製程式碼。如果 Terraform 程式碼片段是端對端解決方案的一部分,建議您使用這個選項。
- 查看並修改範例參數,套用至您的環境。
- 儲存變更。
-
初始化 Terraform。每個目錄只需執行一次這項操作。
terraform init
如要使用最新版 Google 供應商,請加入
-upgrade選項:terraform init -upgrade
套用變更
-
查看設定,確認 Terraform 即將建立或更新的資源符合您的預期:
terraform plan
視需要修正設定。
-
執行下列指令,並在提示中輸入
yes,套用 Terraform 設定:terraform apply
等待 Terraform 顯示「Apply complete!」訊息。
- 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。
REST
為 Private Service Connect 端點預留內部 IP 位址。
確認 IP 位址已保留。
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:包含 Private Service Connect 端點的 Google Cloud 專案 ID 或專案編號
- REGION_NAME:區域名稱
- ADDRESS_NAME:IP 位址的名稱
HTTP 方法和網址:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{ "kind": "compute#address", "id": "ADDRESS_ID", "creationTimestamp": "2024-05-09T11:20:50.114-07:00", "name": "ADDRESS_NAME", "description": "This is the name of the internal IP address.", "address": "IP_ADDRESS", "status": "RESERVED", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME", "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID", "addressType": "EXTERNAL" }在回應中,確認 IP 位址的狀態為
RESERVED。建立 Private Service Connect 端點,並指向 Cloud SQL 服務連結。
確認服務連結接受端點。
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:包含 Private Service Connect 端點的 Google Cloud 專案 ID 或專案編號
- REGION_NAME:區域名稱
- ENDPOINT_NAME:端點名稱
HTTP 方法和網址:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{ "kind": "compute#forwardingRule", "id": "ENDPOINT_ID", "creationTimestamp": "2024-05-09T12:03:21.383-07:00", "name": "ENDPOINT_NAME", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME", "IPAddress": "IP_ADDRESS", "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/default", "serviceDirectoryRegistrations": [ { "namespace": "goog-psc-default" } ], "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID", "fingerprint": "FINGERPRINT_ID", "pscConnectionId": "CONNECTION_ID", "pscConnectionStatus": "ACCEPTED", "allowPscGlobalAccess": true }在回應中,確認
pscConnectionStatus欄位顯示ACCEPTED狀態。端點可以連線至服務連結。
連線至 Cloud SQL 執行個體
如要連線至已啟用 Private Service Connect 的 Cloud SQL 執行個體,可以使用內部 IP 位址、DNS 記錄、Cloud SQL Auth Proxy、Cloud SQL 語言連接器或其他Google Cloud 應用程式。
使用 DNS 記錄連線
建議您使用 DNS 連線至已啟用 Private Service Connect 的執行個體。不同網路可透過 DNS 名稱連線至同一個執行個體,但各網路中的 Private Service Connect 端點可能會有不同的 IP 位址。此外,Cloud SQL Auth Proxy 需要 DNS 名稱才能連線至這些執行個體。如要瞭解如何設定 DNS,請參閱「設定 Private Service Connect 的 DNS」。
使用 DNS 記錄連線至 Cloud SQL 執行個體前,請先完成下列步驟:
- 建立 Private Service Connect 端點。
- 確認執行個體的服務連結接受端點。如要確認端點狀態為
ACCEPTED,請檢查狀態。 - 設定 DNS 代管區域和 DNS 記錄。
符合這些條件後,您就可以使用 DNS 記錄,從建立端點的任何虛擬私有雲網路連線至執行個體。
sqlcmd -S DNS_RECORD -d DATABASE_NAME -U USERNAME
請將下列項目改為對應的值:
- DNS_RECORD:端點的 DNS 記錄
- DATABASE_NAME:執行個體內含的 SQL Server 適用的 Cloud SQL 資料庫名稱
- USERNAME:連線至執行個體的使用者名稱
透過內部 IP 位址直接連線
如要連線至已啟用 Private Service Connect 的 Cloud SQL 執行個體,請先完成下列步驟:
- 建立 Private Service Connect 端點。
- 確認執行個體的服務連結接受端點。如要確認端點狀態為
ACCEPTED,請檢查狀態。
符合這些條件後,您就能使用端點的 IP 位址,從建立端點的任何虛擬私有雲網路存取執行個體。
使用端點 IP 位址的名稱,擷取 Private Service Connect 端點的內部 IP 位址。
gcloud
如要擷取 IP 位址,請使用
gcloud compute addresses describe指令:gcloud compute addresses describe ADDRESS_NAME \ --project=PROJECT_ID \ --region=REGION_NAME
請將下列項目改為對應的值:
- ADDRESS_NAME:端點 IP 位址的名稱
- PROJECT_ID:包含端點的 Google Cloud 專案 ID 或專案編號
- REGION_NAME:端點的區域名稱
在回應中,確認
address欄位是否顯示 IP 位址。這是內部 IP 位址。REST
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:包含端點的 Google Cloud 專案 ID 或專案編號
- REGION_NAME:端點的區域名稱
- ADDRESS_NAME:端點 IP 位址的名稱
HTTP 方法和網址:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{ "kind": "compute#address", "id": "ADDRESS_ID", "creationTimestamp": "2024-05-09T11:20:50.114-07:00", "name": "ADDRESS_NAME", "description": "This is the name of the internal IP address.", "address": "IP_ADDRESS", "status": "RESERVED", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME", "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID", "addressType": "EXTERNAL" }內部 IP 位址是與
address欄位相關聯的值。或者,您也可以使用 Cloud SQL 執行個體的服務連結,擷取 Private Service Connect 端點的內部 IP 位址。
gcloud
如要擷取 IP 位址,請使用
gcloud compute forwarding-rules list指令:gcloud compute forwarding-rules list \ --filter="TARGET:REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME" \ --project=PROJECT_ID
請將下列項目改為對應的值:
- REGION_NAME:端點的區域名稱
- PROJECT_ID:包含端點的 Google Cloud 專案 ID 或專案編號
- SERVICE_ATTACHMENT_NAME:Cloud SQL 執行個體的服務連結名稱
確認回應中是否顯示 IP 位址。這是內部 IP 位址。
以下是回應範例:
NAMEREGIONIP_ADDRESSTARGETmyInstanceus-central110.10.10.10us-central1/serviceAttachments/a-123456789e0a-psc-service-attachment-abc123d4e5f67gh8REST
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:包含端點的 Google Cloud 專案 ID 或專案編號
- REGION_NAME:端點的區域名稱
- SERVICE_ATTACHMENT_PROJECT_ID:包含服務附件的 Google Cloud 專案 ID 或專案編號
- SERVICE_ATTACHMENT_NAME:Cloud SQL 執行個體的服務連結名稱
HTTP 方法和網址:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules?target="https://www.googleapis.com/compute/v1/projects/SERVICE_ATTACHMENT_PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME"
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{ "kind": "compute#forwardingRuleList", "id": "projects/PROJECT_ID/regions/REGION_NAME/forwardingRules", "items": [ { "kind": "compute#forwardingRule", "id": "FORWARDING_RULE_ID", "creationTimestamp": "2023-10-31T13:04:37.168-07:00", "name": "FORWARDING_RULE_NAME", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME", "IPAddress": "IP_ADDRESS", "target": "https://www.googleapis.com/compute/v1/projects/SERVICE_ATTACHMENT_PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/FORWARDING_RULE_NAME", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME", "serviceDirectoryRegistrations": [ { "namespace": "goog-psc-default" } ], "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID", "fingerprint": "FINGERPRINT_ID", "pscConnectionId": "PSC_CONNECTION_ID", "pscConnectionStatus": "CLOSED", "allowPscGlobalAccess": true } ], "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules" }內部 IP 位址是與
IPAddress欄位相關聯的值。-
如要連線至 Cloud SQL 執行個體,請使用內部 IP 位址。
sqlcmd -S IP_ADDRESS -d DATABASE_NAME -U USERNAME
請將下列項目改為對應的值:
- IP_ADDRESS:端點的 IP 位址
- DATABASE_NAME:執行個體內含的 SQL Server 適用的 Cloud SQL 資料庫名稱
- USERNAME:連線至執行個體的使用者名稱
使用 Cloud SQL 驗證 Proxy 連線
Cloud SQL Auth Proxy 是一種連接器,可安全存取已啟用 Private Service Connect 的執行個體,不需要授權網路或設定 SSL。
使用執行個體的 Private Service Connect DNS 名稱設定 Cloud SQL Auth Proxy。DNS 名稱會識別 DNS 記錄,將 DNS 資源對應至網域名稱。如要進一步瞭解如何為專案啟用 DNS,請參閱「在 Private Service Connect 中設定 DNS」。如要找出執行個體的現有 DNS 名稱,請參閱「尋找 DNS 名稱」。
如果已啟用進階容錯移轉叢集,您也可以將 Cloud SQL Auth Proxy 設定為使用該叢集的 Private Service Connect 寫入端點 DNS 名稱。舉例來說,如果叢集的 Private Service Connect DNS 寫入端點名稱為 abcdef123456.987654321fedcb.global.sql-psc.goog,您會依下列方式啟動驗證 Proxy:
./cloud-sql-proxy abcdef123456.987654321fedcb.global.sql-psc.goog如果您透過 Private Service Connect 連線,則必須使用 Cloud SQL Auth Proxy 2.5.0 版或更新版本。
下載並安裝 Cloud SQL 驗證 Proxy
如要連線至已啟用 Private Service Connect 的執行個體,您必須下載並安裝 Cloud SQL Auth Proxy 的二進位檔。下載的二進位檔取決於作業系統,以及是否使用 32 位元或 64 位元核心。大多數較新的硬體都使用 64 位元核心。
如果不確定電腦是執行 32 位元還是 64 位元核心,請在 Linux 或 macOS 中使用 uname -a 指令。如為 Windows,請參閱 Windows 說明文件。
啟動 Cloud SQL 驗證 Proxy
Cloud SQL 驗證 Proxy 支援連線至已啟用 Private Service Connect 的執行個體。詳情請參閱「啟動 Cloud SQL Auth Proxy」。
- 查看 Cloud SQL 執行個體的摘要資訊,包括執行個體的連線名稱。
gcloud
如要查看 Cloud SQL 執行個體的摘要資訊,請使用
gcloud sql instances describe指令。gcloud sql instances describe INSTANCE_NAME \ --project=PROJECT_ID \ --format='value(connectionName)'
請將下列項目改為對應的值:
- INSTANCE_NAME:Cloud SQL 執行個體的名稱
- PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號
連線名稱的格式為
PROJECT_ID:REGION_NAME:INSTANCE_NAME。REST
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號
- INSTANCE_NAME:執行個體的名稱
HTTP 方法和網址:
GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{ ... "connectionName": "PROJECT_ID:REGION_NAME:INSTANCE_NAME" }連線名稱的格式為
PROJECT_ID:REGION_NAME:INSTANCE_NAME。 - 複製執行個體連線名稱。
啟動 Cloud SQL 驗證 Proxy:
./cloud-sql-proxy INSTANCE_CONNECTION_NAME --psc
將 INSTANCE_CONNECTION_NAME 替換為您在上一個步驟中複製的執行個體連線名稱。
使用 Cloud SQL 語言連接器連線
Cloud SQL 語言連接器是程式庫,可安全存取已啟用 Private Service Connect 的 Cloud SQL 執行個體,不需要授權網路或設定 SSL。
使用執行個體的 Private Service Connect DNS 名稱,以及進階容錯移轉叢集的 Private Service Connect 寫入端點 DNS 名稱 (如有啟用),設定 Cloud SQL Auth Proxy。DNS 名稱會識別 DNS 記錄,將 DNS 資源對應至網域名稱。如要進一步瞭解如何為專案啟用 DNS,請參閱「在 Private Service Connect 中設定 DNS」。如要找出執行個體的現有 DNS 名稱,請參閱「尋找 DNS 名稱」。
Cloud SQL 語言連接器支援透過各自程式庫中的 PSC IP 類型建立 Private Service Connect 連線。各個連接器的說明文件位於 GitHub 的公開說明文件中,適用於進階災難復原 (DR):
- Cloud SQL Python 連接器 (1.3.0 以上版本)
- Cloud SQL Go 連接器 (1.4.0 以上版本)
- Cloud SQL Java 連接器 (1.13.0 以上版本)
- Cloud SQL Node.js 連接器 (v0.5.0 以上版本)
從 App Engine Standard、Cloud Run 或 Cloud Run functions 連線
如要連線至已啟用 Private Service Connect 的 Cloud SQL 執行個體,可以使用 App Engine Standard 或 Cloud Run。
在這些支援的無伺服器環境中,Cloud SQL 語言連接器和使用 IP 位址與通訊埠編號的直接 TCP 連線都受到支援。如果是直接 TCP 連線,這是您在建立 Private Service Connect 端點時預留的 IP 位址。您可以將 IP 位址指定為資料庫主機的位址。
如果您為端點建立 DNS 記錄,即可為主機指定這項記錄。
從 BigQuery 連線
如要存取 Cloud SQL 中的資料,並透過內部 IP 連線查詢這項資料,請使用 --enable-google-private-path 參數。只有在下列情況下,這項參數才有效:
- 使用
--no-assign-ip參數。 - 您可以使用
--network參數,指定要用於建立內部連線的虛擬私有雲網路名稱。
設定 Cloud SQL 執行個體的輸出連線
您可以設定啟用 Private Service Connect 的 Cloud SQL 執行個體,透過 Private Service Connect 介面和網路連結,與網路建立傳出連線。如要進一步瞭解 Private Service Connect 傳出連線的運作方式和限制,請參閱「Private Service Connect 傳出連線總覽」。
如要使用 Cloud SQL 執行個體的輸出連線功能,請完成下列步驟:
建立或更新網路連結。Cloud SQL 執行個體會使用這個網路連結,連線至您網路的 Private Service Connect 介面。
網路連結必須與 Cloud SQL 執行個體位於相同區域,且設定為自動接受連線,並使用 Private Service Connect 介面中的清單。
取得 Cloud SQL 租戶專案 ID。 使用
gcloud sql instances describe指令擷取執行個體的詳細資料。您可以在輸出內容中顯示的服務附件網址中找到租戶專案 ID:ADMIN_PROJECT=PROJECT_ID INSTANCE_NAME=INSTANCE_NAME TENANT_PROJECT_ID=$(gcloud --project=$ADMIN_PROJECT sql instances describe $INSTANCE_NAME | grep pscServiceAttachmentLink | cut -f 2 -d "/")更改下列內容:
- PROJECT_ID:您使用的 Google Cloud專案 ID。
- INSTANCE_NAME::您要設定輸出連線的 Cloud SQL 執行個體 名稱,該執行個體已啟用 Private Service Connect。
儲存租戶專案 ID 的值,稍後加入接受的專案 ID 清單。 在 Google Cloud 專案中建立或更新網路連結時,必須提供這項資訊。
找出要接收 Cloud SQL 外送連線的網路,並確認該網路具有 Private Service Connect 介面。
使用網路連結啟用連出連線,連線至 Cloud SQL 執行個體。
如果您不再需要執行個體的輸出連線,也可以隨時停用輸出連線。
如要進一步瞭解 Private Service Connect 傳出連線,請參閱「Private Service Connect 傳出連線」。
為 Cloud SQL 執行個體啟用輸出連線
如要為 Cloud SQL 執行個體啟用輸出連線,請先在 Google Cloud 專案中建立或更新網路附件。
gcloud
如要啟用輸出連線,請執行下列指令:
gcloud beta sql instances patch INSTANCE_NAME \
--psc-network-attachment-uri=NETWORK_ATTACHMENT_URI \
--project=PROJECT_ID
更改下列內容:
- INSTANCE_NAME:您要設定輸出連線的 Cloud SQL 執行個體名稱,該執行個體必須已啟用 Private Service Connect。
- NETWORK_ATTACHMENT_URI:您要用來連線至網路 Private Service Connect 介面的 Google Cloud 專案中,網路連結的 URI。
- PROJECT_ID:您使用的 Google Cloud專案 ID。
如要確認 Private Service Connect 傳出連線功能是否已成功啟用,請執行 gcloud sql instances describe。如果輸出內容顯示 psc-network-attachment-uri,表示已成功啟用 Private Service Connect 傳出連線功能。
REST v1
如要啟用輸出連線,請執行下列指令:
使用任何要求資料之前,請先修改下列項目的值:
PROJECT_ID:專案的 ID。NETWORK_ATTACHMENT_URI:專案中網路連結的 URI。INSTANCE_ID:Cloud SQL 執行個體的名稱。
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID
JSON 要求主體:
{
"settings": {
"ipConfiguration": {
"pscConfig: {
"networkAttachmentUri": "NETWORK_ATTACHMENT_URI"
"kind": "sql#settings"
}
},
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": USER,
"insertTime": "2025-05-13T20:44:23.064Z",
"operationType": "UPDATE",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID","
}
REST v1beta4
如要啟用輸出連線,請執行下列指令:
使用任何要求資料之前,請先修改下列項目的值:
PROJECT_ID:專案的 ID。NETWORK_ATTACHMENT_URI:專案中網路連結的 URI。INSTANCE_ID:Cloud SQL 執行個體的名稱。
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
JSON 要求主體:
{
"settings": {
"ipConfiguration": {
"pscConfig: {
"networkAttachmentUri": "NETWORK_ATTACHMENT_URI"
}
},
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": USER,
"insertTime": "2025-05-13T20:44:23.064Z",
"operationType": "UPDATE",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID","
}
如要瞭解 Private Service Connect 輸出連線的疑難排解資訊,請參閱「Private Service Connect 疑難排解」。
為 Cloud SQL 執行個體停用輸出連線
gcloud
如要停用輸出連線,請執行下列指令:
gcloud beta sql instances patch INSTANCE_NAME \
--clear-psc-network-attachment-uri \
--project=PROJECT_ID
更改下列內容:
- INSTANCE_NAME:您要設定輸出連線的 Cloud SQL 執行個體名稱,該執行個體必須已啟用 Private Service Connect。
- PROJECT_ID:您使用的 Google Cloud專案 ID。
REST v1
如要停用輸出連線,請執行下列指令:
使用任何要求資料之前,請先修改下列項目的值:
PROJECT_ID:專案的 ID。NETWORK_ATTACHMENT_URI:專案中網路連結的 URI。如要停用,請設為null。INSTANCE_ID:Cloud SQL 執行個體的名稱。
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID
JSON 要求主體:
{
"settings": {
"ipConfiguration": {
"pscConfig: {
"networkAttachmentUri": null,
"kind": "sql#settings"
}
},
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": USER,
"insertTime": "2025-05-13T20:44:23.064Z",
"operationType": "UPDATE",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID","
}
REST v1beta4
如要停用輸出連線,請執行下列指令:
使用任何要求資料之前,請先修改下列項目的值:
PROJECT_ID:專案的 ID。NETWORK_ATTACHMENT_URI:專案中網路連結的 URI。如要停用,請設為null。INSTANCE_ID:Cloud SQL 執行個體的名稱。
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
JSON 要求主體:
{
"settings": {
"ipConfiguration": {
"pscConfig: {
"networkAttachmentUri": null,
"kind": "sql#settings"
}
},
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": USER,
"insertTime": "2025-05-13T20:44:23.064Z",
"operationType": "UPDATE",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID","
}
測試連線能力
如要測試啟用 Private Service Connect 的 Cloud SQL 執行個體連入連線,請將 Private Service Connect 端點的 IP 位址設為目的地 IP 位址。
gcloud
如要為已啟用 Private Service Connect 的 Cloud SQL 執行個體建立連線測試,請使用 gcloud network-management connectivity-tests create 指令:
gcloud network-management connectivity-tests create CONNECTIVITY_TEST_NAME \ --source-instance=SOURCE_INSTANCE \ --destination-cloud-sql-instance=DESTINATION_CLOUD_SQL_INSTANCE \ --destination-network=DESTINATION_NETWORK \ --destination-port=DESTINATION_PORT \ --protocol=tcp
請將下列項目改為對應的值:
- CONNECTIVITY_TEST_NAME:連線測試的名稱。
- SOURCE_INSTANCE:來源 IP 位址所在的 Compute Engine 執行個體 URI (例如
projects/myproject/zones/myzone/instances/myinstance)。 - DESTINATION_CLOUD_SQL_INSTANCE:Cloud SQL 執行個體的網址 (例如
projects/myproject/instances/myinstance)。 - DESTINATION_NETWORK:目的地 IP 位址所在的虛擬私有雲網路 URI (例如
projects/myproject/global/networks/mynetwork)。 - DESTINATION_PORT:為執行個體保留的通訊埠號碼。如果是 SQL Server 適用的 Cloud SQL 執行個體,通訊埠號碼為
1433。
REST
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號。
- CONNECTIVITY_TEST_NAME:連線測試的名稱。
- SOURCE_IP_ADDRESS:來源 Compute Engine 執行個體的 IP 位址。
- SOURCE_INSTANCE:來源 IP 位址所在的 Compute Engine 執行個體 URI (例如
projects/myproject/zones/myzone/instances/myinstance)。 - SOURCE_NETWORK:來源 IP 位址所在的虛擬私有雲網路 URI (例如
projects/myproject/global/networks/mynetwork)。 - DESTINATION_IP_ADDRESS:目的地 Cloud SQL 執行個體的 IP 位址。
- DESTINATION_PORT:為執行個體保留的通訊埠號碼。如果是 SQL Server 適用的 Cloud SQL 執行個體,通訊埠號碼為
1433。 - DESTINATION_NETWORK:目的地 IP 位址所在的虛擬私有雲網路 URI (例如
projects/myproject/global/networks/mynetwork)。
HTTP 方法和網址:
POST https://networkmanagement.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/connectivityTests?testId=CONNECTIVITY_TEST_NAME
JSON 要求主體:
{
"source": {
"ipAddress": "SOURCE_IP_ADDRESS",
"instance": "SOURCE_INSTANCE",
"network": "SOURCE_NETWORK"
},
"destination": {
"ipAddress": "DESTINATION_IP_ADDRESS",
"port": DESTINATION_PORT,
"network": "DESTINATION_NETWORK",
"projectId": "PROJECT_ID"
},
"protocol": "TCP"
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"name": "projects/PROJECT_ID/locations/global/operations/operation-OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.networkmanagement.v1.OperationMetadata",
"createTime": "2024-05-23T16:43:49.313981473Z",
"target": "projects/PROJECT_ID/locations/global/connectivityTests/CONNECTIVITY_TEST_NAME",
"verb": "create",
"cancelRequested": false,
"apiVersion": "v1"
},
"done": false
}
限制
您最多可以設定 20 個 Private Service Connect 端點,連線至已啟用 Private Service Connect 的 Cloud SQL 執行個體服務連結。
如要從更多虛擬私有雲網路連線,請透過 NCC 使用 Private Service Connect 端點傳播。詳情請參閱「Private Service Connect 端點傳播」。
透過 Private Service Connect 連線至 Cloud SQL 執行個體時,最多可有 64,512 個並行連線。
下列旗標會失效或受到影響:
如果執行個體已啟用 Private Service Connect,就無法設定使用私人服務存取權或外部 IP 連線。
- 如果執行個體已啟用 Private Service Connect,就無法啟用外部 IP 連線。
- 您無法啟用私人服務存取權,也無法將授權網路新增至執行個體。
- 您無法變更執行個體的連線類型。
您無法使用
gcloud sql connect指令、Cloud Shell、Cloud Build、資料庫遷移服務或 Datastream,連線至已啟用 Private Service Connect 的 Cloud SQL 執行個體。測試與已啟用 Private Service Connect 的 Cloud SQL 執行個體連線時,您無法設定下列項目:
- 直接將執行個體的內部 IP 位址或 DNS 名稱做為目的地
- 做為來源的執行個體
- Private Service Connect 端點的 IP 位址 (做為來源)
系統不支援使用已獲授權的網路,以 IP 為依據建立允許清單。
系統不支援由情境感知存取權強制執行的 IP 允許清單。
如果 Cloud SQL 執行個體已啟用 Private Service Connect,則不支援 Managed Service for Microsoft Active Directory (也稱為 Managed Microsoft AD)。
疑難排解
本節提供已啟用 Private Service Connect 的 Cloud SQL 執行個體相關問題資訊,以及問題的疑難排解步驟。
問題 疑難排解 執行個體的服務附件不接受 Private Service Connect 端點。 - 檢查端點的狀態。
gcloud
如要查看狀態,請使用
gcloud compute forwarding-rules describe指令。gcloud compute forwarding-rules describe ENDPOINT_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ | grep pscConnectionStatus
請將下列項目改為對應的值:
- ENDPOINT_NAME:端點名稱
- PROJECT_ID:包含端點的 Google Cloud 專案 ID 或專案編號
- REGION_NAME:端點的區域名稱
REST
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:包含 Private Service Connect 端點的 Google Cloud 專案 ID 或專案編號
- REGION_NAME:區域名稱
- ENDPOINT_NAME:端點名稱
HTTP 方法和網址:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{ "kind": "compute#forwardingRule", "id": "ENDPOINT_ID", "creationTimestamp": "2024-05-09T12:03:21.383-07:00", "name": "ENDPOINT_NAME", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME", "IPAddress": "IP_ADDRESS", "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/default", "serviceDirectoryRegistrations": [ { "namespace": "goog-psc-default" } ], "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID", "fingerprint": "FINGERPRINT_ID", "pscConnectionId": "CONNECTION_ID", "pscConnectionStatus": "ACCEPTED", "allowPscGlobalAccess": true } - 確認端點狀態為
ACCEPTED。如果狀態為PENDING,表示執行個體不允許含有端點的 Google Cloud 專案。請確認端點建立所在的網路專案已獲准。詳情請參閱「編輯已啟用 Private Service Connect 的執行個體」。
ERROR: (gcloud.compute.forwarding-rules.create) Could not fetch resource: The resource 'projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME' was not found為 Private Service Connect 端點預留靜態內部 IP 位址時,可能會出現這則錯誤訊息。 請確認指定的子網路存在於 URI 指定的專案中。如要在服務專案中建立端點,但使用 Shared VPC 網路的子網路,請依 URI 指定子網路,並在 URI 中使用主專案的專案 ID。 詳情請參閱「手動建立端點」。 ERROR: (gcloud.compute.forwarding-rules.create) Could not fetch resource: - The resource 'projects/PROJECT_ID/global/networks/NETWORK_NAME' was not found手動建立 Private Service Connect 端點時,可能會出現這則錯誤訊息。 請確認指定的網路存在於 URI 指定的專案中。如要在服務專案中建立端點,但使用共用虛擬私有雲網路,您需要依 URI 指定網路,並在 URI 中使用主專案的專案 ID。詳情請參閱「手動建立端點」。 Invalid consumer network status for PSC auto connection。消費者網路設定不正確或未設定,因此沒有可連線的端點。如要連線至端點,請先檢查端點狀態,修正錯誤後再試一次。
如要查看端點狀態,請參閱擷取端點。 端點狀態可以是下列其中一種:CONNECTION_POLICY_MISSING:用戶網路沒有相符的服務連線政策。服務連線政策是依網路和區域設定。如要重新設定網路,請參閱「更新服務連線政策」。CONSUMER_INSTANCE_PROJECT_NOT_ALLOWLISTED:有相符的服務連線政策,但政策中的「服務執行個體範圍」欄位未設定為允許連線至這個 Cloud SQL 執行個體。更新政策,將「服務執行個體範圍」欄位 (--producer-instance-location) 的值設為 Cloud SQL 執行個體所在的專案、資料夾或機構。如要重新設定服務連線政策,請參閱「更新服務連線政策」。POLICY_LIMIT_REACHED:服務連線政策已達端點上限。如要解決這個問題,請更新服務連線政策,提高端點上限。
No permission to create a service connection policy。您的權限不足,無法建立服務連線政策。如要建立服務連線政策,您需要
Compute Network Admin IAM角色。詳情請參閱「角色和權限」。使用 Private Service Connect 傳出連線時,網路連結無法接受來自 Private Service Connect 介面的連線。 如果外部網路無法接受來自 Private Service Connect 介面的連線,則網路連結的連線政策可能未正確設定。
網路連結必須設定為自動接受所有連線,或手動設定接受的連線清單。 詳情請參閱「連線政策」。使用下列指令,驗證網路附件中接受的連線:
如果 Private Service Connect 介面不在接受清單中,請更新網路連結。詳情請參閱「管理網路附件」。gcloud compute network-attachments describe default --region=REGION_ID
後續步驟
- 進一步瞭解私人 IP。
- 進一步瞭解 Private Service Connect。
- 進一步瞭解如何建立已啟用 Private Service Connect 的執行個體唯讀副本。
- 進一步瞭解如何複製已啟用 Private Service Connect 的執行個體。
- 進一步瞭解如何查看已啟用 Private Service Connect 的執行個體摘要資訊。
- 進一步瞭解如何設定及移除已啟用 Private Service Connect 的執行個體高可用性。
- 進一步瞭解如何編輯及刪除已啟用 Private Service Connect 的執行個體。