1. VPC 구성하기1
이번 프로젝트의 목표는 Flask simple Todo App를 아래와 같은 인프라를 구축하여 배포하는 것이다.
그림~
VPC구성은 다음과 같이 할 예정이다.
public subnet에서는 서버가 돌아갈 ec2인스턴스가 있고 private subnet에는 RDS인스턴스가 있을 것이다.
우선 VPC를 생성하기 위해 aws VPC 관리콘솔로 들어가자
지금 현재 있는 VPC는 default VPC이다.
새 Custom VPC를 만들어보자
IPv4 CIDR 블록은 10.0.0.0/16으로 설정하였고
IPv6 CIDR 블록은 따로 만들지 않았다.
테넌시 기본은 공유 하드웨어로 AWS IDC센터 어디든 해당 VPC가 위치할 수 있다.
테넌시 전용같은 경우는 고객이 쓰는 하드웨어가 전용 하드웨어에서 실행된다.
그러나 비용이 많이 나오기에 기본으로 설정했다.
이젠 VPC안에 들어갈 서브넷을 만들어보자
서브넷 관리콘솔에 보이는 현재 서브넷들은 default VPC에 대한 서브넷들이다.
서브넷 생성에 들어가면 방금 전에 만든 VPC를 선택하자
지금 만드는 서브넷은 public subnet으로 만들 것이다.
가용 영역은 ap-northeast-2a로 설정했고 IPv4 CIDR 블록은 10.0.0.0/16에 속해있는 10.0.0.0/24로 설정했다.
public subnet이 만들어졌다.
서브넷에서 새 EC2인스턴스를 생성할 때 자동으로 퍼블릭 IP주소를 할당하기 위해서는 서브넷 설정 편집에서 자동 할당 IP 설정을 체크해줘야한다.
만약 EC2인스턴스가 퍼블릭 IP가 할당 되지않았다면 외부에서 IP주소를 이용해 접근할 수가 없게 된다.
이제 private subnet도 만들자
private subnet의 가용 영역은 ap-northeast-2c로 설정했고
IPv4 CIDR 블록은 10.0.0.0/16에 속해있는 10.0.1.0/24로 설정했다.
private subnet도 잘 생성이 됐다.
라우팅 테이블, 네트워크 ACL, 보안 그룹은 VPC가 생성될 때 자동으로 생성된다.
서브넷, 인터넷 게이트웨이, 엔드포인트, NAT 게이트 웨이는 자동으로 생성되지 않는다.
이젠 인터넷 게이트웨이를 만들어보자
새 인터넷 게이트웨이가 생성됐다.
Name에 "-"로 표시된 인터넷 게이트웨이는 default VPC와 연결되어있고
새로 만든 것은 아직 VPC와 Detached 상태이다. 따라서 작업에 VPC에 연결을 선택하자
그리고 우리가 만든 VPC를 선택해서 연결하자
연결이 잘 됐다.
처음에 만드려던 VPC의 구조이다.
라우팅 테이블은 VPC를 생성하면 기본적으로 하나가 생성이 된다.
현재 인터넷 게이트웨이를 만들었지만 각 서브넷들과의 연결은 안된 상태이다.
이는 라우팅 테이블을 통해 연결시켜야 한다.
또한 우리는 각 라우팅 테이블이 public subnet과 private subnet에 따로 따로 연결되길 원한다.
따라서 라우팅 테이블을 하나 더 만들자
새로 만드는 라우팅 테이블은 public으로 사용하고 기본적으로 생성된 건 private으로 사용할 것이다.
public용 라우팅 테이블이 생성됐다. 이제 서브넷과 연결 편집을 해보자
이 라우팅 테이블은 public용 이므로 public subnet과의 연결을 선택한다.
연결이 잘 됐다.
private 라우팅 테이블도 private 서브넷과 명시적으로 연결을 시켜줘도 되지만 기본적으로 나머지 서브넷과 연결이 자동으로 된다.
public subnet은 인터넷과도 연결이 돼야한다. 따라서 라우팅 편집을 해주자
0.0.0.0/0은 모든 IP를 뜻한다.
라우팅은 순서대로 설정이 되므로 10.0.0.0/16에 해당하는 트래픽은 local로 보내고
나머지 트래픽은 인터넷 게이트웨이로 보낸다.
대상은 TodoApp-igw와 연결했다.
설정이 잘 됐다.
private 라우팅 테이블은 10.0.0.0/16에 대한 트래픽만 받고 나머지는 차단해야 하기에 따로 설정을 수정할 것이 없다.