구글 PS2팀 박찬영
1. 개요
Google Cloud는 완전 관리형(Serverless) 서비스인 Cloud Run, Cloud Functions, App Engine을 지원합니다. 완전 관리형 서비스는 Google Cloud 내의 분리된 별도의 환경에서 실행되고 관리됩니다. 완전 관리형 서비스는 사용자가 관리해야 하는 서버 없이 실행되기 때문에 Google Cloud 내의 다른 리소스들과 연결하기 위해서는 Public IP를 사용해야 합니다.
서버리스 VPC 액세스를 구성하면 Google Cloud 내 리소스들과 Private IP로도 연결이 가능합니다. 서버리스 VPC 액세스 커넥터를 사용하여 VPC 액세스를 구성하고 Private IP로 통신하는 방법과 실제 적용 케이스에 대해 기술하겠습니다.
2. 서버리스 VPC 액세스 커넥터 생성하기
Cloud Console API 및 서비스에서 Serverless VPC Access API를 사용하도록 설정 합니다.
VPC Network / Serverless VPC access를 클릭하고 필요 정보를 입력하여 커넥터를 생성합니다.
- 서브넷 IP는 /28 CIDR 범위이며 기존 서브넷과 겹치지 않아야 합니다.
- 커넥터는 연결되는 서버리스 서비스와 동일한 프로젝트에 있어야 합니다.
- 커넥터는 연결되는 서버리스 서비스와 동일한 리전에 있어야 합니다.
- 내부 IP 주소 및 내부 DNS 이름으로의 트래픽은 커넥터를 통해 라우팅됩니다. 기본적으로 외부 IP 주소에 대한 트래픽은 인터넷을 통해 라우팅됩니다.
3. Cloud Functions VPC 액세스 커넥터 적용 예
아래 그림은 Cloud Functions/Cloud Run에서 Private IP(Connector Subnet IP)로 Peering 연결된 mongoDB Cluster에 접속하는 구성 입니다.
mongoDB Cluster에 Private IP(VPC 액세스 커넥터 IP)만 접속이 가능하도록 설정합니다.
Cloud Functions 연결 설정에서 VPC 커넥터를 사용하도록 설정합니다.
Cloud Functions에 mongoDB에 접속하는 코드를 작성하고 Functions을 실행하면 mongoDB에 정상적으로 접속되는 것을 확인할 수 있습니다.
또한, mongoDB의 Access History를 보면 DB에 접근한 IP 주소가 VPC 커넥터의 주소대역(10.8.0.0/28)임을 확인할 수 있습니다.
4. Cloud Run VPC 액세스 커넥터 적용 예
Cloud Run에서 VPC 액세스 커넥터를 테스트 하기 위해 간단한 소스코드를 작성 합니다.
Cloud Run에서 실행하기 위해 Dockerfile을 작성하고 빌드하여 Artifact Registry에 등록 합니다.
Cloud Run에서 실행할 이미지를 선택하고 고급설정에서 VPC 커넥터를 사용하도록 설정합니다.
Cloud Run에서 VPC 커넥터를 사용하여 mongoDB에 정상적으로 접근한 것을 확인할 수 있습니다.
5. 요약
지금까지 Serverless VPC Access Connector를 사용하여 Serverless 제품에서 VPC 네트워크에 접속하고 Private IP를 통해 통신하는 내용에 대해 설명했습니다.
Serverless VPC 액세스는 공유 VPC와 Cloud Interconnect, Cloud VPN, VPC 네트워크 피어링을 통해 연결된 네트워크와의 통신을 지원하므로 다양한 케이스에 적용하여 활용하시기 바랍니다.