透過端點存取區域性 Google API
本文說明如何使用 Private Service Connect 端點,連線至支援的 Google API 區域端點。
如要瞭解其他 Private Service Connect 設定,請參閱「Private Service Connect」。
角色
如要取得建立區域 Private Service Connect 端點所需的權限,請管理員在您的 VPC 網路中授予下列 IAM 角色:
-
Compute 網路管理員角色 (
roles/compute.networkAdmin
) -
DNS 管理員角色 (
roles/dns.admin
)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
事前準備
After installing the Google Cloud CLI, initialize it by running the following command:
$ gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Enable the Compute Engine, Network Connectivity Center, and Cloud DNS APIs.
此外,請為您要透過 Private Service Connect 端點存取的目標服務啟用 API。舉例來說,如果您想存取
spanner.me-central2.rep.googleapis.com
,請啟用 Cloud Spanner API。Private Service Connect 不會自動啟用任何 API。請確認輸出防火牆規則允許傳送至端點的流量。虛擬私有雲網路的預設防火牆設定包含隱含的允許輸出規則,因此會允許這類流量。確認您並未建立優先順序較高的輸出規則,以免阻斷流量。
建立區域性 Private Service Connect 端點
您可以建立區域性 Private Service Connect 端點,將要求傳送至指定 Google API 的區域端點。
如需支援的地區端點清單,請參閱「地區服務端點」。
主控台
前往 Google Cloud 控制台的「Private Service Connect」頁面。
按一下「連結端點」。
在「目標」中,選取「Google API」。
在「範圍」清單中選取「區域」。
在「區域」清單中選取要使用的區域。
在「Target service」清單中,選取要存取的服務。
在「端點名稱」中輸入端點名稱。
在「Network」(網路) 中選取網路。
在「Subnetwork」(子網路) 中,選取子網路。
在「IP 位址」中,執行下列任一操作來設定 IP 位址:
- 選取「自動分配」,即可自動分配及保留新的 IP 位址。
- 從清單中選取已保留的 IP 位址。
- 按一下「Create IP address」(建立 IP 位址) 即可預留新的 IP 位址。
選用:如要讓端點可在虛擬私有雲網路的所有區域中使用,請選取「啟用全域存取權」。
按一下「新增端點」。
gcloud
使用 gcloud network-connectivity regional-endpoints create
指令。
gcloud network-connectivity regional-endpoints create ENDPOINT_NAME \ --region=REGION \ --address=ADDRESS \ --network=projects/PROJECT_ID/global/networks/NETWORK_NAME \ --subnetwork=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \ --target-google-api=REP_DNS_NAME
如果您想讓其他區域的資源使用端點,請新增 --enable-global-access
標記。
更改下列內容:
ENDPOINT_NAME
:端點名稱。REGION
:要建立端點的區域。ADDRESS
:您要用於端點的 IPv4 或 IPv6 位址。如果省略此欄位,系統會分配子網路中的 IPv4 位址。請使用下列其中一種格式:- IPv4 位址,例如
10.0.0.2
。 - IPv4 或 IPv6 位址資源 URI,例如
projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME
。
- IPv4 位址,例如
PROJECT_ID
:您要建立端點的專案。NETWORK_NAME
:端點的 VPC 網路名稱。SUBNET_NAME
:您要連結端點的子網路。REP_DNS_NAME
:您要連線的區域服務端點主機名稱。例如:spanner.me-central2.rep.googleapis.com
。
API
請使用 projects.locations.regionalEndpoints.create
方法。
HTTP 方法和網址:
POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/regionalEndpoints?regionalEndpointId=ENDPOINT_NAME
{
"accessType": "REGIONAL",
"address": "ADDRESS",
"network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
"subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
"targetGoogleApi": "REP_DNS_NAME"
}
更改下列內容:
PROJECT_ID
:端點的專案 ID。REGION
:要建立端點的區域。ENDPOINT_NAME
:端點名稱。ADDRESS
:您要用於端點的 IPv4 或 IPv6 位址。如果省略此欄位,系統會分配子網路中的 IPv4 位址。請使用下列其中一種格式:- IPv4 位址,例如
10.0.0.2
。 - IPv4 或 IPv6 位址資源 URI,例如
projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME
。
- IPv4 位址,例如
NETWORK_NAME
:端點的 VPC 網路名稱。SUBNET_NAME
:您要連結端點的子網路名稱。REP_DNS_NAME
:您要連線的區域服務端點主機名稱。例如:spanner.me-central2.rep.googleapis.com
。
列出端點
您可以列出所有已設定的端點。
主控台
前往 Google Cloud 控制台的「Private Service Connect」頁面。
按一下「已連結的端點」分頁。
系統會顯示所有端點,包括設有區域端點目標的端點。
gcloud
使用 gcloud network-connectivity regional-endpoints list
指令。
gcloud network-connectivity regional-endpoints list \ --region=REGION
將 REGION
替換為您要列出的端點區域。
API
請使用 projects.locations.regionalEndpoints.list
方法。
GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/regionalEndpoints
更改下列內容:
PROJECT_ID
:端點的專案 ID。REGION
:您要列出的端點區域。
確認端點是否正常運作
在已設定端點的 VPC 網路和區域中建立虛擬機器 (VM) 執行個體。請在 VM 上執行下列指令,確認 Private Service Connect 端點是否正常運作。端點不會回應 ping (ICMP) 要求。
如要驗證 IPv4 端點,請按照下列步驟操作:
curl --connect-to REP_DNS_NAME:443:ADDRESS:443 \ 'https://REP_DNS_NAME/PATH'
如要驗證 IPv6 端點,請按照下列步驟操作:
curl -6 --connect-to REP_DNS_NAME:443:[ADDRESS]:443 \ 'https://REP_DNS_NAME/PATH'
更改下列內容:
REP_DNS_NAME
:目標區域端點的公開 DNS 名稱,例如spanner.me-central2.rep.googleapis.com
。ADDRESS
:端點的 IP 位址。PATH
:由此服務提供的資源路徑。舉例來說,許多服務提供的探索文件路徑為$discovery/rest?version=v1
。
下列範例要求會測試 IP 位址為 192.168.1.100
的端點,是否可以從 me-central2
中的區域端點要求 Cloud Spanner API 探索文件。
curl --connect-to spanner.me-central2.rep.googleapis.com:443:192.168.1.100:443 \ 'https://spanner.me-central2.rep.googleapis.com/$discovery/rest?version=v1'
為端點建立私人 DNS 項目
您必須建立私人 DNS 項目,讓用戶端將要求導向 Private Service Connect 端點。
建議您建立不公開區域,使用與目標區域端點相同的主機名稱:SERVICE.REGION.rep.DOMAIN
,並在該區域中建立頂層記錄。
舉例來說,如果 Private Service Connect 端點的目標是 spanner.me-central2.rep.googleapis.com
,請為 spanner.me-central2.rep.googleapis.com
建立私人區域,其中包含 spanner.me-central2.rep.googleapis.com
的頂層記錄。在網域頂層建立記錄,表示您可以存取其他區域端點的公開主機名稱,例如 logging.me-central2.rep.googleapis.com
。
以下各節說明如何使用 Cloud DNS 建立私人可用區和頂層 DNS 記錄。
建立不公開區域
主控台
前往 Google Cloud 控制台的「Create a DNS zone」頁面。
在「可用區類型」中,選取「Private」。
在「Zone name」(可用區名稱) 輸入名稱。舉例來說,如果 Private Service Connect 端點指向
spanner.me-central2.rep.googleapis.com
,請輸入spanner-me-central2-rep-googleapis-com
。針對「DNS name」(DNS 名稱),請指定目標區域端點的主機名稱,後面加上半形句號。例如:
spanner.me-central2.rep.googleapis.com.
。選用步驟:新增說明。
在「選項」下方,選取「預設 (私人)」。
選取要顯示私人區域的 VPC 網路。只有您選取的 VPC 網路可查詢該區域中的記錄。
按一下 [建立]。
gcloud
執行 dns managed-zones
create
指令:
gcloud dns managed-zones create ZONE_NAME \ --dns-name=REP_DNS_NAME. \ --networks=VPC_NETWORK_LIST \ --visibility=private \ --description="Private zone for REP_DNS_NAME"
更改下列內容:
ZONE_NAME
:區域名稱,例如spanner-me-central2-rep-googleapis.com
。DESCRIPTION
:區域說明REP_DNS_NAME
:區域的 DNS 後置字串;請使用目標區域端點主機名稱,例如spanner.me-central2.rep.googleapis.com
VPC_NETWORK_LIST
:以半形逗號分隔的清單,當中列有獲授權查詢區域的 VPC 網路
API
使用 managedZones.create
方法傳送 POST
要求:
HTTP 方法和網址:
POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones
JSON 要求內文:
{
"name": "ZONE_NAME",
"dnsName": "REP_DNS_NAME.",
"description": "DESCRIPTION",
"visibility": "private",
"privateVisibilityConfig": {
"kind": "dns#managedZonePrivateVisibilityConfig",
"networks": [
{
"kind": "dns#managedZonePrivateVisibilityConfigNetwork",
"networkUrl": "NETWORK_1_URL"
},
{
"kind": "dns#managedZonePrivateVisibilityConfigNetwork",
"networkUrl": "NETWORK_2_URL"
}
]
}
}
更改下列內容:
PROJECT_ID
:DNS 區域的專案 ID。ZONE_NAME
:您為這個區域端點建立的私人可用區名稱。REP_DNS_NAME
:您要建立的記錄 FQDN;請使用目標區域端點主機名稱,例如spanner.me-central2.rep.googleapis.com
。DESCRIPTION
:DNS 區域的說明。NETWORK_1_URL
和NETWORK_2_URL
:獲授權查詢該區的 VPC 網路的完整網址,例如https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME
。
將 DNS 記錄新增至可用區
主控台
前往 Google Cloud 控制台的「Cloud DNS 區域」頁面。
按一下要新增記錄的代管區域名稱。
在「Zone details」(可用區詳細資料) 頁面中,按一下「Add standard」(新增標準)。
在「Create record set」頁面中,將「DNS name」欄位留空。將這個欄位留空,系統會在網域頂層建立資源記錄。
在「Resource record type」(資源記錄類型) 中,選取
A
。在「IPv4 位址」欄位中,輸入或選取 Private Service Connect 端點的 IP 位址。
按一下 [建立]。
gcloud
如要新增資源記錄集,請使用 gcloud dns record-sets create
指令:
gcloud dns record-sets create REP_DNS_NAME \ --rrdatas=ADDRESS \ --type=RECORD_TYPE \ --ttl=TTL \ --zone=ZONE_NAME
更改下列內容:
REP_DNS_NAME
:您要建立的記錄 FQDN;請使用目標區域端點主機名稱,例如spanner.me-central2.rep.googleapis.com
。ADDRESS
:Private Service Connect 端點的 IP 位址。RECORD_TYPE
:DNS 記錄類型,例如 IPv4 記錄的A
,或 IPv6 記錄的AAAA
。TTL
:解析器快取此資源記錄集合的 TTL,以秒為單位,例如300
。ZONE_NAME
:您為這個區域端點建立的私人可用區名稱。
API
如要新增資源記錄集,請使用 resourceRecordSets.create
方法:
HTTP 方法和網址:
POST https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/ZONE_NAME/rrsets
JSON 要求內文:
{
"name": "REP_DNS_NAME.",
"type": "RECORD_TYPE",
"ttl": TTL,
"rrdatas": [ "ADDRESS" ]
}
更改下列內容:
PROJECT_ID
:DNS 區域的專案 ID。ZONE_NAME
:您為這個區域端點建立的私人可用區名稱。REP_DNS_NAME
:您要建立的記錄 FQDN;請使用目標區域端點主機名稱,例如spanner.me-central2.rep.googleapis.com
。RECORD_TYPE
:DNS 記錄類型,例如 IPv4 記錄的A
,或 IPv6 記錄的AAAA
。TTL
:解析器快取此資源記錄集合的 TTL,以秒為單位,例如300
。ADDRESS
:Private Service Connect 端點的 IP 位址。
設定用戶端以使用私人端點名稱
您必須將用戶端設為使用私人 DNS 名稱,而非公開 DNS 名稱。請參閱用戶端或用戶端程式庫的說明文件,瞭解如何設定用戶端以使用自訂端點。下列頁面提供一些常見用戶端的設定步驟:
Python:您可以在用戶端選項中設定
api_endpoint
。Go:您可以在 ClientOptions 中設定
WithEndpoint
。.NET:您可以在用戶端的建構工具類別中設定
Endpoint
。gcloud:您可以在 gcloud CLI 中設定
api_endpoint_overrides
。
取得端點的詳細資訊
您可以查看端點的設定詳細資料。
gcloud
使用 gcloud network-connectivity regional-endpoints describe
指令。
gcloud network-connectivity regional-endpoints describe \ ENDPOINT_NAME --region=REGION
更改下列內容:
ENDPOINT_NAME
:端點名稱。REGION
:端點的區域。
API
使用 projects.locations.regionalEndpoints.get
指令。
GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/regionalEndpoints/ENDPOINT_NAME
更改下列內容:
PROJECT_ID
:端點的專案 ID。REGION
:您要列出的端點區域。ENDPOINT_NAME
:端點名稱。
更新全域存取權設定
您無法更新具有區域端點目標的 Private Service Connect 端點。如果需要變更端點的全球存取權設定,請刪除端點,然後建立新的端點,並設定所需的全球存取權設定。
刪除端點
您可以刪除端點。
gcloud
使用 gcloud network-connectivity regional-endpoints delete
指令。
gcloud network-connectivity regional-endpoints delete \ ENDPOINT_NAME --region=REGION
更改下列內容:
ENDPOINT_NAME
:端點名稱。REGION
:端點的區域。
API
使用 projects.location.regionalEndpoints.delete
指令。
DELETE https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/regionalEndpoints/ENDPOINT_NAME
更改下列內容:
PROJECT_ID
:端點的專案 ID。REGION
:端點的區域。ENDPOINT_NAME
:端點名稱。
透過混合式網路存取端點
在連線至 Google Cloud Cloud Interconnect 或 Cloud VPN 通道的 VLAN 連結網路中,用戶端可以存取 Private Service Connect 端點。VLAN 連結或 Cloud VPN 通道必須在與端點相同的虛擬私有雲網路 (或共用虛擬私有雲網路) 中終止。對等虛擬私有雲網路中的用戶端無法存取端點。
如果已設定全域存取權,來自 VLAN 連結或 Cloud VPN 通道的用戶端流量就能抵達其他區域的端點。
系統支援 Dataplane v1 和 Dataplane v2 的 VLAN 連結。如要進一步瞭解 Dataplane 版本,請參閱 Dataplane v2。
您必須設定其他網路中的系統,讓這些系統能夠向您的私人 DNS 區域發出查詢。
如果您是使用 Cloud DNS 實作私人 DNS 區域,請完成下列步驟:
在其他網路連線的虛擬私有雲網路中,建立傳入伺服器政策。
在 VLAN 連結或 Cloud VPN 通道所在的區域,找出其他網路連線的 VPC 網路中的內送轉送器進入點。
設定其他網路中的系統和 DNS 名稱伺服器,將端點的 DNS 名稱轉送至與連線至 VPC 網路的 VLAN 連結或 Cloud VPN 通道位於相同區域的傳入轉送器進入點。