올리브영 테크블로그 포스팅 ECR - "저도 배포요정입니다 ✋🏻"
CI/CD

ECR - "저도 배포요정입니다 ✋🏻"

Teamcity로 Docker Container Image를 ECR로 Push 해보자

2022.06.15

📖 Table of Contents

해당 포스팅은 아래의 시리즈로 구성되어 있습니다. 시리즈대로 포스팅을 읽어주세요 💚

  1. Teamcity 를 사용한 Build Process 구성 방법
  2. Teamcity로 Docker Container Image를 ECR로 Push 하는 방법
  3. ECS Fargate 에서 Datadog을 연결하는 방법

안녕하세요! 올디브에서 Back-end 업무를 맡은 코코리 입니다.

이전 포스팅에서는 Teamcity 로 Build Process 구성을 해보았는데요. 오늘은 Teamcity에서 Docker Container Image를 ECR로 Push 하는 방법을 설명해보도록 하겠습니다!

ECR 은 무엇인가요?

AWS ECR

Amazon ECR 은 이미지를 가용성과 확장성이 뛰어난 아키텍처에 호스팅하여 사용자는 애플리케이션을 위한 컨테이너를 안정적으로 배포할 수 있습니다. 또한, Amazon ECR을 사용함으로써 이미지 리포지토리를 직접 구축하고 관리할 필요가 없습니다. AWS IAM을 사용하여 컨테이너 이미지에 액세스할 수 있는 사용자 및 리소스에 대한 권한을 제어하고 모니터링할 수 있고, 이미지 취약점 스캔 기능도 활성화할 수 있습니다. 또한, 리포지토리를 프라이빗 혹은 퍼블릭으로 설정할 수 있습니다. (공식 홈페이지에서 발췌)

쉽게 설명하자면 Amazon ECR이란 개발자가 Docker 컨테이너 이미지를 손쉽게 저장, 관리 및 배포할 수 있게 해주는 완전관리형 Docker 컨테이너 레지스트리입니다.

올디브에서 ECR을 통해 배포를 하게 된 이유는 아래와 같습니다.

AWS code deploy / code pipeline 과 연계

AAWS code deploy / code pipeline과 연계해서 배포 자동화가 가능합니다!
AWS 안에서 모든 걸 다 하게 된다니 관리 포인트가 줄어들어서 조금 더 CI/CD가 가능합니다!

저장 용량

ECR 을 사용하게 된다면 저장용량 걱정을 하지 않아도 됩니다! 쓰는 만큼 비용을 지불하면 되는데요! 인하우스 레파지토리의 경우에는 용량을 다 쓰게 되면 증설을 해야 하는 번거로움이 있습니다.

그렇다면 쓰는 만큼 비용을 낸다면 너무 많이 내는 거 아니야? 라고 생각하실 수 있는 데요! AWS에서 공개된 자료에 따르면 생각보다 합리적인 가격으로 이용할 수 있습니다! 많이 써도 한 달에 10불 미만입니다!


AWS ECR 비용

앗! AWS 신발보다 싸다

위의 이유들로 AWS ECR을 사용하기로 했습니다! 그렇다면 이제 본격적으로 ECR로 배포를 해볼까요?

Teamcity에서 Docker Container Image를 ECR로 Push 해보자!

0. 준비사항

Teamcity 에서 AWS ECR에 docker image를 pull/push 하기 위해 Account ID / AWS accessKey / secretKey / ECR address 가 필요합니다!
이전 포스팅을 보고 차근차근 잘 따라오셨다면 위의 사항은 준비가 되셨을 겁니다 😃
(혹시나 깜빡하셨더라도 괜찮아요! Teamcity - "이제부터 배포요정은 접니다 ✋🏻"를 먼저 보고 와주세요!)

1. ECR Repository 생성

AWS ECR Repository 생성

먼저 AWS Console로 접근해 ECR 메뉴에서 Repository를 하나 생성합니다. 해당 포스팅에서는 Datadog 이미지를 보관하는 Registry를 하나 만들었습니다.

생성됐으면 Registry의 EndPoint를 복사 후 기억한 후 이전 포스팅에서 구축해 둔 Teamcity에 관리자 계정으로 로그인 합니다.

예시 : 40*************.dkr.ecr.ap-northeast-2.amazonaws.com/datadog-agent


ECR 연결은 크게 두 가지 프로세스를 거쳐야 가능합니다. 프로세스는 다음과 같습니다.

  1. Project Level에서 Connection 구성
  2. Build Pipeline Level에서 Feature 구성

2. ECR 연결

연결을 원하는 프로젝트 상세 메뉴로 진입 후 다음과 같은 순서로 진입하고 아래 두 개의 방법을 차근차근 따라 해봅시다!

Project Level 에서 Connection 구성

AWS ECR Repository Connection 1

1. Project > Edit Project Settings > Connection 메뉴로 진입합니다.
2. Connection 메뉴에서 Add Connections 버튼을 클릭합니다.

AWS ECR Repository Connection 2

3. Drop Down 메뉴에서 Amazon ECR 버튼을 클릭하시면 계정정보를 입력하는 창이 새로 노출됩니다. 여기에 준비해 둔 AWS Account 정보를 입력해 줍니다.

AWS ECR Repository Connection 3

4. 입력이 완료되면 "Test Connection" 버튼을 눌러 연결이 잘 되는지 확인합니다. Connection 확인이 끝나면 "Save" 버튼을 눌러 저장합니다.

Build Pipeline Level에서 Feature 구성

Build Pipeline Level Feature 1

1. ECR 연동을 원하는 Build Pipeline 을 선택 후 "Build Features" 클릭 후 Feature 등록화면에서 "Docker Support" 를 선택 후 "Registry Connection" 버튼을 눌러줍니다.

Build Pipeline Level Feature 1

2. Repository에서 "Amazon ECR" 을 선택 후 "Add" 버튼을 클릭합니다. 이후 아래 화면이 나오면 완료입니다.

Build Pipeline Level Feature 1

3. 이후 Build 가 실행되면 Docker Image를 Push/Pull 할 수 있는 준비가 완료 되었습니다. 위와 같이 Build Pipeline 에서 Docker 관련 Step을 정의 해 주시면 됩니다.

그래서 빌드 하면 어떻게 될까요?

Teamcity - "이제부터 배포요정은 접니다 ✋🏻" 에서 잘 설정된 Teamcity 의 빌드가 끝나면 ECR 에 Push 가 되고 이후 자동으로 Trigger 가 걸려 배포가 됩니다!

올리브영 Teamcity AWS ECR 배포

이제 번거로운 빌드 > 업로드 >배포를 단 한번의 클릭으로 가능하게 되었습니다! 🎉

마무리

오늘은 Teamcity에서 Docker Container Image를 ECR로 Push 하여 배포까지 해보았는데요! 배포하고 나서는 모니터링은 필수겠죠?
올디브에서는 모니터링을 Datadog 으로 하고 있는 데요! 다음 포스팅에서는 ECS 와 Datadog 연결하는 방법과 어떻게 모니터링을 하는지 설명해 드리도록 하겠습니다! 그렇다면 우리 다음에 만나요!💚💚

올리브영 데이터독 모니터링

다음은 접니다 멍멍
TeamcityECRDevOps
올리브영 테크 블로그 작성 ECR - "저도 배포요정입니다 ✋🏻"
🤬
코코리 |
Back-end Engineer
복사해서 붙여넣기 잘하고 싶습니다.