이 페이지에서는 비공개 네트워크 액세스를 설정하고 Google Cloud 네트워크 내에서 트래픽을 라우팅하는 방법을 설명합니다.
비공개 네트워크 액세스를 설정하려면 다음 세 가지 프로젝트를 구성합니다.
- Virtual Private Cloud (VPC)와 타겟인 가상 머신 인스턴스 (VM)가 포함된 프로젝트입니다.
- 서비스 디렉터리 서비스 프로젝트 역할을 하는 프로젝트입니다.
- 비공개 네트워크 액세스를 호출하는 구성이 포함된 Google Cloud 제품의 프로젝트입니다. 비공개 네트워크 액세스를 사용하여 엔드포인트를 호출할 수 있는 Google Cloud 제품의 예는 Dialogflow CX입니다.
프로젝트의 아티팩트는 동일한 프로젝트에 있을 수도 있고 다른 프로젝트에 있을 수도 있습니다.
시작하기 전에
비공개 네트워크 액세스를 구성하기 전에 다음 단계를 완료합니다.
각 프로젝트의 경우 Google Cloud 콘솔의 API 및 서비스 페이지에서 API 및 서비스 사용 설정을 클릭하여 Service Directory API를 비롯하여 사용하려는 API를 사용 설정합니다.
VPC 네트워크를 온프레미스 호스트에 연결하려면 Cloud VPN 터널 또는 Cloud Interconnect 연결을 만듭니다.
Google Cloud 프로젝트가
servicedirectory.googleapis.com
의 네트워크 프로젝트와 서비스 디렉터리 프로젝트 모두의 VPC 서비스 제어 경계 내에 있는지 확인합니다.VPC 서비스 제어 자세히 알아보기
VPC 네트워크의 프로젝트 구성
VPC 네트워크용 프로젝트를 구성하려면 다음 단계를 따르세요.
VPC 네트워크를 만듭니다. 기존 VPC 네트워크를 사용하려면 자동 모드 또는 커스텀 모드에서 서브넷을 지원하는지 확인하세요. 기존 네트워크는 지원되지 않습니다.
VPC 네트워크의 대상이 Compute Engine VM 또는 내부 부하 분산기 백엔드인 경우 VPC 네트워크 방화벽 규칙을 구성합니다. 대상이 리슨하는 포트에서
35.199.192.0/19
의 TCP 인그레스를 허용하는 방화벽 규칙을 만듭니다. 포트443
및80
가 일반적이지만 어떤 포트든 사용할 수 있습니다. 기본적으로 VPC 네트워크 방화벽 규칙은 Compute Engine VM에 대한 인그레스 연결을 차단합니다.35.199.192.0/19
에 관한 자세한 내용은 Cloud DNS 및 서비스 디렉터리의 경로를 참고하세요.엔드포인트를 호출할 Google Cloud 제품의 서비스 에이전트에 Identity and Access Management (IAM) Private Service Connect Authorized Service 역할 (
roles/servicedirectory.pscAuthorizedService
)을 부여합니다.역할 및 권한에 대한 자세한 내용은 서비스 디렉터리 권한 및 역할을 참고하세요.
서비스 디렉터리 프로젝트 구성
서비스 디렉터리 프로젝트를 구성하려면 다음 단계를 따르세요.
엔드포인트를 호출할Google Cloud 제품의 서비스 에이전트에 IAM 서비스 디렉터리 뷰어 역할(
roles/servicedirectory.viewer
)을 부여합니다.서비스 디렉터리 네임스페이스 및 서비스를 만듭니다. 그런 다음 다음 섹션의 단계에 따라 이 서비스의 엔드포인트를 만듭니다.
비공개 네트워크 액세스가 있는 엔드포인트 만들기
비공개 네트워크 액세스가 구성된 엔드포인트를 만들려면 다음 단계를 따르세요.
콘솔
- Google Cloud 콘솔에서 서비스 디렉터리 네임스페이스 페이지로 이동합니다. 서비스 디렉터리 네임스페이스로 이동
- 네임스페이스를 클릭합니다.
- 서비스를 클릭합니다.
- 엔드포인트 추가를 클릭합니다.
- 연결 이름에 엔드포인트 이름을 입력합니다.
- IP 주소에 IPv4 주소(예:
192.0.2.0
)를 입력합니다. - 포트에 포트 번호(예:
443
또는80
)를 입력합니다. - 비공개 네트워크 액세스를 사용 설정하려면 연결된 VPC 네트워크에서 필요한 옵션을 선택합니다.
- 사용 가능한 네트워크 목록에서 선택하려면 목록에서 선택을 클릭한 다음 네트워크를 선택합니다.
- 프로젝트와 네트워크를 지정하려면 프로젝트 및 네트워크 이름으로 지정을 클릭한 다음 프로젝트 번호와 네트워크 이름을 입력합니다.
- 만들기를 클릭합니다.
gcloud
프로젝트 ID와 지정된 네트워크 경로를 사용하여 gcloud service-directory endpoints create
명령어를 사용합니다.
gcloud service-directory endpoints create ENDPOINT_NAME \ --project=PROJECT_ID \ --location=REGION \ --namespace=NAMESPACE_NAME \ --service=SERVICE_ID \ --address=IP_ADDRESS \ --port=PORT_NUMBER \ --network=NETWORK_PATH
다음을 바꿉니다.
ENDPOINT_NAME
: 서비스에서 만들 엔드포인트의 이름입니다(예:my-endpoint
).PROJECT_ID
: 프로젝트 ID입니다.REGION
: 네임스페이스가 포함된 Google Cloud 리전NAMESPACE_NAME
: 네임스페이스에 지정한 이름(예:my-namespace
)SERVICE_ID
: 서비스의 ID입니다.IP_ADDRESS
: 엔드포인트의 IP 주소(예:192.0.2.0
)PORT_NUMBER
: 엔드포인트가 실행 중인 포트입니다(일반적으로443
또는80
).NETWORK_PATH
: 네트워크의 URL입니다(예:projects/PROJECT_NUMBER/locations/global/networks/NETWORK_NAME
).
Google Cloud 제품 프로젝트 구성
Google Cloud 제품 프로젝트를 구성하려면 다음 단계를 따르세요.
만든 서비스 디렉터리 서비스를 호출하도록 Google Cloud 제품을 구성합니다. 필요한 단계는 특정Google Cloud 제품에 따라 다릅니다.
사용 사례
이 섹션에서는 비공개 네트워크 액세스를 구성하는 사용 사례 예시를 제공합니다.
VPC 네트워크, VM, 서비스 디렉터리가 동일한 프로젝트에 있는 경우 HTTP 엔드포인트 호출
이 사용 사례에서는 Google Cloud 자연어 처리 제품인 Dialogflow CX를 설정하여 VM에서 HTTP 엔드포인트를 호출합니다. 엔드포인트를 호출하는 동안 트래픽이 공개 인터넷을 통해 전환되지 않도록 합니다.
이 사용 사례에서는 동일한 프로젝트에서 다음 아티팩트를 만듭니다.
- VPC 네트워크
- VM
- 서비스 디렉터리 서비스
- Dialogflow CX
그림 1은 프로젝트의 Google 서비스 구성이 VM으로 이그레스하도록 허용하는 방법을 보여줍니다. VM은 프로젝트의 VPC 네트워크에 있습니다.
네트워크 및 타겟 네트워크 설정
myproject
와 같은 프로젝트를 만듭니다.vpc-1
와 같은 VPC 네트워크를 만듭니다.VPC 네트워크를 만드는 동안 서브넷 생성 모드에서 자동을 선택합니다.
firewall-1
와 같은 방화벽 규칙을 만듭니다.방화벽 규칙을 만드는 동안 다음 값을 입력하거나 선택합니다.
- 네트워크에서
vpc-1
를 선택합니다. - 소스 IPv4 범위에
35.199.192.0/19
을 입력합니다. - 프로토콜 및 포트에서 TCP를 선택하고
443
또는80
를 입력합니다.
- 네트워크에서
us-central1
리전에서vm-1
와 같은 VM을 만듭니다.VM을 만들 때 다음 값을 입력하거나 선택합니다.
- 네트워킹 > 네트워크 인터페이스에서
vpc-1
를 선택합니다. - 방화벽에 대해 HTTP 트래픽 허용을 선택합니다.
HTTPS를 사용하려면 HTTPS 트래픽 허용을 선택합니다. 공개 키 인프라 (PKI) 전송 계층 보안 (TLS) 인증서도 설치해야 합니다.
- 네트워킹 > 네트워크 인터페이스에서
us-central1
리전에서namespace-1
와 같은 네임스페이스를 만듭니다.네임스페이스에서 서비스 디렉터리 서비스(예:
sd-1
)를 등록합니다.sd-1
에서 엔드포인트를 만듭니다. 엔드포인트 주소에는 포트443
의vm-1
내부 IP 주소를 사용합니다. 자세한 내용은 비공개 네트워크 액세스 권한이 있는 엔드포인트 만들기를 참고하세요.엔드포인트를 호출할Google Cloud 제품의 서비스 에이전트에 다음 IAM 역할을 부여합니다.
- 서비스 디렉터리 뷰어 역할 (
roles/servicedirectory.viewer
) - Private Service Connect 승인된 서비스 역할(
roles/servicedirectory.pscAuthorizedService
)
- 서비스 디렉터리 뷰어 역할 (
선택사항: VM을 더 추가하려면
vm-2
와 같은 다른 VM을 설정하고endpoint-2
와 같은 엔드포인트를 추가하면 됩니다.
제품 설정 Google Cloud
- Google Cloud 제품 구성(예: 'Cloud Scheduler, 1분마다 호출')을 구성합니다.
- HTTP 요청을 설정합니다.
- 요청이
sd-1
를 통해 비공개 네트워킹을 통해 전송되어야 한다고 지정합니다. - 선택사항: Certificate Authority Service 설정 구성
이제 Google Cloud 제품에서 sd-1
를 사용하여 HTTP 요청을 호출할 수 있습니다.
공유 VPC 네트워크, VM, 서비스 디렉터리가 다른 프로젝트에 있는 경우 HTTP 엔드포인트 호출
이 사용 사례에서는 자연어 처리 서비스인 Google Cloud Dialogflow CX를 설정하여 VM에서 HTTP 엔드포인트를 호출합니다. 엔드포인트를 호출하는 동안 트래픽이 공개 인터넷을 통해 전환되지 않도록 합니다.
이 사용 사례에서는 여러 프로젝트에서 다음과 같은 아티팩트를 만듭니다.
- 공유 VPC 네트워크
- VM
- 서비스 디렉터리 서비스
- Dialogflow CX
프로젝트를 만들기 전에 다음 사항에 유의하세요.
- API 호출이 VPC 서비스 제어 경계를 준수하는지 확인합니다.
- Google Cloud 서비스 프로젝트의 구성이 VPC 네트워크 프로젝트에 있는 VM으로의 이그레스를 허용하는지 확인합니다.
- 프로듀서 프로젝트는 Google Cloud 서비스 프로젝트와 동일하지 않을 수 있습니다.
- 두 프로젝트의 VPC 서비스 제어 경계가 사용되는지 확인합니다.
- 서비스 디렉터리 프로젝트와 네트워크 프로젝트는 연결되어 있지 않아도 되지만 모두 동일한 VPC 서비스 제어의 일부여야 합니다.
- 네트워크 및 서비스에서 방화벽과 IAM은 기본적으로 사용 중지되어 있습니다.
그림 2는 VPC 서비스 제어 경계가 적용된 비공개 네트워크 액세스를 사용하여 트래픽을 전송하는 방법을 보여줍니다.
네트워크 프로젝트 구성
my-vpc-project
와 같은 프로젝트를 만듭니다.vpc-1
와 같은 VPC 네트워크를 만듭니다.VPC 네트워크를 만들 때 서브넷 생성 모드에서 자동을 선택합니다.
firewall-1
와 같은 방화벽 규칙을 만듭니다.규칙을 만들 때 다음 값을 입력하거나 선택합니다.
- 네트워크에서
vpc-1
를 선택합니다. - 소스 IPv4 범위에
35.199.192.0/19
을 입력합니다. - 프로토콜 및 포트에서 TCP를 선택하고
443
또는80
를 입력합니다.
- 네트워크에서
us-central1
리전에서vm-1
와 같은 VM을 만듭니다.VM을 만들 때 다음 값을 입력하거나 선택합니다.
- 네트워킹 > 네트워크 인터페이스에서
vpc-1
를 선택합니다. - 방화벽에 대해 HTTP 트래픽 허용을 선택합니다.
HTTPS를 사용하려면 HTTPS 트래픽 허용을 선택합니다. 공개 키 인프라 (PKI) 전송 계층 보안 (TLS) 인증서도 설치해야 합니다.
- 네트워킹 > 네트워크 인터페이스에서
VPC 서비스 제어를 사용하는 경우 VPC 서비스 제어 경계를 통해 서비스 디렉터리가 Google Cloud 서비스 프로젝트와 서비스 디렉터리 프로젝트에 모두 연결할 수 있습니다.
서비스 디렉터리 프로젝트 구성
my-sd-project
와 같은 프로젝트를 만듭니다.VPC 네트워크 프로젝트와 서비스 디렉터리 프로젝트는 서로 다른 프로젝트이므로 추가 IAM 권한이 필요합니다.
네트워크 프로젝트에서 서비스 디렉터리 엔드포인트를 만드는 IAM 사용자에게 서비스 디렉터리 네트워크 어태처 역할(
roles/servicedirectory.networkAttacher
)을 부여합니다.VPC 네트워크에서 VM을 가리키는 서비스 디렉터리 엔드포인트를 만듭니다.
us-central1
리전에서namespace-1
와 같은 네임스페이스를 만듭니다.- 네임스페이스에서 서비스 디렉터리 서비스(예:
sd-1
)를 등록합니다. sd-1
에서 엔드포인트를 만듭니다. 엔드포인트 주소에는 포트443
의vm-1
내부 IP 주소를 사용합니다. 자세한 내용은 비공개 네트워크 액세스 권한이 있는 엔드포인트 만들기를 참고하세요.
엔드포인트를 호출할Google Cloud 제품의 서비스 에이전트에 다음 IAM 역할을 부여합니다.
- 서비스 디렉터리 프로젝트의 서비스 디렉터리 뷰어 역할 (
roles/servicedirectory.viewer
) - 네트워크 프로젝트의 Private Service Connect 승인된 서비스 역할(
roles/servicedirectory.pscAuthorizedService
)
- 서비스 디렉터리 프로젝트의 서비스 디렉터리 뷰어 역할 (
VPC 서비스 제어를 사용하는 경우 VPC 서비스 제어 경계를 통해 서비스 디렉터리가 Google Cloud 서비스 프로젝트와 서비스 디렉터리 프로젝트에 모두 연결할 수 있습니다.
Google Cloud 서비스 프로젝트 구성
- 사용 중인 Google Cloud 서비스의 API를 사용 설정합니다.
- Google Cloud 서비스
PUSH
를 구성하려면 서비스 디렉터리 프로젝트의 서비스 디렉터리 서비스를 사용하세요.
VPC 서비스 제어를 사용하는 경우 VPC 서비스 제어 경계를 통해 서비스 디렉터리가 네트워크 프로젝트와 서비스 디렉터리 프로젝트에 모두 연결할 수 있습니다.
Dialogflow에서 서비스 디렉터리 비공개 네트워크 액세스 사용
Dialogflow에서 서비스 디렉터리 비공개 네트워크 액세스를 사용하는 방법에 관한 안내는 비공개 네트워크 액세스에 서비스 디렉터리 사용을 참고하세요.
다음 단계
- 서비스 디렉터리에 대한 개요는 서비스 디렉터리 개요를 참고하세요.
- Private Service Connect에 대해 자세히 알아보려면 Private Service Connect를 참고하세요.
- 서비스 디렉터리를 사용할 때 발생할 수 있는 일반적인 문제에 대한 해결책을 찾으려면 문제 해결을 참고하세요.