[네트워크 network] Shared VPC란? (GCP Shared VPC)

resilient

·

2022. 7. 31. 18:11

728x90
반응형

현재 진행 중인 프로젝트는 GCP 환경에서 App Engine을 사용해서 운영이 되고 있습니다. 프로젝트는 GCP A Project와 GCP B Project가 동시에 운영이 되고 있는데요. B Project가 A Project의 Cloud sql을 공유해서 사용해야 하는 상황에 놓였습니다.

 

처음 계획은 A Project VPC Connector를 만들고 B Project에서 app.yaml 파일에 A Project의 VPC Connector를 사용하도록 설정해서 deploy 하기였는데요. 결론적으로는 실패했습니다. 이유는 여기 스택오버플로우에 나와있듯이 App Engine끼리 VPC Connector만을 이용해서 CloudSQL을 사용하는 방식은 지원하지 않기 때문이었죠.

 

삽질을 하다가 CTO님한테 다른 방법을 요청드렸고, 다음과 같은 3가지 방법을 제시해주셨습니다.

 

CTO 님이 제시해주신 방법 3가지.

 

결론적으로 (2)번 방법을 선택했고 (2)번에서 사용한 Shared VPC 세팅 과정을 이번에 정리해보려고 합니다.

 

0. 먼저 VPC란?

 

아래 사진을 보면 VPC가 무엇인지 한 번에 이해할 수 있습니다.

GCP VPC Architecture

VPC(Virtual Private Cloud) 사용자가 정의하는 IP 주소 범위 선택, Subnet 생성, 라우팅 테이블 및 네트워크 게이트웨이 구성 등 가상 네트워킹 환경을 의미합니다. VPC를 적용하면 위 그림과 같이 VPC별로 네트워크를 구성할 수 있고 각각의 VPC에 따라 다르게 네트워크 설정을 줄 수 있습니다. 또한 각각의 VPC는 완전히 독립된 네트워크처럼 작동하게 됩니다.

 

위 사진은 하나의 VPC Network에 여러 개의 Subnet이 있는 구조인데요. 여기서 Subnet은 VPC안에 있는 VPC보다 더 작은 단위이기 때문에 당연히 Subnet 마스크가 더 높게 되고 아이피 범위가 더 작은 값을 갖게 됩니다. 나누는 이유는 더 많은 네트워크망을 만들기 위해서입니다. 각각의 Subnet은 가용 영역 안에 존재하며 Subnet 안에 CloudSQL, VM과 같은 리소스들을 위치시킬 수 있습니다. (당연히 회사에서 사용하는 Subnet은 Private Subnet입니다.)

 

1. Shared VPC

 

Shared VPC는 말 그대로 여러 프로젝트가 공유해서 사용할 수 있는 VPC network입니다. GCP의 경우 리소스 hierarchy 최상위 단위가 organization이기 때문에 서로 다른 organization이 VPC를 공유하는 것은 불가능하고 같은 organization 하위의 프로젝트들은 VPC를 공유할 수 있죠. Shared VPC를 사용하려면 host Project를 지정해야 합니다. Host Project의 VPC를 Shared VPC로 사용하게 되는데 다음과 같이 설정할 수 있습니다. 

 

예를 들어보겠습니다. A Project(Host Project)의 VPC를 Shared VPC로 설정해놓고, B Project의 VPC Connector가 Host Project인 A Project 네트워크를 향하도록 설정해주면 됩니다. 

 

 

2. GCP Shared VPC Setting

 

과정을 살펴보겠습니다.

 

먼저 Organization 레벨에서 A Project (playground-s Project)에 Host Project를 설정해줍니다.

 

 

다음으로 연결된 A Project 프로젝트에 B Project인 playground-e Project를 지정해줍니다.

 

 

다음으로 A Project의 VPC Network에서 subnet을 만들어줍니다. Shared VPC로 사용할 vpc ip는 /28 subnet의 IP범위를 갖게 해야 합니다.

 

다음으로 /28 범위를 사용하는 internal IP를 가진 Subnet을 B Project가 사용할 수 있도록 공유 대상을 눌러서 권한을 부여해줍니다.

 

마지막으로 B Project로 가서 VPC Connector을 만들어주는데 subnet-vpc-connector subnet을 사용해서 만들어주면 됩니다.

 

 

자, 위 과정들을 한 줄로 정리해보겠습니다.

 

위 과정을 모두 거쳤다면 결과적으로는 A Project에서 만든 Shared VPC를 이용하여 B Project에서 VPC Connector로 A Project의 Subnet에 접속할 수 있고 A Project 안에 있는 Cloud SQL을 사용할 수 있게 된 것이죠.

 

 

3. Shared VPC의 특징

 

Shared VPC를 사용할 경우 가장 큰 장점은 효율성과 보안이라고 할 수 있습니다. Shared VPC 안의 리소스들은 서로 같은 네트워크 안의 internal IP address로 통신하기 때문에 프로젝트 간 통신 데이터가 public internet을 거치지 않죠. 그렇기 때문에 빠르고 안전하고 효율적이라고 할 수 있습니다.

 

GCP Shared VPC는 IAM을 통한 권한 관리로 쉽게 설정이 가능하다는 큰 장점이 존재했습니다.

 

4. 정리

이번 시간에는 Shared VPC가 무엇인지에 대해서 간단히 살펴보았고, GCP 환경에서 Shared VPC를 세팅하는 방법에 대해서 정리해봤습니다. VPC가 무엇인지 이론적으로는 알고 있었지만 Private 환경인 실무에서 어떻게 쓰이는지 이번 프로젝트 세팅을 통해 공부를 많이 한 것 같습니다. 

 

다음 게시물부터는 이렇게 설정한 Shared VPC 환경 내에서 Project를 개발하는 과정들을 조금씩 정리해보려고 합니다. 

 

감사합니다.

 

 

반응형