[AWS] ECS Fargate Outbound 고정 IP 설정

Ahnjh·2023년 6월 28일
3

Devops

목록 보기
1/1

서론

만약 운영중인 인스턴스가 써드파티 어플리케이션을 사용하는데 사용하는 어플의 방화벽에서 화이트리스트 ip등록이 필요할때 인스턴스의 아웃바운드 ip 는 고정이여야 한다.
필자는 해당 이슈가 생겼을때 관련 자료가 많이 없었어서 고통을 받았는데 같은 이슈로 고통받는분들한테 조금이라도 도움이 되고자 해당 포스트를 작성한다.

VPC 생성

VPC 콘솔에서 VPC 생성을 클릭 한 후 이름 태그, IPv4 항목을 규칙에 맞춰 채워준다.

서브넷 생성

그 후 위에서 생성한 VPC로, 서브넷을 생성 해 준다

Private 1

서브넷 이름 my-subnet-private-1
가용영역 ap-northeast-2a
IPv4 CIDR 블록 172.35.1.0/24

Private 2

서브넷 이름 my-subnet-private-2
가용영역 ap-northeast-2b
IPv4 CIDR 블록 172.35.2.0/24

Public 1

서브넷 이름 my-subnet-public-1
가용영역 ap-northeast-2a
IPv4 CIDR 블록 172.35.3.0/24

Public 2

서브넷 이름 my-subnet-public-2
가용영역 ap-northeast-2b
IPv4 CIDR 블록 172.35.4.0/24

위와같이 총 4개의 서브넷을 생성 해 준다. private, public 서브넷을 각각 2개씩 설정해 주는 이유는 뒤에 로드밸런서와 네트워크 게이트웨이, 인터넷 게이트웨이 설정때 나온다.
위 설정에서 주의할점은 가용영역이 겹치면 안된다는 것이다.

라우팅 테이블 생성

라우팅 테이블은 아래와같이 크게 private, public 두개를 만들어 준다.

Public

이름 my-route-public
VPC my-vpc (맨 처음에 생성한 VPC)

Private

이름 my-route-private
VPC my-vpc (맨 처음에 생성한 VPC)

인터넷 게이트웨이 생성

외부와 통신하는 인터넷 게이트웨이도 하나 만들어 준다.

이름 태그 my-internet-gateway

그 후, 생성한 인터넷 게이트웨이를 클릭해 작업 버튼을 눌러 위에서 생성한 VPC에 연결을 해준다.

NAT 게이트웨이 생성

private subnet과 public subnet을 연결시켜주는 NAT Gateway도 생성 해 주자.

이름 my-nat-gateway
서브넷 my-subnet-public-2
연결 유형 퍼블릭
탄력적 IP 할당 ID (탄력적 IP 할당 버튼을 클릭하면 자동으로 할당해준다.)

라우팅 테이블 할당

다시 초반으로 돌아와 만들어줬던 4개의 서브넷에서 차례대로 라우팅 테이블을 할당 해줘야 한다.
서브넷 콘솔 페이지에서 my-subnet-private-1를 클릭 해 보면 아래 탭에 라우팅 테이블이 있다. 클릭해서 라우팅 테이블 연결 편집 버튼을 눌러보자.


그럼 위와같은 화면이 나올텐데 라우팅 테이블 ID항목을 위에서 생성한 my-route-private으로 변경 후 저장해주자.

위와같은 설정을 public 서브넷은 public 라우팅 테이블로, private 서브넷은 private 라우팅 테이블로 총 4번을 변경해 주면 된다.

NAT 게이트웨이와 인터넷 게이트웨이 연결

다시 라우팅 테이블 메뉴로 돌아와서 위에서 생성한 my-route-public의 라우팅 탭에 라우팅 편집 버튼을 클릭해보자

그럼 위와같은 화면이 나올텐데 private 라우팅탭은 NAT 게이트웨이 ID를, public 라우팅 탭은 인터넷 게이트웨이 ID 를 추가해주면 된다.

그럼 이제 VPC 설정은 끝이 났다. 해당 설정을 다이어그램으로 표시해보면 아래와 같다.

ECS

기존에 있던 ECS fargate 유형의 인스턴스들은 VPC와 서브넷을 수정을 못해주기때문에 로드밸런서와, 클러스터부터 새로 만들어야한다. ECS 생성 방법은 적지 않을것이라 주의할점만 몇개 말해보자면,
1. VPC를 위에서 만든 VPC로 생성해야 한다.
2. ECS에서는 서브넷 설정할땐 public 서브넷이 아니고 private 서브넷으로 할당해 줘야한다.
3. 로드밸런서는 public 서브넷을 할당해 준다.
4. ECS Service와 Task 를 생성할땐 퍼블릿 IP 토글을 Off 시켜줘야 한다. (필자는 이부분에서 상당히 애를 먹었다)

profile
Clean Code & Clean Architecture

2개의 댓글

comment-user-thumbnail
2024년 11월 14일

글 잘 읽었습니다!
혹시 로드밸런서는 ALB와 NLB 중 어떤 것을 사용하셨나요?

1개의 답글