티스토리 뷰

AWS

ecs fargate codepipeline 연결하기

나를찾는아이 2022. 2. 8. 11:15
728x90
반응형

ecs fargate 도 ecr을 사용하여 코드 레파지토리에 푸시를 하면 fargate에 배포가 되도록 codepipeline을 만들어봅시다

 

 

 

먼저 이 buildspec.yml을 프로젝트의 루트 경로에 놓습니다

 

 

코드를 살펴보시면 

 

pre_build 단계에서

 

ecr에 로그인을 하고

 

REPOSITORY_URI, COMMIT_HASH, IMAGE_TAG 필요한 변수들을 만듭니다 

 

$AWS_DEFAULT_REGION 변수는 사전에 미리 정의된 변수로 빌드가 실행되는 기본 리전값이 정의되어있습니다

 

 

그리고 build 단계에서는

 

latest 태그로 도커 이미지를 빌드하고,

 

빌드된 이미지를 커밋해시번호의 태그를 달아 하나더 만듭니다

 

latest 태그에는 항상 최신 버전의 소스코드가 들어있는 도커이미지가 있을것이고

 

각 커밋해시이름을 갖는 도커이미지도 존재하게 될것입니다

 

 

post_build 단계에서는

 

latest 태그와 커밋해시이름의 태그를 가진 도커이미지를 모두 푸시합니다

 

그리고 imagedefinitions.json 이라는 파일을 최종적으로 만들게 됩니다

 

 

이 json 파일에는 name과 imageUri 라는 필드가 존재하는데요

 

name에는 업데이트 하려는 "내가 만든 컨테이너명"을 적으셔야 합니다

 

 

우리가 ecs를 세팅할때 처음 컨테이너 이름을 정했는데 여기서 사용한 이름을 말합니다

 

그리고 imageUri에는 ecr에 푸시한 이미지의 경로가 담겨있습니다

 

 

 

이 artifacts 파일을 통해서 

 

ecs는 지정한 컨테이너이름을 가진 컨테이너를 새로운 주소의 이미지를 컨테이너화한것으로 교체하게 됩니다

 

 

 

코드 파이프라인 설정은 이전의 포스팅에서 설명한 과정과 대부분이 비슷합니다

 

codebuild가 없다면 codebuild를 먼저 생성하고 codepipeline을 생성하면 됩니다

 

 

Step1 파이프라인 설정 선택

Step2 소스 스테이지 추가

Step3 빌드 스테이지 추가

 

이 세단계는 모두 설정이 동일합니다

 

다만 Step4의 배포 스테이지에서 배포공급자로 Amazon ECS를 선택하고

 

나머지 클러스터이름과 서비스 이름은 내가 만든것으로 자동완성됩니다

 

 

이렇게 되면 완성입니다

 

 

총 과정을 다시 되짚어보면

 

원본 소스 레파지토리에 새로운 코드가 푸시되면

 

buildspec.yml에 기술된대로 도커이미지를 빌드하고, ecr에 푸시합니다

 

그리고 imagedefinitions.json 파일에 적혀있는대로

 

동일한 컨테이너명을 가진 컨테이너를 새로운 이미지로 빌드한 컨테이너로 교체하게 되는것이죠

 

 

실제로도 ecs에서 컨테이너를 교체할때는 새로운 작업정의를 만들게 되는데요

 

작업정의 내에 컨테이너에 대한 정의가 포함되어있고,

 

새로운 컨테이너 이미지주소를 가리키고 있는 새로운 작업정의가 만들어지면서 배포가 완료되는 방식입니다

 

 

 

혹시나 source - build - deploy 과정에서 실패를 한다면 에러메시지를 주의깊게 봐주시고

 

대부분이 권한 문제일것이므로 역할에 맞는 권한을 연결해주시면 됩니다

 

 

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함