포트 매핑 서비스 만들기
이 페이지에서는 서비스 프로듀서가 Private Service Connect 포트 매핑을 사용하는 서비스를 게시하는 방법을 설명합니다.
Private Service Connect 포트 매핑을 사용하면 소비자 가상 머신(VM) 인스턴스가 단일 Private Service Connect 엔드포인트를 통해 특정 프로듀서 VM의 특정 서비스 포트와 비공개로 통신할 수 있습니다.
시작하기 전에
- 프로젝트에서 Compute Engine API를 사용 설정해야 합니다.
- 포트 매핑 NEG에 연결할 각 네트워크 엔드포인트에 대해 VM을 만들어야 합니다. VM은 모두 동일한 리전에 있어야 합니다.
- 게시된 서비스 정보를 참조하세요.
- Private Service Connect 포트 매핑 정보를 참조하세요.
필요한 역할
Private Service Connect 포트 매핑으로 서비스를 게시할 준비를 하는 데 필요한 권한을 얻으려면 관리자에게 프로듀서 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.
-
Compute 부하 분산기 관리자(
roles/compute.loadBalancerAdmin
) -
Compute 네트워크 관리자(
roles/compute.networkAdmin
)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
포트 매핑 서비스 만들기 및 게시
포트 매핑 서비스의 구성은 내부 패스 스루 네트워크 부하 분산기와 유사하지만 트래픽은 부하 분산되지 않습니다. 포트 매핑 서비스를 만들고 게시하려면 다음 안내를 따르세요.
- 포트 매핑 NEG 만들기
- 포트 매핑 NEG에 네트워크 엔드포인트 추가
- 포트 매핑 서비스 만들기
- 포트 매핑 서비스 게시
포트 매핑 NEG 만들기
포트 매핑 네트워크 NEG는 네트워크 엔드포인트 유형이 GCE_VM_IP_PORTMAP
인 리전 NEG입니다. 포트 매핑 NEG를 만든 후에는 그 유형을 변경할 수 없습니다.
포트 매핑 NEG를 만들 때 서브넷을 선택합니다. 포트 매핑 NEG와 연결하는 네트워크 엔드포인트는 이 서브넷에 기본 네트워크 인터페이스가 있어야 합니다.
콘솔
Google Cloud 콘솔에서 네트워크 엔드포인트 그룹 페이지로 이동합니다.
네트워크 엔드포인트 그룹 만들기를 클릭합니다.
이름을 입력합니다.
네트워크 엔드포인트 그룹 유형을 클릭한 후 포트 매핑 NEG(지역)를 선택합니다.
리전을 선택합니다.
네트워크를 선택합니다.
서브네트워크를 선택합니다.
만들기를 클릭합니다.
gcloud
network-endpoints-groups create
명령어를 사용합니다.
gcloud beta compute network-endpoint-groups create NEG \ --region=REGION \ --network=NETWORK \ --subnet=SUBNET \ --network-endpoint-type=GCE_VM_IP_PORTMAP
다음을 바꿉니다.
NEG
: 포트 매핑 NEG의 이름입니다.REGION
: 포트 매핑 NEG의 리전입니다.NETWORK
: 포트 매핑 NEG의 VPC 네트워크입니다.SUBNET
: 포트 매핑 NEG의 서브넷입니다.
API
regionNetworkEndpointGroups.insert
메서드에 POST
요청을 전송합니다.
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/networkEndpointGroups { "name": "NEG", "networkEndpointType": "GCE_VM_IP_PORTMAP", "network": "projects/PROJECT_ID/global/networks/NETWORK", "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET" }
다음을 바꿉니다.
PROJECT_ID
: 포트 매핑 NEG의 프로젝트 ID입니다.REGION
: 포트 매핑 NEG의 리전입니다.NEG
: 포트 매핑 NEG의 이름입니다.NETWORK
: 포트 매핑 NEG의 VPC 네트워크입니다.SUBNET
: 포트 매핑 NEG의 서브넷입니다.
포트 매핑 NEG에 네트워크 엔드포인트 추가
포트 매핑이 포함된 하나 이상의 네트워크 엔드포인트를 만들고 포트 매핑 NEG에 연결합니다.
포트 매핑 NEG의 네트워크 엔드포인트는 영역형이며 다음 요구사항을 충족해야 합니다.
- 각 네트워크 엔드포인트는 포트 매핑 NEG와 동일한 서브넷에 기본 네트워크 인터페이스가 있는 Compute Engine VM을 나타냅니다.
- 각 네트워크 엔드포인트는 고유한 클라이언트 목적지 포트를 참조합니다.
각 네트워크 엔드포인트는 서비스 포트와 VM의 고유한 조합을 참조해야 합니다.
콘솔
Google Cloud 콘솔에서 네트워크 엔드포인트 그룹 페이지로 이동합니다.
업데이트할 포트 매핑 NEG의 이름을 클릭합니다.
네트워크 엔드포인트 추가를 클릭합니다.
VM 인스턴스를 클릭한 후 VM을 선택합니다.
VM 포트 1을 클릭한 후 서비스 포트를 입력합니다.
클라이언트 포트 1을 클릭한 후 클라이언트 목적지 포트를 입력합니다.
추가하려는 각 네트워크 엔드포인트에 대해 네트워크 엔드포인트 추가를 클릭한 다음 네트워크 엔드포인트 세부정보를 입력합니다.
만들기를 클릭합니다.
gcloud
network-endpoint-groups update
명령어를 사용합니다. 연결하려는 각 네트워크 엔드포인트에 --add-endpoint
플래그를 포함합니다.
gcloud beta compute network-endpoint-groups update NEG \ --region=REGION \ --add-endpoint=client-destination-port=CLIENT_DESTINATION_PORT_1,instance=projects/PROJECT_ID/zones/ZONE_1/instances/VM_1_NAME,port=VM_1_PORT \ --add-endpoint=client-destination-port=CLIENT_DESTINATION_PORT_2,instance=projects/PROJECT_ID/zones/ZONE_2/instances/VM_2_NAME,port=VM_2_PORT
다음을 바꿉니다.
NEG
: 포트 매핑 NEG의 이름입니다.REGION
: 포트 매핑 NEG의 리전입니다.CLIENT_DESTINATION_PORT_1
: 첫 번째 네트워크 엔드포인트의 클라이언트 목적지 포트입니다.PROJECT_ID
: 프로듀서 프로젝트의 프로젝트 ID입니다.ZONE_1
: 첫 번째 네트워크 엔드포인트의 영역입니다.VM_1_NAME
: 첫 번째 네트워크 엔드포인트의 대상 VM 이름입니다.VM_1_PORT
: 첫 번째 네트워크 엔드포인트의 서비스 포트입니다.CLIENT_DESTINATION_PORT_2
: 두 번째 네트워크 엔드포인트의 클라이언트 목적지 포트입니다.ZONE_2
: 두 번째 네트워크 엔드포인트의 영역입니다.VM_2_NAME
: 두 번째 네트워크 엔드포인트의 대상 VM 이름입니다.VM_2_PORT
: 두 번째 네트워크 엔드포인트의 서비스 포트입니다.
API
regionNetworkEndpointGroups.attachNetworkEndpoints
메서드에 POST
요청을 전송합니다.
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/networkEndpointGroups/NEG/attachNetworkEndpoints { "networkEndpoints": [ { "clientDestinationPort":CLIENT_DESTINATION_PORT_1, "instance": "projects/PROJECT_ID/zones/ZONE_1/instances/VM_1_NAME", "port": SERVICE_PORT_1 }, { "clientDestinationPort": CLIENT_DESTINATION_PORT_2, "instance": "projects/PROJECT_ID/zones/ZONE_2/instances/VM_2_NAME", "port": SERVICE_PORT_2 } ] }
다음을 바꿉니다.
PROJECT_ID
: 프로듀서 프로젝트의 프로젝트 ID입니다.REGION
: 포트 매핑 NEG의 리전입니다.NEG
: 포트 매핑 NEG의 이름입니다.CLIENT_DESTINATION_PORT_1
: 첫 번째 네트워크 엔드포인트의 클라이언트 목적지 포트입니다.ZONE_1
: 첫 번째 네트워크 엔드포인트의 영역입니다.VM_1_NAME
: 첫 번째 네트워크 엔드포인트의 대상 VM 이름입니다.SERVICE_PORT_1
: 첫 번째 네트워크 엔드포인트의 서비스 포트입니다.CLIENT_DESTINATION_PORT_2
: 두 번째 네트워크 엔드포인트의 클라이언트 목적지 포트입니다.ZONE_2
: 두 번째 네트워크 엔드포인트의 영역입니다.VM_2_NAME
: 두 번째 네트워크 엔드포인트의 대상 VM 이름입니다.SERVICE_PORT_2
: 두 번째 네트워크 엔드포인트의 서비스 포트입니다.
포트 매핑 서비스 만들기
포트 매핑 서비스를 만들려면 다음 단계를 완료하세요.
NEG를 추가한 후에는 백엔드 서비스와 연결된 포트 매핑 NEG를 변경할 수 없습니다. 하지만 포트 매핑 NEG의 네트워크 엔드포인트를 업데이트할 수 있습니다.
전달 규칙을 만든 후에는 전달 규칙의 연결을 업데이트할 수 없습니다. 다른 백엔드 서비스에 연결해야 하는 경우 전달 규칙을 삭제한 다음 새 규칙을 만듭니다.
콘솔
구성 시작
Google Cloud 콘솔에서 부하 분산 페이지로 이동합니다.
- 부하 분산기 만들기를 클릭합니다.
- 부하 분산기 유형에 네트워크 부하 분산기(TCP/UDP/SSL)를 선택하고 다음을 클릭합니다.
- 프록시 또는 패스 스루에서 패스 스루 부하 분산기를 선택하고 다음을 클릭합니다.
- 공개 또는 내부에서 내부를 선택하고 다음을 클릭합니다.
- 구성을 클릭합니다.
기본 구성
- 부하 분산기 이름을 입력합니다.
- 리전을 선택합니다.
- 네트워크를 선택합니다.
백엔드 구성
- 백엔드 유형에 포트 매핑 네트워크 엔드포인트 그룹을 선택합니다.
- 포트 매핑 네트워크 엔드포인트 그룹을 선택합니다.
프런트엔드 구성
- 프런트엔드 구성을 클릭합니다.
- 선택사항: 이름을 입력합니다.
- 선택사항: 설명을 입력합니다.
- 프로토콜을 선택합니다.
- 서브네트워크를 선택합니다.
- 완료를 클릭합니다.
- 만들기를 클릭합니다.
gcloud
백엔드 서비스를 만들려면
backend-services create
명령어를 사용합니다.gcloud beta compute backend-services create SERVICE \ --load-balancing-scheme=internal \ --region=REGION \ --network=NETWORK
다음을 바꿉니다.
SERVICE
: 백엔드 서비스의 이름입니다.REGION
: 백엔드 서비스의 리전입니다.NETWORK
: 백엔드 서비스의 프로듀서 VPC 네트워크입니다.
포트 매핑 NEG를 백엔드 서비스에 추가하려면
backend-services add-backend
명령어를 사용합니다.단일 백엔드 서비스에 포트 매핑 NEG를 여러 개 추가할 수 없습니다.
gcloud beta compute backend-services add-backend SERVICE \ --network-endpoint-group=NEG \ --network-endpoint-group-region=REGION
NEG
를 포트 매핑 NEG의 이름으로 바꿉니다.포트 매핑 서비스의 전달 규칙을 만들려면
forwarding-rules create
명령어를 사용합니다.전달 규칙은 모든 클라이언트 목적지 포트의 트래픽을 전달하도록 구성해야 합니다.
gcloud beta compute forwarding-rules create RULE \ --load-balancing-scheme=INTERNAL \ --ip-protocol=PROTOCOL \ --network=NETWORK \ --subnet=SUBNET \ --address=IP_ADDRESS \ --ports=ALL \ --region=REGION \ --backend-service=SERVICE
다음을 바꿉니다.
RULE
: 전달 규칙의 이름입니다.PROTOCOL
: 전달 규칙의 프로토콜로,TCP
또는UDP
일 수 있습니다.SUBNET
: 프로듀서 서브넷입니다. 포트 매핑 NEG와 연결된 서브넷과 동일해야 합니다.IP_ADDRESS
: 전달 규칙의 IP 주소로, 프로듀서 서브넷의 IP 주소 범위에서 가져와야 합니다.
API
백엔드 서비스를 만들려면
regionBackendServices.insert
메서드에POST
요청을 전송합니다.POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/backendServices { "name": "SERVICE", "loadBalancingScheme": "INTERNAL", "network": "projects/PROJECT_ID/global/networks/NETWORK" }
다음을 바꿉니다.
PROJECT_ID
: 백엔드 서비스 프로젝트의 ID입니다.REGION
: 백엔드 서비스의 리전입니다.SERVICE
: 백엔드 서비스의 이름입니다.NETWORK
: 프로듀서 VPC 네트워크입니다.
포트 매핑 NEG를 백엔드 서비스에 추가하려면
regionBackendServices.patch
메서드에PATCH
요청을 전송합니다.단일 백엔드 서비스에 포트 매핑 NEG를 여러 개 추가할 수 없습니다.
PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/backendServices/SERVICE { "backends": [ { "group": "https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/networkEndpointGroups/NEG" } ] }
NEG
를 포트 매핑 NEG의 이름으로 바꿉니다.포트 매핑 서비스의 전달 규칙을 만들려면
forwardingRules.insert
메서드에POST
요청을 전송합니다.전달 규칙은 모든 클라이언트 목적지 포트의 트래픽을 전달하도록 구성해야 합니다.
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID>/regions/REGION/forwardingRules { "name": "RULE", "loadBalancingScheme": "INTERNAL", "IPProtocol": "PROTOCOL", "network": "projects/PROJECT_ID/global/networks/NETWORK", "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET", "IPAddress": "IP_ADDRESS", "allPorts": true, "backendService": "projects/PROJECT_ID/regions/REGION/backendServices/SERVICE" }
다음을 바꿉니다.
RULE
: 전달 규칙의 이름입니다.PROTOCOL
: 전달 규칙의 프로토콜로,TCP
또는UDP
일 수 있습니다.SUBNET
: 프로듀서 서브넷입니다. 포트 매핑 NEG와 연결된 서브넷과 동일해야 합니다.IP_ADDRESS
: 전달 규칙의 IP 주소로, 프로듀서 서브넷의 IP 주소 범위에서 가져와야 합니다.
포트 매핑 서비스 게시
소비자가 포트 매핑 서비스를 사용할 수 있도록 하려면 서비스 연결을 만들어 서비스를 게시합니다. 서비스 연결을 만들 때 포트 매핑 서비스와 연결된 전달 규칙을 지정합니다.