엔드포인트를 통해 리전 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
)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
시작하기 전에
Install the Google Cloud CLI, then initialize it by running the following command:
$ gcloud init
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가 자동으로 사용 설정되지 않습니다.이그레스 방화벽 규칙이 엔드포인트로 트래픽을 허용하는지 확인합니다. VPC 네트워크의 기본 방화벽 구성은 묵시적 이그레스 허용 규칙이 포함되어 있으므로 이 트래픽을 허용합니다. 트래픽을 차단하는 우선순위가 더 높은 이그레스 규칙을 만들지 않았는지 확인합니다.
지역 Private Service Connect 엔드포인트 만들기
리전 Private Service Connect 엔드포인트를 만들어 요청을 대상 Google API의 리전 엔드포인트로 전송할 수 있습니다.
지원되는 리전 엔드포인트 목록은 리전 서비스 엔드포인트를 참조하세요.
콘솔
Google Cloud 콘솔에서 Private Service Connect 페이지로 이동합니다.
엔드포인트 연결을 클릭합니다.
대상에서 Google API를 선택합니다.
범위 목록에서 리전을 선택합니다.
리전 목록에서 사용하려는 리전을 선택합니다.
대상 서비스 목록에서 액세스하려는 서비스를 선택합니다.
엔드포인트 이름에 엔드포인트 이름을 입력합니다.
네트워크에서 네트워크를 선택합니다.
서브네트워크에서 서브네트워크를 선택합니다.
IP 주소에서 다음 중 하나를 수행하여 IP 주소를 구성합니다.
- 자동 할당을 선택하여 새 IP 주소를 자동으로 할당하고 예약합니다.
- 목록에서 예약된 IP 주소를 선택합니다.
- IP 주소 만들기를 클릭하여 새 IP 주소를 예약합니다.
(선택사항) VPC 네트워크의 모든 리전에서 엔드포인트를 사용할 수 있게 하려면 전역 액세스 사용 설정을 선택합니다.
엔드포인트 추가를 클릭합니다.
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 메서드 및 URL:
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
: 엔드포인트의 프로젝트 IDREGION
: 엔드포인트를 만들려는 리전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
: 엔드포인트의 프로젝트 IDREGION
: 나열할 엔드포인트의 리전
엔드포인트가 작동하는지 확인
엔드포인트가 구성된 VPC 네트워크 및 리전에서 가상 머신(VM) 인스턴스를 만듭니다. VM에서 다음 명령어를 실행하여 Private Service Connect 엔드포인트가 작동하는지 확인합니다. 엔드포인트는 핑(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 항목 만들기
클라이언트가 요청을 Private Service Connect 엔드포인트로 전달할 수 있도록 비공개 DNS 항목을 만들어야 합니다.
대상 지역 엔드포인트(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 콘솔에서 DNS 영역 만들기 페이지로 이동합니다.
영역 유형으로 비공개를 선택합니다.
영역 이름에 이름을 입력합니다. 예를 들어 Private Service Connect 엔드포인트가
spanner.me-central2.rep.googleapis.com
를 가리키는 경우spanner-me-central2-rep-googleapis-com
을 입력합니다.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 메서드 및 URL:
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 네트워크의 전체 URL(예:https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME
)
영역에 DNS 레코드 추가
콘솔
Google Cloud 콘솔에서 Cloud DNS 영역 페이지로 이동합니다.
레코드를 추가할 관리형 영역의 이름을 클릭합니다.
영역 세부정보 페이지에서 표준 추가를 클릭합니다.
레코드 모음 만들기 페이지에서 DNS 이름 입력란은 비워 둡니다. 이 필드를 비워 두면 도메인 맨 위에 리소스 레코드가 생성됩니다.
리소스 레코드 유형에서
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 메서드 및 URL:
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
: 엔드포인트의 프로젝트 IDREGION
: 나열할 엔드포인트의 리전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
: 엔드포인트의 프로젝트 IDREGION
: 엔드포인트의 리전ENDPOINT_NAME
: 엔드포인트의 이름
하이브리드 네트워크에서 엔드포인트에 액세스
Cloud Interconnect 또는 Cloud VPN 터널을 위한 VLAN 연결로 Google Cloud 에 연결된 네트워크의 클라이언트는 Private Service Connect 엔드포인트에 도달할 수 있습니다.VLAN 연결이나 Cloud VPN 터널은 엔드포인트와 같은 VPC 네트워크(또는 공유 VPC 네트워크)에서 종료되어야 합니다. 피어링된 VPC 네트워크의 클라이언트는 엔드포인트에 연결될 수 없습니다.
전역 액세스가 구성된 경우 VLAN 연결의 클라이언트 트래픽 또는 Cloud VPN 터널이 다른 리전의 엔드포인트에 도달할 수 있습니다.
VLAN 연결에는 Dataplane v1 및 Dataplane v2가 모두 지원됩니다. Dataplane 버전에 대한 자세한 내용은 Dataplane v2를 참조하세요.
비공개 DNS 영역에 쿼리를 수행할 수 있도록 다른 네트워크에 시스템을 구성해야 합니다.
Cloud DNS를 사용하여 비공개 DNS 영역을 구현한 경우 다음 단계를 완료합니다.
다른 네트워크가 연결되는 VPC 네트워크에 인바운드 서버 정책을 만듭니다.
다른 네트워크가 연결되는 VPC 네트워크에서 VLAN 연결 또는 Cloud VPN 터널이 있는 리전의 인바운드 전달자 진입점을 식별합니다.
다른 네트워크에 있는 시스템 및 DNS 네임서버를 구성하여 엔드포인트의 DNS 이름을 VPC 네트워크에 연결되는 VLAN 연결 또는 Cloud VPN 터널과 동일한 리전의 인바운드 전달자 진입점으로 전달하세요.