서론
Amazon Web Services(AWS)는 클라우드 서비스 플랫폼으로, 컴퓨팅, 저장소, 네트워크, 데이터베이스 등의 서비스를 제공한다. 개발자와 기업은 AWS를 통해 인프라를 유연하게 관리하고 확장할 수 있다. 이번 글에서 AWS와 젠킨스를 통합하여 자동화된 배포 환경을 구축하는 방법을 살펴보자.
AWS의 EC2 인스턴스 이해
EC2(Elastic Compute Cloud)는 AWS의 가상 서버 서비스로, 사용자는 필요에 따라 인스턴스를 생성하고 관리할 수 있다. 다양한 운영 체제를 선택할 수 있으며, 사용량에 따라 요금이 부과된다.
- AMI(Amazon Machine Image): EC2 인스턴스의 시작 템플릿
- 인스턴스 유형: CPU, 메모리, 스토리지 등의 하드웨어 리소스를 지정
- 보안 그룹: 인스턴스의 네트워크 접근 제어
- 키 페어(Key Pair): SSH를 통해 인스턴스에 접속하기 위한 인증 방법
AWS의 EC2 인스턴스 생성
- AWS Management Console에 로그인.
- EC2 Dashboard에서 Launch Instance를 클릭.
- AMI, 인스턴스 유형, 보안 그룹 등을 선택하여 설정.
- 키 페어를 생성하고 다운로드하여 SSH 접속에 사용.
- 인스턴스를 시작하고 상태를 확인.
배포용 EC2 인스턴스 구성
1.SSH 접속: 키 페어를 사용하여 EC2 인스턴스에 접속한다.
2.패키지 업데이트: OS 패키지를 최신 상태로 업데이트한다.
sudo yum update -y
3.Java 설치: 자바 기반 애플리케이션을 배포하기 위해 JDK를 설치한다.
sudo yum install java-1.8.0-openjdk -y
4.웹 서버 설치: Apache, Nginx 등의 웹 서버를 설치하고 설정한다.
5.보안 그룹 구성: 필요한 포트(예: 22, 80, 443)를 보안 그룹에 추가한다.
EC2 인스턴스 복사
EC2 인스턴스를 복사하려면 AMI 생성 기능을 사용한다:.
- EC2 Dashboard에서 복사할 인스턴스를 선택.
- Actions > Create Image를 클릭.
- 새 AMI가 생성되면 이를 사용해 새로운 인스턴스를 시작할 수 있다.
AWS IAM 역할 생성 및 관리
- IAM Console에 접속하여 새로운 역할(Role)을 생성한다.
- 역할 유형으로 EC2를 선택한다.
- 필요한 정책(예: S3 접근 권한)을 역할에 추가한다.
- 생성된 역할을 EC2 인스턴스에 연결한다.
젠킨스에서 AWS 자격 증명 설정
- 젠킨스 대시보드에서 Manage Jenkins > Manage Credentials로 이동.
- Global credentials에 AWS 액세스 키와 시크릿 키를 추가한다.
- 젠킨스 파이프라인에서 AWS CLI 명령어를 사용할 수 있도록 설정한다.
젠킨스와 S3 연동
- 젠킨스 작업에 Post-build Actions로 Upload artifacts to S3 Bucket을 추가한다.
- S3 버킷 이름과 경로를 설정한다.
- 빌드 결과물이 S3 버킷에 업로드되는지 확인한다.
AWS CodeDeploy와 통합
- AWS 콘솔에서 CodeDeploy 서비스로 이동.
- 애플리케이션과 배포 그룹을 생성한다.
- 젠킨스 작업에 AWS CodeDeploy Plugin을 설치한다.
- 빌드 후 작업(Post-build Action)으로 Deploy an application to AWS CodeDeploy를 추가한다.
- CodeDeploy 설정을 입력하고 배포를 실행한다.
AWS CLI를 사용한 EC2 관리
젠킨스 작업에서 AWS CLI를 사용하여 EC2 인스턴스를 관리할 수 있다. 예를 들어, EC2 인스턴스를 시작하거나 중지하는 스크립트는 다음과 같다.
echo "Starting EC2 instance..."
aws ec2 start-instances --instance-ids i-0abcd1234efgh5678
젠킨스 파이프라인에서 EC2에 SSH로 연결하여 배포
- 젠킨스 파이프라인에서 SSH Agent Plugin을 설치한다.
- Jenkinsfile에 다음과 같은 코드를 추가한다.
pipeline {
agent any
stages {
stage('Deploy') {
steps {
sshagent(['my-ssh-credentials-id']) {
sh 'ssh -o StrictHostKeyChecking=no ec2-user@your-ec2-ip-address "./deploy.sh"'
}
}
}
}
}
EC2 인스턴스의 보안 그룹 구성
- AWS 콘솔에서 EC2 Dashboard로 이동.
- 인스턴스의 보안 그룹을 선택하고 Edit inbound rules를 클릭.
- 필요한 포트를 추가하고 설정을 저장한다.
- 보안 그룹 구성을 확인하고 EC2 인스턴스의 네트워크 접근이 가능한지 테스트한다.
이렇게 구성하면 AWS와 젠킨스를 통합하여 자동화된 배포 환경을 효과적으로 구축할 수 있다.
반응형
'VCS > CICD' 카테고리의 다른 글
젠킨스 CLI와 원격 엑세스 (1) | 2025.01.03 |
---|---|
젠킨스 분산 빌드 (0) | 2025.01.02 |
젠킨스 코드형 파이프라인 이해 (0) | 2025.01.01 |
젠킨스 파이프라인 이해 (0) | 2024.12.31 |
젠킨스, 메이븐과 넥서스 통합 및 자바 API 릴리스용 프리스타일 작업 생성 (0) | 2024.12.30 |
댓글