프로필사진

Go, Vantage point

가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.


Github | https://github.com/overnew/

Blog | https://everenew.tistory.com/





티스토리 뷰

반응형

 

 

기존에는 VPC Interface Endpoint 중에 ecr.api만 연결해 주면, ECR private link로 연결되는 알았다.

하지만 테스트 결과, NAT Gateway를 VPC에서 빼주면 Fargate가 ECR에서 컨테이너 이미지를 가져오지 못하는 것을 확인했다.

 

결론을 이야기 하면, ECR 연결을 위해서는 아래의 3가지 Endpoint가 필요하다.

 

Interface endpoint: ecr.dkr, ecr.api

Gateway endpoint: S3

 

dkr까진 이해가되도 S3는 굉장히 뜬금없지 않은가?

그 이유를 지금부터 확인해보자.

 

 

 

 

Docker hub는 S3 저장소를 사용

아래의 Cloud flare(네트워크 전문 회사로 주로 CDN 서비스에서 확인해 본 적 있을 것이다.)의 케이스 스터디 글을 확인해 보자.

https://www.cloudflare.com/case-studies/docker/

 

Cloudflare & Docker | Case Study

Cloudflare boosts Docker’s cache hit ratio to more than 99%, eliminating two-thirds of S3 egress and cutting costs

www.cloudflare.com

 

 

Cloudflare는 Docker의 캐시 적중률을 99% 이상으로 높여서, S3의 송신 발생을 2/3까지 제거했다고 한다.

S3는 무엇이든 저장하는 저장소로는 훌륭할지 몰라도, CDN 서비스가 아니기 때문에 데이터 송신을 제공하면 상당한 비용이 발생한다. Cloud front라도 송신 비용은 S3와 동일하다. 

따라서 CDN을 AWS의 Cloud front가 아닌 Cloud flare의 CDN 서버를 통해 제공하여, 훨씬 큰 비용 절감을 가져간 듯하다. 

 

 

 

ECR도 S3 저장소를 사용

AWS의 컨테이너 서비스를 사용할 때, Docker hub에서 이미지를 가져올 수도 있지만, public 망으로 요청과 수신이 이뤄지므로 보안적으로는 좋지 않다.

따라서 AWS의 ECR을 사용하게 되는데, 결국 ECR도 크고 많은 컨테이너 이미지들을 독자적인 저장소가 아닌 AWS S3로 저장하게 설계되었다. 따라서 Amazon S3 서버 측 암호화를 사용해 자동으로 암호화도 진행된다.

 

ECR은 이미지 매니페스트까지만 제공해 주기 때문에 결국 S3에서 실제 이미지 Layer를 받아와야 한다.

단일 VPC라면 S3 Gateway endpoint를 사용하는 것이 좋고, 다중 VPC/계정이라면 Interface endpoint를 배치하여 접근 세팅을 세분화할 수 있다.

 

 

실제로 S3가 연결되지 않으면, 아래처럼 연결 오류가 발생한다.

 

 

 

 

결론

 

결론적으로  ECR 연결을 위해서는 아래의 3가지 Endpoint가 필요하다.

 

Interface endpoint: ecr.dkr, ecr.api

Gateway endpoint: S3

(본인은 단일 VPC이므로 Gateway 타입을 선택했다.)

 

 

ecr.api의 경우 레지스트리 생성, 이미지 목록 조회와 같은 기능을 위해 사용하고,

ecr.dkr은 Docker 클라이언트와 통신하여 이미지를 푸시(push)하고 풀(pull)하는 데 사용된다.

 

이렇게 하나의 서비스에서도 종류별로 다르게 제공되다 보니, 비용적으로는 ECR 연결이 부담될 수 있을 것 같다.

 

 

 

 

 

참조글

https://iwanhae.tistory.com/3

 

원리부터 파악하는 컨테이너 이미지 PULL (w/ curl)

시작 전 잡담 - 1 본래 프로젝트 라이프사이클 관점에서의 개발 방법론에 대한 글을 쓰고 싶었지만 현재 진행하고 있는 강의에 대한 홍보글 겸 겸사겸사 적어본다. (많은 관심 부탁드립니다~~) 이

iwanhae.tistory.com

 

https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/privatelink-interface-endpoints.html

 

Amazon S3용 AWS PrivateLink - Amazon Simple Storage Service

액세스되는 리소스의 AWS 계정 ID를 지정하려면 IAM 정책에서 aws:ResourceAccount 또는 s3:ResourceAccount 키를 사용하면 됩니다. 그러나 일부 AWS 서비스는 AWS 관리형 버킷에 대한 액세스에 의존합니다. 따

docs.aws.amazon.com

 

반응형
댓글
반응형
인기글
Total
Today
Yesterday
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함