카테고리 없음

Charmander - CICD 파이프라인 구축

먹보 개발자 2025. 3. 13. 19:19

1. EC2 인스턴스 생성

2. EC2 인스턴스 접속

3. Docker, Docker Compose 설치

# 패키지 업데이트
sudo yum update -y

# Docker 설치
sudo yum install -y docker

# Docker 데몬 시작
sudo service docker start

# (선택) 부팅 시 Docker 자동 시작
sudo systemctl enable docker

# ec2-user(또는 원하는 사용자)를 docker 그룹에 추가
sudo usermod -aG docker ec2-user
# (권장) 최신 버전 설치를 원한다면, GitHub 릴리스 페이지에서 버전 번호를 바꿔 사용하세요.
# https://github.com/docker/compose/releases

# 1) 바이너리 다운로드
sudo curl -L "https://github.com/docker/compose/releases/download/2.33.1/docker-compose-$(uname -s)-$(uname -m)" \
     -o /usr/local/bin/docker-compose

# 2) 실행 권한 부여
sudo chmod +x /usr/local/bin/docker-compose

# 3) (옵션) 편의를 위해 심볼릭 링크 생성
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

 

4. ECR 생성

1. Mutable

동일한 태그를 여러 번 덮어쓸 수 있는 모드.

예: latest 태그로 이미지를 한 번 푸시한 뒤, 다시 빌드된 이미지를 동일한 latest 태그로 푸시하면 이전 이미지는 덮어쓰임.

CI/CD 파이프라인에서 항상 latest 태그로 이미지를 올리는 식으로 손쉽게 사용할 수 있지만, 이미 존재하는 태그가 다른 이미지로 바뀔 수 있기 때문에, “태그가 가리키는 이미지가 시간에 따라 변할 수 있다”는 점에 유의해야 함.

 

2. Immutable

한 번 푸시된 태그를 이후에 덮어쓸 수 없는 모드.

예: latest 태그로 이미지를 푸시한 후, 동일 태그(latest)로 새 이미지를 푸시하려고 하면 오류가 발생하여 덮어쓸 수 없음.

운영/프로덕션 환경에서 특정 태그가 한 번 정해지면 절대로 바뀌지 않게 함으로써, “태그 = 특정 이미지”라는 불변성을 보장할 수 있다.

하지만 매번 새 버전의 이미지를 푸시할 때마다 새 태그를 발행해야 하므로, 태그 관리가 다소 번거로울 수 있다.


1. AES-256 (기본 S3 서버 사이드 암호화, SSE-S3)

 AWS가 기본적으로 제공하는 서버 사이드 암호화 방식.

 별도의 KMS(Key Management Service) 키를 사용하지 않고, AWS가 자동으로 관리하는 키로 데이터를 암호.

 설정이 간단하고 추가 비용 없이 사용 가능.

 하지만 고객이 직접 키를 관리하거나, 세부적인 키 정책을 설정하기는 어려움.

 

2. AWS KMS (SSE-KMS)

 AWS Key Management Service(KMS)에서 제공하는 고객 관리형 키(CMK) 또는 AWS 관리형 키를 사용해 암호화함.

 세부적인 키 제어, 키 정책, 접근 권한 등을 설정할 수 있으며, 키 회전 등을 통한 보안 강화를 할 수 있다.

 다만 KMS 사용에 따른 소정의 비용이 발생할 수 있으며, KMS 권한/정책을 잘 설정해야 함.