本頁面說明如何設定私人服務連線和 Private Service Connect。
設定私人服務存取權後,您就能為 Google Cloud 專案中的虛擬私有雲網路分配 IP 位址範圍,並建立私人服務連線。這樣一來,虛擬私有雲網路中的資源就能連線至 Cloud SQL 執行個體。
設定 Private Service Connect 後,您就能從屬於不同群組、團隊、專案或機構的多個虛擬私有雲網路,連線至主要 Cloud SQL 執行個體或任何讀取副本。
建立支援私人服務連線和 Private Service Connect 的執行個體
建立同時支援私人服務存取權和 Private Service Connect 的 Cloud SQL 執行個體,即可享有這兩項服務的優點。詳情請參閱「執行個體的連線選項」。
使用 Private Service Connect,即可從屬於不同群組、團隊、專案或機構的多個虛擬私有雲網路連線至 Cloud SQL 執行個體。
您可以使用 gcloud CLI 或 API,建立支援私人服務連線和 Private Service Connect 的 Cloud SQL 執行個體。
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 \ --allocated-ip-range-name=RANGE_NAME \ --database-version=DATABASE_VERSION \ --cpu=NUMBER_OF_vCPUs \ --memory=MEMORY_SIZE \ --root-password=ROOT_PASSWORD \ --network=VPC_PSA_NETWORK_PATH \ --psc-auto-connections=network=VPC_PSC_NETWORK_PATH,project=SERVICE_PROJECT
請替換下列項目:
- INSTANCE_NAME:執行個體的名稱。
- PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號。
- REGION_NAME:執行個體的區域名稱。
ALLOWED_PROJECTS:以半形逗號分隔的允許專案 ID 或編號清單。如果專案不在這個清單中,您就無法在專案中建立 Private Service Connect 端點,以連線至執行個體。
- AVAILABILITY_TYPE:為執行個體啟用高可用性。請為這個參數指定下列其中一個值:
REGIONAL:啟用高可用性,建議用於正式環境執行個體。執行個體會容錯移轉至所選區域內的其他可用區。ZONAL:不提供容錯移轉功能。這是預設值。
如要進一步瞭解如何為執行個體設定及移除高可用性,請參閱「為現有執行個體設定高可用性」和「停用執行個體的高可用性」。
- RANGE_NAME:針對這個選用參數,設定要分配 IP 範圍的範圍名稱。範圍名稱必須符合
RFC 1035規定,且長度介於 1 至 63 個字元之間。 - DATABASE_VERSION:執行個體的資料庫版本 (例如
SQLSERVER_2019_STANDARD)。 - NUMBER_OF_vCPUs:執行個體的核心數量。
- MEMORY_SIZE:執行個體的記憶體容量。
- ROOT_PASSWORD:
rootCloud SQL 使用者的密碼。 - VPC_PSA_NETWORK_PATH:執行個體連線的虛擬私有雲網路名稱和路徑 (例如
"projects/PROJECT_ID/global/networks/default")。這個網路用於私人服務存取連線,以及 Cloud SQL 執行個體的私人服務存取 IP 位址。 - VPC_PSC_NETWORK_PATH:要建立 Private Service Connect 端點的虛擬私有雲網路路徑。例如:
projects/my-host-project/global/networks/default。 SERVICE_PROJECT:建立 Private Service Connect 端點的專案。如果虛擬私有雲網路不是共用虛擬私有雲,則只能是網路的主專案。如果是共用虛擬私有雲,則可以是主專案或服務專案。
如要瞭解如何連線至已啟用 Private Service Connect 的執行個體,請參閱「連線至 Cloud SQL 執行個體」。
如要停用公開 IP,請使用 --no-assign-ip 參數。
Terraform
如要建立同時啟用私人服務連線和 Private Service Connect 的執行個體,請使用
google_sql_database_instance Terraform 資源。
如要在 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:不提供容錯移轉功能。這是預設值。
如要進一步瞭解如何為執行個體設定及移除高可用性,請參閱「為現有執行個體設定高可用性」和「停用執行個體的高可用性」。
- VPC_PSA_NETWORK_PATH:執行個體連線的虛擬私有雲網路路徑 (例如
"projects/PROJECT_ID/global/networks/default")。這個網路用於私人服務存取連線,以及 Cloud SQL 執行個體的私人服務存取 IP 位址。 - RANGE_NAME:針對這個選用參數,設定要分配 IP 範圍的範圍名稱。範圍名稱必須符合
RFC 1035,且長度介於 1 至 63 個字元之間。 ALLOWED_PROJECTS:以半形逗號分隔的允許專案 ID 或編號清單。如果專案不在這個清單中,您就無法在專案中建立 Private Service Connect 端點,以連線至執行個體。
- VPC_PSC_NETWORK_PATH:要建立 Private Service Connect 端點的虛擬私有雲網路路徑。例如:
projects/my-host-project/global/networks/default。 SERVICE_PROJECT:建立 Private Service Connect 端點的專案。如果虛擬私有雲網路不是共用虛擬私有雲,則只能是網路的主專案。如果是共用虛擬私有雲,則可以是主專案或服務專案。
- MACHINE_TYPE:列舉字串值,代表執行個體的機型。例如:
db-custom-NUMBER_OF_vCPUs-MEMORY_SIZE,其中 NUMBER_OF_vCPUs 和 MEMORY_SIZE 分別是執行個體的核心數量和記憶體容量。
如要瞭解如何連線至已啟用 Private Service Connect 的執行個體,請參閱「連線至 Cloud SQL 執行個體」。
由於執行個體具有內部 IP 位址,因此您將 ipv4Enabled 參數設為 false。
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,
"privateNetwork": VPC_PSA_NETWORK_PATH,
"allocatedIpRange": "RANGE_NAME",
"pscConfig": {
"allowedConsumerProjects": [
"ALLOWED_PROJECTS"
],
"pscAutoConnections": [
{
"consumerProject":"SERVICE_PROJECT",
"consumerNetwork":"projects/SERVICE_PROJECT/global/networks/VPC_PSC_NETWORK_PATH"
}
],
"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
如果執行個體同時啟用私人服務連線和 Private Service Connect,您可以停用 Private Service Connect。
停用執行個體的 Private Service Connect 時,這項作業預計需要 8 分鐘,執行個體會停機約 45 秒。作業完成後,私人服務連線和 Private Service Connect 連線路徑就不會再共用同一個執行個體。您無法使用 Private Service Connect 連線至執行個體。
您可以使用 gcloud CLI 或 API,停用執行個體的 Private Service Connect。
gcloud
如要停用執行個體的 Private Service Connect,請使用 gcloud sql instances patch 指令:
gcloud sql instances patch INSTANCE_NAME \ --project=PROJECT_ID \ --no-enable-private-service-connect \ --clear-allowed-psc-projects
請替換下列項目:
- INSTANCE_NAME:執行個體的名稱
- PROJECT_ID:包含執行個體的專案 ID 或專案編號 Google Cloud
Terraform
如要停用執行個體的 Private Service Connect,請使用
google_sql_database_instance Terraform 資源。
REST
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:包含執行個體的專案 ID 或專案編號 Google Cloud
- INSTANCE_NAME:執行個體的名稱
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
JSON 要求主體:
{
"kind": "sql#instance",
"name": "INSTANCE_NAME",
"project": "PROJECT_ID",
"settings": {
"ipConfiguration": {
"pscConfig": {
"pscEnabled": "false",
"allowedConsumerProjects": [{}]
}
},
"kind": "sql#settings"
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 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": "UPDATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_NAME",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
為執行個體啟用 Private Service Connect
如果執行個體已啟用私人服務連線,您可以為該執行個體啟用 Private Service Connect。您可以使用 Private Service Connect,從多個虛擬私有雲網路連線至 Cloud SQL 執行個體。
為執行個體啟用 Private Service Connect 時,這項作業預計需要 8 分鐘,執行個體會停機約 45 秒。作業完成後,私人服務連線和 Private Service Connect 連線路徑會同時存在於同一個執行個體上。
您可以使用 gcloud CLI 或 API,為執行個體啟用 Private Service Connect。
gcloud
如要為執行個體啟用 Private Service Connect,請使用 gcloud sql instances patch 指令:
gcloud sql instances patch INSTANCE_NAME \ --project=PROJECT_ID \ --enable-private-service-connect \ --allowed-psc-projects=ALLOWED_PROJECTS \ --psc-auto-connections=network=VPC_PSC_NETWORK_PATH,project=SERVICE_PROJECT
請替換下列項目:
- INSTANCE_NAME:執行個體的名稱
- PROJECT_ID:包含執行個體的專案 ID 或專案編號 Google Cloud
ALLOWED_PROJECTS:以半形逗號分隔的允許專案 ID 或編號清單。如果專案不在這個清單中,您就無法在專案中建立 Private Service Connect 端點,連線至執行個體。
- VPC_PSC_NETWORK_PATH:建立 Private Service Connect 端點的虛擬私有雲網路路徑。例如:
projects/my-host-project/global/networks/default。 SERVICE_PROJECT:建立 Private Service Connect 端點的專案。如果虛擬私有雲網路不是共用虛擬私有雲,則只能是網路的主專案。如果是共用虛擬私有雲,則可以是主專案或服務專案。
如要瞭解如何連線至已啟用 Private Service Connect 的執行個體,請參閱「連線至 Cloud SQL 執行個體」。
Terraform
如要為執行個體啟用 Private Service Connect,請使用
google_sql_database_instance Terraform 資源。
REST
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號。
- INSTANCE_NAME:執行個體的名稱。
- ALLOWED_PROJECTS:以半形逗號分隔的允許專案 ID 或編號清單。這些專案會覆寫已設為使用 Private Service Connect 的專案。如果專案不在這個清單中,您就無法在專案中建立 Private Service Connect 端點,連線至執行個體。
- VPC_PSC_NETWORK_PATH:建立 Private Service Connect 端點的虛擬私有雲網路路徑。例如:
projects/my-host-project/global/networks/default。 SERVICE_PROJECT:建立 Private Service Connect 端點的專案。如果虛擬私有雲網路不是共用虛擬私有雲,則只能是網路的主專案。如果是共用虛擬私有雲,則可以是主專案或服務專案。
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
JSON 要求主體:
{
"kind": "sql#instance",
"name": "INSTANCE_NAME",
"project": "PROJECT_ID",
"settings": {
"ipConfiguration": {
"pscConfig": {
"pscAutoConnections": [
{
"consumerProject":"SERVICE_PROJECT",
"consumerNetwork":"projects/SERVICE_PROJECT/global/networks/VPC_PSC_NETWORK_PATH"
}
],
"pscEnabled": "true",
"allowedConsumerProjects": [ALLOWED_PROJECTS]
}
},
"kind": "sql#settings"
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 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": "UPDATE",
"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 執行個體」。