프라이빗 서브넷에서 ECR 에 접속할 때 필요한 VPC 엔드포인트 설정 (feat: terraform)

sang yun Lee·2023년 6월 23일
1

Devops 실습

목록 보기
17/20
post-thumbnail

개요


나는 ECS 를 운용하고 있었고 ECR 에 있는 도커 이미지task 이미지 로서 사용하고 있었다.
기존에는 ECSfargate퍼블릭 서브넷 에 놓고 있었지만 보안이 신경쓰여 프라이빗 서브넷 으로 옮겼다. 그랬더니 아래와 같이 에러가 발생했다.

ResourceInitializationError: unable to pull secrets or registry auth: execution resource retrieval failed: unable to retrieve ecr registry auth: service call has been retried 3 time(s): RequestError: send request failed caused by: Post "https://api.ecr.ap-northeast-2.amazonaws.com/": dial tcp 54.180.184.245:443: i/o timeout. Please check your task network configuration.

에러 원인은 fargate 가 ECR 로부터 도커이미지를 가져오지 못했기 때문이었다. fargate 는 프라이빗 서브넷에 있고 프라이빗 서브넷은 기본적으로 VPC 외의 서비스와는 연결이 불가능하기 때문이다. 그렇다면 private subnet 에 있는 ECSfargate 가 도커 이미지를 받기 위해 ECR 에 접근하려면 어떻게 해야될까?

private subnet 은 기본적으로는 외부와의 연결이 차단되어 있기에 fargateECR 에서 도커 이미지 를 받아올 수 없다.
그럼에도 fargateECR 에서 도커 이미지 를 받을 수 있는 방법이 있었는데 그 중에 VPC 엔드포인트 설정 을 공유하려 한다.

실습


🔸 VPC 엔드포인트 설정

ECR 에 접근하기 위해서는 아래와 같은 4가지 엔드포인트가 필요하다.

  • com.amazonaws.ap-northeast-2.s3
  • com.amazonaws.ap-northeast-2.ecr.api
  • com.amazonaws.ap-northeast-2.ecr.dkr
  • com.amazonaws.ap-northeast-2.logs

4가지 엔드포인트 를 설정하는 방법을 실습할 것이다.

🔹 STEP 1: 첫번째 엔드포인트 설정 (ecr.api)

  1. VPC 에 들어가 엔드포엔트 생성을 누른다.
  2. 사용하려는 서비스 (ecr.api) 를 선택한다.
  3. 사용할 VPC 를 지정한다.
  4. fargate 가 존재하는 private subnet 을 선택한다.
  5. 사용할 보안 그룹 을 지정한다.

    매우 중요 !!
    나는 테스트를 위해서 보안 그룹을 모든 IP 에 대해서 모든 트래픽 허용하는 보안 그룹으로 지정하였다. 설정이 잘못되면 정상적으로 동작하지 않는다.
    테스트가 목적이라면 모든 IP 에 대해서 모든 트래픽 으로 설정하고 진행하자.

  6. VPC 엔드포인트 를 생성한다.

🔹 STEP 2: 두번째 엔드포인트 설정 (ecr.dkr)

ecr.apiecr.dkr 로 바꿔주고 🔹 STEP 1 과 동일하게 진행한다.

🔹 STEP 3: 세번째 엔드포인트 설정 (logs)

ecr.apilogs 로 바꿔주고 🔹 STEP 1 과 동일하게 진행한다.

엔드포인트 유형이 2가지가 나타날텐데, interface 유형으로 지정한다.

🔹 STEP 4: 네번째 엔드포인트 설정 (s3)

  1. VPC 에 들어가 엔드포엔트 생성을 누른다.
  2. 서비스로 s3, 유형: Gateway 를 지정한다.
  3. 사용할 VPC 및 생성할 fargateprivate subnet 에 연결되어있는 routing table 을 모두 지정한다.
  4. VPC 엔드포엔트 를 생성한다.

비용


월 1000G 의 트래픽을 사용한다고 가정했을 때에 약 5만원 (47.96 달러) 의 비용이 발생한다.
계산 비용 링크 참조
계산방식은, 하나의 VPC 엔드포인트당 월 약 만원이 발생하고 트래픽당 추가 비용이 발생하는 방식이다.

NAT Gateway 를 사용할 시에는 약 2배의 비용이 더 나온다.

과금이 걱정된다면 NAT Instance 를 고려해봐도 좋을 듯하다.

테라폼


테라폼으로 VPC 엔드포인트를 만들어보았습니다.
- VPC 엔드포인트 테라폼 소스

참고자료


참고자료:

0개의 댓글