서버리스 VPC 액세스
서버리스 VPC 액세스를 사용하면 Cloud Run, App Engine, Cloud Run 함수와 같은 서버리스 환경에서 Virtual Private Cloud (VPC) 네트워크에 직접 연결할 수 있습니다. 서버리스 VPC 액세스를 구성하면 RFC 1918 및 RFC 6598에서 정의된 대로 서버리스 환경에서 내부 DNS 및 내부 IP 주소를 사용하여 VPC 네트워크에 요청을 보낼 수 있습니다. 이러한 요청에 대한 응답도 내부 네트워크를 사용합니다.
서버리스 VPC 액세스를 사용하면 다음과 같은 두 가지 주요 이점이 있습니다.
- VPC 네트워크로 전송된 요청은 절대 인터넷에 노출되지 않습니다.
- 서버리스 VPC 액세스를 통한 통신은 인터넷에 비해 지연 시간이 짧을 수 있습니다.
서버리스 VPC 액세스는 내부 트래픽이 서버리스 VPC 액세스 커넥터를 통해 서버리스 환경에서 전송된 요청에 대한 응답인 경우에만 VPC 네트워크에서 서버리스 환경으로 내부 트래픽을 전송합니다. 서버리스 환경으로 다른 내부 트래픽을 전송하는 방법에 대한 자세한 내용은 비공개 Google 액세스를 참조하세요.
여러 VPC 네트워크 및 Google Cloud 프로젝트에서 리소스에 액세스하려면 공유 VPC 또는 VPC 네트워크 피어링도 구성해야 합니다.
작동 방식
서버리스 VPC 액세스는 커넥터라는 리소스를 토대로 합니다. 커넥터는 서버리스 환경과 VPC 네트워크 간의 트래픽을 처리합니다. Google Cloud 프로젝트에서 커넥터를 생성할 때 특정 VPC 네트워크 및 리전에 연결합니다. 그런 다음 아웃바운드 네트워크 트래픽에 커넥터를 사용하도록 서버리스 서비스를 구성할 수 있습니다.
IP 주소 범위
커넥터의 IP 주소 범위를 설정하는 방법은 두 가지가 있습니다.
- 서브넷: 이미 서브넷을 사용 중인 리소스가 없으면 기존
/28
서브넷을 지정할 수 있습니다. - CIDR 범위: 사용되지 않은
/28
CIDR 범위를 지정할 수 있습니다. 이 범위를 지정할 때는 사용 중인 CIDR 범위와 겹치지 않는지 확인하세요.
커넥터를 통해 VPC 네트워크로 전송된 트래픽은 지정된 서브넷 또는 CIDR 범위에서 시작됩니다.
방화벽 규칙
방화벽 규칙은 커넥터의 작동과 네트워크의 리소스를 비롯한 다른 리소스와의 통신에 필요합니다.
독립형 VPC 네트워크 또는 공유 VPC 호스트 프로젝트의 커넥터에 대한 방화벽 규칙
독립형 VPC 네트워크 또는 공유 VPC 네트워크의 호스트 프로젝트에서 커넥터를 만들면 Google Cloud는 필요한 모든 방화벽 규칙을 만듭니다. 이러한 방화벽 규칙은 연결된 커넥터가 존재하는 경우에만 존재합니다. 이러한 템플릿은 Google Cloud 콘솔에 표시되지만 수정하거나 삭제할 수는 없습니다.
방화벽 규칙의 목적 | 이름 형식 | 유형 | 작업 | 우선순위 | 프로토콜 및 포트 |
---|---|---|---|---|---|
특정 포트의 상태 점검 프로브 범위 (35.191.0.0/16 , 35.191.192.0/18 , 130.211.0.0/22 )에서 커넥터의 VM 인스턴스로 향하는 트래픽을 허용합니다. |
aet-CONNECTOR_REGION-CONNECTOR_NAME-hcfw |
인그레스 | 허용 | 100 | TCP:667 |
특정 포트에서 Google의 기본 서버리스 인프라 (35.199.224.0/19 )에서 커넥터의 VM 인스턴스로 향하는 트래픽을 허용합니다. |
aet-CONNECTOR_REGION-CONNECTOR_NAME-rsgfw |
인그레스 | 허용 | 100 | TCP:667, UDP:665~666, ICMP |
특정 포트에서 커넥터의 VM 인스턴스에서 Google의 기본 서버리스 인프라 (35.199.224.0/19 )로의 트래픽을 허용합니다. |
aet-CONNECTOR_REGION-CONNECTOR_NAME-earfw |
이그레스 | 허용 | 100 | TCP:667, UDP:665~666, ICMP |
다른 모든 포트의 경우 커넥터의 VM 인스턴스에서 Google의 기본 서버리스 인프라 (35.199.224.0/19 )로의 트래픽을 차단합니다. |
aet-CONNECTOR_REGION-CONNECTOR_NAME-egrfw |
이그레스 | 거부 | 100 | TCP:1-666, 668-65535, UDP:1-664, 667-65535 |
커넥터의 VM 인스턴스에서 커넥터의 VPC 네트워크에 있는 모든 리소스로의 모든 트래픽 (IP 주소 기반)을 허용합니다. | aet-CONNECTOR_REGION-CONNECTOR_NAME-sbntfw |
인그레스 | 허용 | 1000 | TCP, UDP, ICMP |
커넥터의 VM 인스턴스에서 커넥터의 VPC 네트워크에 있는 모든 리소스로의 모든 트래픽을 허용합니다 (네트워크 태그 기준). | aet-CONNECTOR_REGION-CONNECTOR_NAME-tagfw |
인그레스 | 허용 | 1000 | TCP, UDP, ICMP |
VPC 방화벽 규칙 또는 방화벽 정책의 규칙을 사용하여 대상 VPC 네트워크의 리소스에 대한 커넥터의 액세스를 추가로 제한할 수 있습니다. 방화벽 규칙을 추가할 때는 Google Cloud에서 설정한 숨겨진 방화벽 규칙과 충돌하지 않도록 우선순위가 100보다 높은 규칙을 사용해야 합니다. 자세한 내용은 커넥터 VM 액세스 VPC 네트워크 리소스 제한을 참고하세요.
공유 VPC 서비스 프로젝트의 커넥터에 대한 방화벽 규칙
서비스 프로젝트에서 커넥터를 만들고 커넥터가 호스트 프로젝트의 공유 VPC 네트워크를 타겟팅하는 경우 커넥터 작동에 필요한 트래픽을 허용하도록 방화벽 규칙을 추가해야 합니다.
VPC 방화벽 규칙 또는 방화벽 정책의 규칙을 사용하여 대상 VPC 네트워크의 리소스에 대한 커넥터의 액세스를 제한할 수도 있습니다. 자세한 내용은 VPC 리소스에 대한 액세스를 참고하세요.
처리량 및 확장
서버리스 VPC 액세스 커넥터는 커넥터 인스턴스로 구성됩니다. 커넥터 인스턴스는 여러 머신 유형 중 하나를 사용할 수 있습니다. 머신 유형이 클수록 처리량이 높습니다. Google Cloud Console 및 다음 표에서 각 머신 유형의 예상 처리량과 비용을 볼 수 있습니다.
머신 유형 | Mbps의 예상 처리량 범위* | 가격 (커넥터 인스턴스와 네트워크 아웃바운드 데이터 전송 비용) |
---|---|---|
f1-micro |
100-500 | f1-micro 가격 |
e2-micro |
200-1000 | e2-micro 가격 |
e2-standard-4 |
3200-16000 | e2 표준 가격 책정 |
* 최대 처리량 범위는 일반 작업 기반의 예측입니다. 실제 처리량은 여러 요인에 따라 달라집니다. VM 네트워크 대역폭을 참고하세요.
커넥터에 허용되는 커넥터 인스턴스의 최소 및 최대 수를 설정할 수 있습니다. 최솟값은 2 이상이어야 합니다. 최댓값은 10 이하여야 하며 최솟값보다 커야 합니다. If you 커넥터의 최소 및 최대 인스턴스 수를 지정하지 않으면 기본적으로 최솟값 2와 최댓값 10이 적용됩니다. Google에서 보안 업데이트와 같은 격주 유지보수를 수행할 때 커넥터가 최대 인스턴스 수 설정 값을 일시적으로 초과할 수 있습니다. 유지보수 중에 서비스가 중단되지 않도록 추가 인스턴스를 추가할 수 있습니다. 유지보수가 완료되면 커넥터는 유지보수 기간 전과 동일한 수의 인스턴스로 돌아갑니다. 유지보수는 일반적으로 몇 분 동안 지속됩니다. 유지보수 중의 영향을 줄이려면 연결 풀을 사용하고 1분 넘게 지속되는 연결을 사용하지 마세요. 인스턴스는 종료 1분 전에 요청 수락을 중지합니다.
서버리스 VPC 액세스는 트래픽이 증가함에 따라 커넥터의 인스턴스 수를 자동으로 수평 확장합니다. 추가된 인스턴스는 커넥터에 지정된 유형입니다. 커넥터는 머신 유형을 혼합할 수 없습니다. 커넥터는 축소되지 않습니다. 커넥터가 원하는 만큼 이상으로 수평 확장되지 않도록 하려면 최대 인스턴스 수를 낮게 설정합니다. 커넥터가 수평 확장되었고 더 적은 인스턴스가 필요한 경우 필요한 인스턴스 수로 커넥터를 다시 만듭니다.
예시
머신 유형으로 f1-micro
를 선택하고 최소 및 최대 인스턴스 수에 기본값(각각 2, 10)을 사용하는 경우 커넥터의 예상 처리량은 인스턴스 수가 기본 최솟값이면 100Mbps, 인스턴스 수가 기본 최댓값이면 500Mbps입니다.
처리량 차트
Google Cloud console의 커넥터 세부정보 페이지에서 현재 처리량을 모니터링할 수 있습니다. 이 페이지의 처리량 차트에는 커넥터 처리량 측정항목에 대한 세부 보기가 표시됩니다.
네트워크 태그
서버리스 VPC 액세스 네트워크 태그를 사용하면 방화벽 규칙 및 경로에서 VPC 커넥터를 참조할 수 있습니다.
모든 서버리스 VPC 액세스 커넥터는 자동으로 다음 두 가지 네트워크 태그(인스턴스 태그라고도 함)를 수신합니다.
범용 네트워크 태그(
vpc-connector
): 모든 기존 커넥터와 향후의 커넥터에 적용됩니다.고유 네트워크 태그(
vpc-connector-REGION-CONNECTOR_NAME
): REGION 리전의 CONNECTOR_NAME 커넥터에 적용됩니다.
이러한 네트워크 태그를 삭제할 수 없습니다. 새 네트워크 태그를 추가할 수 없습니다.
사용 사례
서버리스 VPC 액세스를 사용하여 Compute Engine VM 인스턴스, Memorystore 인스턴스, 내부 DNS 또는 내부 IP 주소가 있는 기타 리소스에 액세스할 수 있습니다. 다음은 몇 가지 예시입니다.
- Memorystore를 사용하여 서버리스 서비스의 데이터를 저장합니다.
- 서버리스 워크로드는 Compute Engine VM에서 실행되는 서드 파티 소프트웨어를 사용합니다.
- Compute Engine의 관리형 인스턴스 그룹에서 백엔드 서비스를 실행한 상태에서 인터넷에 노출되지 않고 이 백엔드와 통신하기 위해 서버리스 환경이 필요합니다.
- 서버리스 환경은 Cloud VPN을 통해 온프레미스 데이터베이스의 데이터에 액세스해야 합니다.
예시
이 예시에서 Google Cloud 프로젝트는 App Engine, Cloud Run 함수, Cloud Run과 같은 서버리스 환경에서 여러 서비스를 실행합니다.
서버리스 VPC 액세스 커넥터가 생성되고 IP 범위 10.8.0.0/28
이 할당되었습니다. 따라서 커넥터에서 전송된 요청의 소스 IP 주소는 이 범위에 있습니다.
VPC 네트워크에는 두 개의 리소스가 있습니다. 이러한 리소스 중 하나는 내부 IP 주소 10.0.0.4
를 가집니다. 다른 리소스는 내부 IP 주소 10.1.0.2
를 가지며 서버리스 VPC 액세스 커넥터와 다른 리전에 있습니다.
커넥터는 이러한 내부 IP 주소로부터 직접 요청과 응답을 주고받습니다. 커넥터가 내부 IP 주소가 10.1.0.2
인 리소스에 요청을 전송하는 경우 리소스는 다른 리전에 있으므로 아웃바운드 데이터 전송 비용이 적용됩니다.
서버리스 환경과 VPC 네트워크의 리소스 간의 모든 요청과 응답은 내부적으로 전달됩니다.
외부 IP 주소로 전송된 요청은 여전히 인터넷을 통해 전달되며 서버리스 VPC 액세스 커넥터를 사용하지 않습니다.
다음 다이어그램은 이 구성을 보여줍니다.
가격 책정
서버리스 VPC 액세스 가격 책정은 VPC 가격 책정 페이지의 서버리스 VPC 액세스를 참조하세요.
지원되는 서비스
다음 표는 서버리스 VPC 액세스를 사용하여 연결할 수 있는 네트워크의 유형을 보여줍니다.
연결 서비스 | 서버리스 VPC 액세스 지원 |
---|---|
VPC | |
공유 VPC | |
이전 네트워크 | |
Cloud Interconnect에 연결된 네트워크 | |
Cloud VPN에 연결된 네트워크 | |
VPC 네트워크 피어링에 연결된 네트워크 |
다음 표에는 서버리스 VPC 액세스를 지원하는 서버리스 환경이 나와 있습니다.
서버리스 환경 | 서버리스 VPC 액세스 지원 |
---|---|
Cloud Run | |
Knative serving* | |
Cloud Run Functions | |
App Engine 표준 환경 | PHP 5를 제외한 모든 런타임 |
App Engine 가변형 환경* |
Knative serving 또는 App Engine 가변형 환경에서 연결할 때 내부 IP 주소를 사용하려는 경우에는 서버리스 VPC 액세스를 구성하지 않아도 됩니다. 원하는 리소스에 연결할 수 있는 VPC 네트워크에 서비스가 배포되었는지 확인하세요.
지원되는 네트워킹 프로토콜
다음 표에서는 서버리스 VPC 액세스 커넥터가 지원하는 네트워킹 프로토콜을 설명합니다.
프로토콜 | 커넥터를 통해 비공개 IP에 대한 요청만 라우팅 | 커넥터를 통해 모든 트래픽 라우팅 |
---|---|---|
TCP | ||
UDP | ||
ICMP | 외부 IP 주소만 지원됩니다. |
지원되는 리전
서버리스 VPC 액세스 커넥터는 Cloud Run, Cloud Run 함수 또는 App Engine 표준 환경을 지원하는 모든 리전에서 지원됩니다.
사용 가능한 리전을 보려면 다음 안내를 따르세요.
gcloud compute networks vpc-access locations list
다음 단계
- 서버리스 VPC 액세스를 구성하려면 서버리스 VPC 액세스 구성을 참조하세요.