[AWS] Amazon ECR과 EKS를 이용한 자동 빌드 파이프라인 구축하기

이애옹·2024년 9월 10일
0
post-custom-banner

일단 배포는 추후 정리하고,
빌드까지의 단계만 정리하기 !!

📝 Amazon ECR 이란?

일단 Amazon ECR에 대해 정리하자면

Amazon ECR (Elastic Container Registry)는 AWS에서 제공하는 Docker 컨테이너 이미지 저장소 서비스입니다. Amazon ECR은 사용자가 Docker 컨테이너 이미지를 안전하게 저장, 관리 및 배포할 수 있도록 지원하며, AWS의 다른 서비스와 통합되어 원활한 컨테이너 기반 애플리케이션 개발과 배포를 가능하게 합니다.


CodeBuild에서 빌드한 Docker 이미지는 이 레포지토리에 푸시되며, 이후 이 이미지를 ECS, EKS 등으로 배포할 수 있습니다.

📝 자동빌드를 위한 사전 작업

이제 AWS ECR을 이용해서 Docker 이미지를 푸시해야 하는데,
이 작업을 진행하기 앞서 자동빌드/배포를 위해 프로젝트에 파일 몇개를 추가 해 줬다.

- buildspec.yml

AWS CodeBulid에서 빌드 프로세서를 정의하는 설정 파일로,
CodeBulid는 buildspec.yml파일을 기반으로 빌드 작업을 자동 수행한다.

위 파일에는 각 빌드 단계와 환경변수 등을 정의 해 줘야 한다.

여기서, 나는 Docker 이미지가 빌드된 후 ECR로 이미지를 푸시 해 줘야 하기때문에
REPOSITORY_URL을 ECR 프라이빗 레파지토리의 URL로 설정 해 주었다.

- Dockerfile

애플리케이션을 Docker 컨테이너로 패키징하는 방법을 정의하는 파일로,
CodeBulid에서 Docker 이미지를 빌드할 때 이 파일을 참조하여 컨테이너 이미지를 생성한다.

- ecosystem.config.js

PM2 설정 파일로, Node.js 애플리케이션을 효율적으로 관리하기 위해 사용한다.

이제 위 세개의 파일을 추가한 프로젝트를
CodeCommit Repository에 올려두면 된다 ~

📝 ECR 프라이빗 Repository 생성하기

이제 본격적으로 자동 빌드를 진행하기 위해서,
프라이빗 Repository를 생성 해 줬다.

접속해서 생성 버튼을 클릭 해 준다.

여기서는 간단하게 Repository 이름만 설정 해 주면 된담.

생성 완료!
여기 있는 URL을 복사해서 buildspec.yml 파일의 REPOSITORY_URL 로 정의 해 준 뒤에
한번 Push 해 줘야 한당

이제 CodePipeline까지만 설정하면 자동 빌드가 가능하다.

AWS CodePipeline은 소스 코드 변경 사항이 발생했을 때 자동으로 빌드를 수행하고, 컨테이너 이미지를 배포하는 CI/CD 파이프라인입니다.

설명은 이렇게 되어 있는데, 일단 배포는 생략하고 빌드까지만 진행 해 줄거다

📝 파이프라인 생성하기


AWS CodePipeline에 접속 후 파이프라인 생성을 눌러준다.

파이프라인 이름을 지정 해 준다.

파이프라인 실행 모드도 설정 해 줄 수 있는데,

대체 : 새 실행 시작 시 현재 실행중인 파이프라인이 중단되고 새로운 실행으로 대체, 신속한 반영에 적합
대기 : 현재 실행 중인 파이프라인 완료까지 대기 한 후 새로운 실행 시작, 데이터 무결성 보장 시 적합
병렬 : 새 실행 시작 시 기존 실행과 상관 없이 동시에 여러 파이프라인 실행

이렇게 정의되어 있다. 나는 대기로 선택 해 줬다.

그리고 서비스 역할은 IAM 권한이라고 생각 해 주면 된담
이건 이미 생성된게 있으니 그걸로 연결

이제 소스 스테이지를 추가 해 줘야한다.

일단 소스 공급자는, 파이프라인이 코드 변경 사항을 감지하고 가져오는 곳이다.
나는 현재 소스가 CodeCommit에 저장되어 있기 때문에 AWS CodeCommit을 소스공급자로 설정해줬다.

나머지 설정은 위 사진과 같이 선언 해 주고 다음 버튼 클릭 해주면 된담

이제 빌드 스테이지를 추가 해 줘야 하는데,
빌드스테이지에서는 소스 코드를 빌드하고, Docker 이미지를 생성하여 Amazon ECR로 푸시하는 작업을 수행해야 한다.

일반적으로 AWS CodeBuild를 사용한다고 한다

AWS CodeBuild를 이용해서 소스코드를 빌드하고,
Docker 이미지를 만들어 ECR에 푸시하는 빌드 작업을 자동화 할 수 있다

나는 CodeBuild 프로젝트가 없기 때문에 프로젝트를 생성 해 줘야 한다.

빌드 프로젝트 이름을 선언 해 주고, 환경을 세팅 해 주면 된다.

환경이미지는 관리형 이미지와 사용자 지정 이미지 중 선택 할 수 있는데
관리형 이미지의 경우 AWS에서 제공하는 사전 정의된 빌드 환경을 사용하는 옵션으로
자동 업데이트 및 유지관리가 되기 때문에 간편하다고 한다

사용자 지정 이미지는 커스터마이즈된 환경을 사용하고 싶을때 유리!

나머지 설정은 위 사진과 같이 세팅 해 줬다

그리고 역할 ARN 또한 기존에 만들어둔게 있기 때문에 그대로 사용하고,
CodeBuild의 경우 buildspec.yml 파일에 기반해 빌드 과정을 정의하기 때문에
buildspec 파일 사용을 선택 해 줬다.

이름은 그대로 buildspec.yml을 쓸거라서 이건 따로 건드리지 않았다.

이제 저장 해 주면 된다.

그럼 이렇게 빌드 프로젝트까지 추가 완료~
다음 버튼을 눌러준다.

자동 배포는 추후 연결할거라서 배포 스테이지는 건너뛰어주었다.

검토까지 하고 확인을 눌러주면 끝

이제 이렇게 파이프라인이 생성 된 걸 확인 할 수 있다
이제 Build 단계까지 정상적으로 적용된것만 확인 해 주면 끝

정상 적용된걸 볼 수 있다~

실패가 떨어지면 세부 정보 보기를 클릭해서 에러 원인을 파악 해 주면 된다.
아마 REPOSITORY_URL이 잘못 되었거나 권한 추가가 필요한 경우가 대부분일 것 같당

이제 이후 수정 된 내용은, CodePipeline을 통해 자동 빌드 처리가 될것이다

그리고 ECR에서 이미지까지 등록된걸 확인 해 주면 끝

profile
안녕하세요
post-custom-banner

0개의 댓글