EKS CI/CD 구성 프로젝트_4

duckiee·2023년 3월 29일
0
post-thumbnail

이번 포스트는 저번에 구성한 ArgoCD/Argo Rollout 환경에서 CI/CD 파이프라인을 구성하고 동작시키는 작업을 작성한다.

구성할 CI/CD 파이프라인은 아래와 같으며, Jenkins와 ArgoCD를 통해 ECR에 컨테이너 이미지를 배포하고, 해당 이미지로 어플리케이션 pod 및 container를 실행할 계획이다.

1. 어플리케이션 생성

이번에 포스트하는 작업을 진행하기 위해 ECR 레포지를 private 타입으로 먼저 생성했다.
그 후 어플리케이션을 도커 이미지로 빌드하고 ECR로 먼저 배포한다.
포스트에서 사용한 어플리케이션 및 코드는 아래 깃허브에서 확인 가능하다.
GitHub 코드 레포지토리

해당 과정에서 필요한 명령어는 아래와 같다.

#로컬PC에서AWS ECR 로그인
$ aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin <AWS ECR Repository URL>

#Dockerfile 경로에서 컨테이너 이미지 빌드
$ docker build ‒build-arg COLOR=<Color명> ‒t <AWS ECR Repository URL>:<Tag명> .

#컨테이너 Push 수행 및 확인
$ docker push <AWS ECR Repository URL>:<Tag명>
  • ECR 배포 완료


ArgoCD에 접속하여 GitHub(어플리케이션 코드 레포지토리)를 연결하여 어플리케이션을 생성할 수 있다.

이번 포스트에서 사용할 ArgoCD 어플리케이션은 아래와 같이 생성했다.
[ArgoCD콘솔 > applications > New App > Create]

위와 같이 GitHub 코드 레포지토리의 코드를 사용할 경우 bubblepool 어플리케이션의 helm 차트를 사용하게 되며
values.yaml 파일에 설정된 내용에 따라 어플리케이션을 구성하게 된다.

ArgoCD 콘솔에서 어플리케이션을 생성한 후에 아래와 같이 어플리케이션이 생성됐으며 접속 또한 가능하다.

2. Jenkins 사용하여 업데이트된 어플리케이션 배포

기존 blue 버전에서 green 버전 어플리케이션을 빌드 및 배포하며
기존에 구성된 Jenkins 서비스에 파이프라인 스크립트를 연동하여 CI/CD 파이프라인을 완성한다.

우선 jenkins 콘솔에서 새로운 파이프라인을 생성 후 GitHub와 연동이 필요하다.
이번 포스트에서는 아래와 같이 GitHub와 연동하여 사용했다.

  • GitHub project : Jenkins와 연결할 GitHub 레포지토리 주소

  • Definition : Jenkins 파이프라인 스크립트를 불러올 경로, GitHub에 배포한 Jenkinsfile을 사용하므로 Pipeline script from SCM 선택

  • SCM : 소스 코드 저장소를 얻을 위치를 지정

  • Repository URL : GitHub의 URL 또는 경로를 지정합니다

  • Credentials : GitHub와 연결한 인증키

  • Script Path : GitHub에서 인식하는 Jenkins 파일 경로

사용한 Jenkinsfile 내용은 아래 링크에서도 확인 가능하다.
Jenkinsfile

해당 Jenkinsfile에서 사용되는 변수들이 있으며, 아래와 같이 자신의 환경에 맞게 설정 가능하다.

def awsECRURL="<AWS ECR Repository URL>"
def awsKey="<jenkins와 연동한 AWS credential>"
def awsRegion="<연결할 ECR 레포지토리의 리전>"
def branch="<어플리케이션이 위치한 branch명>"
def commitMsg="<GitHub 커밋 메시지>"
def directoryPath="<Jenkinsfile, 어플리케이션 코드 상위 디렉터리>"
def githubEmail="<Github Email명>"
def githubKey="jenkins와 연동한 GitHub credential>"
def githubSSHURL="git@github.com:<Github Profile명>/<Github Repository명>.git"
def imageTag="<배포할 컨테이너 이미지 태그명>"

Jenkinsfile에서 작성한 파이프라인은 아래와 같은 순서로 진행된다.
1. Checkout : Git SCM - Jenkins 연결
2. Docker Build : jenkins 서비스에서 어플리케이션을 도커 이미지로 빌드
3. ECR Push : 빌드된 이미지를 지정된 ECR로 배포
4. Deploy : Git 환경에서 변경된 환경을 ArgoCD에 SSH를 사용하여 전달하여 변경된 어플리케이션을 배포

Jenkinsfile 수정이 완료되면 Jenkins 콘솔에서 빌드를 실행하고 CI/CD 파이프라인이 동작하게 된다.

  • 빌드 완료 (Jenkins 확인)

  • ArgoCD 이미지 태그 확인

  • bubblepool 어플리케이션 접속

profile
DevOps로 진화하기

0개의 댓글