본문 바로가기
VCS/CICD

젠킨스 AWS와 통합

by Jinger 2025. 1. 3.

서론

   Amazon Web Services(AWS)는 클라우드 서비스 플랫폼으로, 컴퓨팅, 저장소, 네트워크, 데이터베이스 등의 서비스를 제공한다. 개발자와 기업은 AWS를 통해 인프라를 유연하게 관리하고 확장할 수 있다. 이번 글에서  AWS와 젠킨스를 통합하여 자동화된 배포 환경을 구축하는 방법을 살펴보자.


 

AWS의 EC2 인스턴스 이해

   EC2(Elastic Compute Cloud)는 AWS의 가상 서버 서비스로, 사용자는 필요에 따라 인스턴스를 생성하고 관리할 수 있다. 다양한 운영 체제를 선택할 수 있으며, 사용량에 따라 요금이 부과된다.

  • AMI(Amazon Machine Image): EC2 인스턴스의 시작 템플릿
  • 인스턴스 유형: CPU, 메모리, 스토리지 등의 하드웨어 리소스를 지정
  • 보안 그룹: 인스턴스의 네트워크 접근 제어
  • 키 페어(Key Pair): SSH를 통해 인스턴스에 접속하기 위한 인증 방법

AWS의 EC2 인스턴스 생성

  1. AWS Management Console에 로그인.
  2. EC2 Dashboard에서 Launch Instance를 클릭.
  3. AMI, 인스턴스 유형, 보안 그룹 등을 선택하여 설정.
  4. 키 페어를 생성하고 다운로드하여 SSH 접속에 사용.
  5. 인스턴스를 시작하고 상태를 확인.

배포용 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 생성 기능을 사용한다:.

  1. EC2 Dashboard에서 복사할 인스턴스를 선택.
  2. Actions > Create Image를 클릭.
  3. 새 AMI가 생성되면 이를 사용해 새로운 인스턴스를 시작할 수 있다.

AWS IAM 역할 생성 및 관리

  1. IAM Console에 접속하여 새로운 역할(Role)을 생성한다.
  2. 역할 유형으로 EC2를 선택한다.
  3. 필요한 정책(예: S3 접근 권한)을 역할에 추가한다.
  4. 생성된 역할을 EC2 인스턴스에 연결한다.

젠킨스에서 AWS 자격 증명 설정

  1. 젠킨스 대시보드에서 Manage Jenkins > Manage Credentials로 이동.
  2. Global credentials에 AWS 액세스 키와 시크릿 키를 추가한다.
  3. 젠킨스 파이프라인에서 AWS CLI 명령어를 사용할 수 있도록 설정한다.

젠킨스와 S3 연동

  1. 젠킨스 작업에 Post-build ActionsUpload artifacts to S3 Bucket을 추가한다.
  2. S3 버킷 이름과 경로를 설정한다.
  3. 빌드 결과물이 S3 버킷에 업로드되는지 확인한다.

AWS CodeDeploy와 통합

  1. AWS 콘솔에서 CodeDeploy 서비스로 이동.
  2. 애플리케이션과 배포 그룹을 생성한다.
  3. 젠킨스 작업에 AWS CodeDeploy Plugin을 설치한다.
  4. 빌드 후 작업(Post-build Action)으로 Deploy an application to AWS CodeDeploy를 추가한다.
  5. CodeDeploy 설정을 입력하고 배포를 실행한다.

AWS CLI를 사용한 EC2 관리

   젠킨스 작업에서 AWS CLI를 사용하여 EC2 인스턴스를 관리할 수 있다. 예를 들어, EC2 인스턴스를 시작하거나 중지하는 스크립트는 다음과 같다.

echo "Starting EC2 instance..."
aws ec2 start-instances --instance-ids i-0abcd1234efgh5678

 

젠킨스 파이프라인에서 EC2에 SSH로 연결하여 배포

  1. 젠킨스 파이프라인에서 SSH Agent Plugin을 설치한다.
  2. 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 인스턴스의 보안 그룹 구성

  1. AWS 콘솔에서 EC2 Dashboard로 이동.
  2. 인스턴스의 보안 그룹을 선택하고 Edit inbound rules를 클릭.
  3. 필요한 포트를 추가하고 설정을 저장한다.
  4. 보안 그룹 구성을 확인하고 EC2 인스턴스의 네트워크 접근이 가능한지 테스트한다.

  이렇게 구성하면 AWS와 젠킨스를 통합하여 자동화된 배포 환경을 효과적으로 구축할 수 있다.

반응형

댓글