엔드포인트를 통해 리전 Google API에 액세스

이 문서에서는 Private Service Connect 엔드포인트를 사용하여 지원되는 Google API의 리전 엔드포인트에 연결하는 방법을 설명합니다.

다른 Private Service Connect 구성에 대한 자세한 내용은 Private Service Connect를 참조하세요.

역할

리전 Private Service Connect 엔드포인트를 만드는 데 필요한 권한을 얻으려면 관리자에게 VPC 네트워크에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

시작하기 전에

  1. Install the Google Cloud CLI, then initialize it by running the following command:

    $ gcloud init

  2. Enable the Compute Engine, Network Connectivity Center, Cloud DNS, and Service Directory APIs.

    Enable the APIs

  3. Google Cloud 콘솔의 API 및 서비스 페이지를 사용하여 Private Service Connect 엔드포인트를 통해 액세스하려는 Google API를 사용 설정합니다. Private Service Connect에서는 API가 자동으로 사용 설정되지 않습니다.

  4. 이그레스 방화벽 규칙이 엔드포인트로 트래픽을 허용하는지 확인합니다. VPC 네트워크의 기본 방화벽 구성은 묵시적 이그레스 허용 규칙이 포함되어 있으므로 이 트래픽을 허용합니다. 트래픽을 차단하는 우선순위가 더 높은 이그레스 규칙을 만들지 않았는지 확인합니다.

  5. 제한사항을 읽어보세요.

리전 Private Service Connect 엔드포인트 만들기

리전 Private Service Connect 엔드포인트를 만들어 요청을 대상 Google API의 리전 엔드포인트로 전송할 수 있습니다.

지원되는 리전 엔드포인트 목록은 리전 서비스 엔드포인트를 참조하세요.

리전 엔드포인트 호스트 이름에는 다음 두 가지 형식이 있습니다.

  • 공개 호스트 이름: SERVICE.REGION.rep.DOMAIN
  • 비공개 호스트 이름: SERVICE.REGION.p.rep.DOMAIN

    비공개 호스트 이름은 REGIONrep 사이에 p 하위 도메인을 추가합니다.

대상 Google API를 구성할 때 호스트 이름의 비공개 형식을 지정합니다(예: spanner.me-central2.p.rep.googleapis.com). 엔드포인트를 만든 후 동일한 비공개 리전 엔드포인트 호스트 이름을 사용하여 엔드포인트에 대해 비공개 DNS 레코드를 만듭니다.

Private Service Connect 엔드포인트를 모든 이름으로 구성할 수 있지만 유지보수의 편의를 위해 DNS 이름이 엔드포인트 이름과 일치하도록 대상 Google API의 서비스 이름을 사용하는 것이 좋습니다. 예를 들어 엔드포인트의 대상이 spanner.me-central2.p.rep.googleapis.com이면 엔드포인트 이름으로 spanner를 사용합니다.

gcloud

gcloud network-connectivity regional-endpoints create 명령어를 사용합니다.

gcloud network-connectivity regional-endpoints create ENDPOINT_NAME \
    --region=REGION \
    --network=NETWORK_URI \
    --subnetwork=SUBNET_URI \
    --target-google-api=REP_NAME

다른 리전의 리소스에서 엔드포인트를 사용할 수 있게 하려면 --enable-global-access 플래그를 추가합니다.

다음을 바꿉니다.

  • ENDPOINT_NAME: 엔드포인트의 이름입니다.

  • REGION: 엔드포인트를 만들 리전입니다.

  • NETWORK_URI: 엔드포인트의 VPC 네트워크 URI입니다(projects/PROJECT_ID/global/networks/NETWORK_NAME).

  • SUBNET_URI: 엔드포인트를 연결할 서브넷의 URI입니다(projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME).

  • REP_NAME: 연결할 리전 서비스 엔드포인트의 이름입니다. 예를 들면 spanner.me-central2.p.rep.googleapis.com입니다.

엔드포인트 나열

