Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/
티스토리 뷰
GCP VPC와 AWS의 VPC 단위
GCP의 VPC와 AWS의 VPC의 가장 큰 차이는 점은 적용 단위이다.
AWS에서 VPC는 리전에 종속되는 리소스이다.
따라서 다른 리전의 자원에 접근하려면 VPC Peering과 같은 기능이 필요했다.
https://everenew.tistory.com/399
이러한 VPC 내부의 서브넷은 각 zone에 종속되었다.
하지만 GCP에서는 VPC가 모든 리전에 걸쳐서 설정될 수 있다.
이를 가능하게 하는 것은 Google이 독자적으로 설치해 둔 해저 광케이블과 같은 초고속 네트워크 인프라를 이미 구성해 두었기 때문이다.
또한 subnet은 리전 단위가 되어 여러 zone에 걸쳐서 설정될 수 있다.
이를 GCP의 VPC 를 생성하여 직접 테스트해보자.
Default VPC
일단 모든 프로젝트에 기본 VPC가 존재한다.
이 default VPC는 모든 region에 걸쳐 생성되기 때문에, 각 리전에 서브넷이 하나씩 생겨서 29개의 subnet을 가지고 있는 것을 확인된다.
이런 기본 VPC도 삭제 가능하다.
자동 모드로 VPC 생성
자동으로 VPC 생성을 해보자.
생성 시 subnet을 automatic으로 설정하면, 모든 리전에 하나씩 Subnet이 생성된다.
방화벽은 기본 방화벽들을 적용해 준다.
이렇게 생성하면 VPC가 모든 리전에 걸쳐서 생성되었다.
VM 생성하기
다음 us-east4에 생성된 Subnet안에 VM을 만들자.
다른 하나는 europe-west4의 subnet에 만들자.
이제 두 인스턴스는 다른 리전의 다른 서브넷이지만 같은 VPC 내부에 존재한다.
따라서 두 인스턴스가 서로 통신이 되는지 확인하기 위해 ssh로 접근하자.
두 인스턴스 간에 통신이 된다.
외부 IP로도 확인이 된다.
자동으로 생성한 VPC는 custom으로 변경도 가능하다.
custom 모드 vpc 생성
custom은 리전을 선택할 수 있으므로, 하나의 리전에만 서브넷을 생성시킨다.
us-east4에 10.240.0.0/24 서브넷만 생성해 주었다.
CLI로 VPC 생성하기
GCP는 AWS와 같이 GUI 콘솔이 잘 만들어져 있지는 않다.
그 이유는 GCP가 CLI base로 작업하길 권장하기 때문이다.
이번엔 CLI로 VPC를 생성해 보자.
custom mode VPC 생성
gcloud compute networks create <VPC 이름> --subnet-mode=custom
서브넷을 리전과 IP 대역대로 명시해서 만들기
gcloud compute networks subnets create <서브넷 이름> --network=<VPC 이름> --region=<리전ID> --range=<IP range>
VPC 목록을 출력
gcloud compute networks list
방화벽 설정
방화벽도 추가해 주자.
이는 AWS의 보안 그룹과 동일하다.
TCP 22번과 3389(rdp)를 허용시켜 주자.
이러한 세팅을 CLI로 변환해서 제공해 준다.
gcloud compute firewall-rules create privatenet-allow-icmp-ssh-rdp --direction=INGRESS --priority=1000 --network=privatenet --action=ALLOW --rules=icmp,tcp:22,tcp:3389 --source-ranges=0.0.0.0/0
방화벽 목록 출력
gcloud compute firewall-rules list --sort-by=NETWORK
새로운 VPC에 VM 생성
vm 생성 시 network interface에서 다른 VPC의 서브넷을 세팅해 주자.
이러한 세팅도 명령어로도 가능하다.
인스턴스 생성 명령어
gcloud compute instances create privatenet-us-vm --zone=us-east4-a --machine-type=e2-micro --subnet=privatesubnet-us --image-family=debian-11 --image-project=debian-cloud --boot-disk-size=10GB --boot-disk-type=pd-standard --boot-disk-device-name=privatenet-us-vm
인스턴스 리스트 출력
gcloud compute instances list --sort-by=ZONE
이제 인스턴스들을 확인해 보면, 같은 리전이지만 다른 VPC의 인스턴스들이 확인된다.
따라서 서로 다른 VPC 인스턴스는 내부 IP로는 접근이 되지 않고 외부 IP로만 접근이 된다.
'Cloud > GCP' 카테고리의 다른 글
GCP GKE 클러스터 생성하기 (kubectl, LoadBalancer) (0) | 2024.04.11 |
---|---|
GCP Cloud Build로 Docker 컨테이너 빌드하기 (Artifact Registry) (0) | 2024.04.11 |
GCP Cloud NAT 구성하기 (0) | 2024.04.09 |
[GCP] IAP와 Private Google Access 사용하기 (0) | 2024.04.08 |