Project/Cloud

DevSecOps CI/CD 파이프라인 프로젝트 - ECR + ECS + ALB + Jenkins 설정 (6)

luckyd8 2026. 2. 2. 15:36

 

ECR, ECS, ALB 구축 및 Jenkins 설정에 대해 정리하였다. 

 

AWS 아키텍처

 

본 프로젝트에서는 애플리케이션 컨테이너 이미지에 대한 보안 검사를 수행한 후, 검사를 통과한 이미지가 ECR에 업로드한다.

이후 ECS 배포에 필요한 배포용 아티팩트를 ZIP 파일로 패키징하여 S3 버킷에 저장한다. 

이후 배포 단계에서 Application Load Balancer(ALB)는 헬스 체크를 통해 신규 테스트의 상태를 검증하고, 정상 상태가 확인되면 트래픽을 기존 태스크에서 신규 태스크로 점진적으로 전환하여 무중단 배포를 지원한다.

 

ECR(Elastic Container Registry) 이란?

ECR(Elastic Container Registry)는 컨테이너 이미지 저장소 서비스이다. 

Docker / OCI 이미지 저장을 맡으며, IAM 기반 권한 관리가 가능해 관리가 수월하다.

크게 두 가지 레포지토리가 존재하는데, 가장 많이 사용하는 프라이빗 레포지토리는 IAM 권한이 있는 사용자 및 서비스만 접근 가능하다. 반대로 퍼블릭 레포지토리는 Docker Hub 처럼 누구나 접근 가능하며 오픈소스 이미지 배포 등에 사용된다. 

 

ECR(Elastic Container Registry) 생성

 

Jenkins가 Docker 이미지를 ECR에 push하고, S3 리소스를 조회할 수 있도록 아래 IAM 정책을 연결한다.

AmazonEC2ContainerRegistryFullAccess, AmazonS3ReadOnlyAccess

 

 

 

Access Key 및 Secret Key 생성

 

 

Jenkins 설정

Jenkins가 외부 서비스(AWS, Docker 등)에 접근하여 CI/CD 작업을 수행할 수 있도록 다음과 같이 설정한다.

 

1. 플러그인 설정

Jenkins에 필요한 기능(Docker, AWS)을 플러그인으로 추가하기 위해 설정한다.

 

Manage > Plugins > Available plugins

 

 

2. 자격 증명 설정

Jenkins가 외부 시스템에 인증하여 접근할 수 있도록 자격 증명을 등록하기 위해 설정한다

 

대시보드 > 설정(manage) > Credentials

 

3. Jenkins 서버에 AWS CLI 설치

Jenkins 컨테이너 내부에서 AWS CLI를 사용하기 위해 루트 권한으로 접속하여 기본 패키지 및 AWS CLI v2를 설치한다.

 

1. Jenkins 컨테이너에 루트 권한으로 접속

docker exec -u 0 -it jenkins bash

 

2. 컨테이너 기본 패키지 설치

 

AWS CLI 설치에 필요한 패키지를 설치한다.

apt-get update
apt-get install -y unzip curl groff less

 

3. AWS CLI v2 설치

 

Jenkins에서 AWS(ECR, S3)와 연동하기 위해 AWS CLI v2를 설치한다.

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
./aws/install

 

 

ECS(Elastic Container Service) 이란?

ECS는 완전관리형 컨테이너 오케스트레이션 서비스이다.

컨테이너의 배포, 관리, 확장, 네트워킹을 자동화해주는 서비스로, Docker 컨테이너 기반으로 쉽게 배포 및 운영 가능하다. 

ECS 실행 방식에는 EC2 방식과 Fargate 방식이 존재하는데, EC2는 직접 EC2를 띄워 컨테이너 단위에서 실행하는 것이고, Fargate는 서버 관리 없이 서버리스 실행 환경에서 컨테이너를 배포하는 방식이다. 본 프로젝트에서는 Fargate 방식을 차용했다.

 

ECS Cluster 생성

 

Task 정의

 

 

 

대상그룹(Target Group) 생성 

 

ALB(Application Load Balancer) 이란?

ALB는 HTTP/HTTPS 트래픽을 처리하는 애플리케이션 계층(Layer 7) 로드 밸런서이다. 

리스너(Listener)를 통해 URL 경로, 호스트, HTTP 헤더, 메소드 등의 조건을 기반으로 요청을 분기하며, 정의된 규칙에 따라 애플리케이션 트래픽을 여러 가용 영역에 분산한다. 

헬스 체크를 통해 비정상적인 대상을 자동으로 제외하고, TLS 종료를 지원함으로써 HTTP 트래픽 처리 효율을 높여 서비스의 가용성과 안정성을 확보한다.

ALB(Application Load Balancer) 생성