구성된 모든 엔드포인트를 나열할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 Private Service Connect 페이지로 이동합니다.

    Private Service Connect로 이동

  2. 연결된 엔드포인트 탭을 클릭합니다.

    리전 엔드포인트 대상이 있는 엔드포인트를 포함한 모든 엔드포인트가 표시됩니다.

gcloud

gcloud network-connectivity regional-endpoints list 명령어를 사용합니다.

gcloud network-connectivity regional-endpoints list \
    --region=REGION

REGION을 나열할 엔드포인트의 리전으로 바꿉니다.

엔드포인트가 작동하는지 확인

엔드포인트가 구성된 VPC 네트워크 및 리전에서 가상 머신(VM) 인스턴스를 만듭니다. VM에서 다음 명령어를 실행하여 Private Service Connect 엔드포인트가 작동하는지 확인합니다. 엔드포인트는 핑(ICMP) 요청에 응답하지 않습니다.

curl --connect-to SERVICE.REGION.p.rep.DOMAIN:443:ENDPOINT_IP:443 \
'SERVICE.REGION.p.rep.DOMAIN/PATH'

다음을 바꿉니다.

  • SERVICE: 엔드포인트가 가리키는 서비스입니다. 예를 들면 spanner 또는 logging입니다.
  • REGION: 엔드포인트의 리전입니다.
  • DOMAIN: 서비스의 도메인입니다. 예를 들면 googleapis.com입니다.
  • ENDPOINT_IP: 엔드포인트의 IP 주소입니다.
  • PATH: 이 서비스에서 제공하는 리소스의 경로입니다. 예를 들어 많은 서비스에서 $discovery/rest?version=v1 경로가 있는 탐색 문서를 제공합니다.

다음 요청 예시에서는 IP 주소가 192.168.1.100인 엔드포인트가 me-central2의 리전 엔드포인트에서 Cloud Spanner API 탐색 문서를 요청할 수 있는지 테스트합니다.

curl --connect-to spanner.me-central2.p.rep.googleapis.com:443:192.168.1.100:443 \
'https://spanner.me-central2.p.rep.googleapis.com/$discovery/rest?version=v1'

엔드포인트의 비공개 DNS 항목 만들기

엔드포인트에 대한 DNS 항목을 SERVICE.REGION.p.rep.DOMAIN 형식으로 만들어야 합니다. Cloud DNS를 사용하여 DNS 항목을 만들 수 있습니다.

  1. REGION.p.rep.DOMAIN 형식의 비공개 DNS 영역을 만듭니다.

    예를 들어 googleapis.com 도메인(me-central2 리전)에서 리전 엔드포인트를 사용하려면 me-central2.p.rep.googleapis.com 이름으로 비공개 DNS 영역을 만듭니다.

  2. 엔드포인트에 할당된 IP 주소를 가리키는 DNS 레코드를 만듭니다. 호스트 이름은 서비스 이름 SERVICE와 일치해야 합니다. 예를 들어 spanner 또는 logging은 서비스 이름입니다.

예를 들어 엔드포인트가 대상 spanner.me-central2.p.rep.googleapis.com으로 구성된 경우 me-central2.p.rep.googleapis.com이라는 비공개 DNS 영역과 엔드포인트 IP 주소를 가리키는 spanner라는 A 레코드를 만듭니다. 엔드포인트의 정규화된 도메인 이름은 spanner.me-central2.p.rep.googleapis.com입니다.

비공개 엔드포인트 이름을 사용하도록 클라이언트 구성

공개 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: 엔드포인트의 리전

엔드포인트 삭제

엔드포인트를 삭제할 수 있습니다.

gcloud

gcloud network-connectivity regional-endpoints delete 명령어를 사용합니다.

gcloud network-connectivity regional-endpoints delete \
    ENDPOINT_NAME --region=REGION

다음을 바꿉니다.

  • ENDPOINT_NAME: 엔드포인트의 이름
  • REGION: 엔드포인트의 리전

하이브리드 네트워크에서 엔드포인트에 액세스

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 터널과 동일한 리전의 인바운드 전달자 진입점으로 전달하세요.