티스토리 뷰
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 과정에서 실패를 한다면 에러메시지를 주의깊게 봐주시고
대부분이 권한 문제일것이므로 역할에 맞는 권한을 연결해주시면 됩니다
'AWS' 카테고리의 다른 글
데이터베이스도 사용한 만큼만 요금 지불해볼까? aurora serverless (0) | 2022.02.11 |
---|---|
aws aurora database 로 손쉬운 replication 클러스터 구축 (0) | 2022.02.10 |
aws ecs fargate 사용하기 (0) | 2022.02.07 |
docker 파일 하나로 단일 컨테이너 elastic beanstalk에 배포하기 (0) | 2022.02.05 |
nodejs elastic beanstalk 에 codepipeline 배포하기 (0) | 2022.02.04 |
- Total
- Today
- Yesterday
- 공모전
- 게임
- AWS
- 구글
- 아이디어
- JavaScript
- 자바스크립트
- 안드로이드
- 스마트폰
- 어플리케이션
- 소프트웨어
- 대학생
- CSS
- 앱
- 경진대회
- 모바일
- 아이폰
- 벤처
- 트위터
- php
- Apple
- 앱스토어
- android
- 애플
- 웹표준
- 창업
- iPhone
- 네이버
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |