7주차 - EKS CI/CD - Jenkins(PIPELINE)

728x90

 pipeline이란

 

소스코드  통합 / 빌드 / TEST / 배포 프로세스를 자동화 프로세스를 의미한다.

 

 jenkis pipeline

 

  • 용어
    • 파이프라인 : 전체 빌드 프로세스를 정의하는 코드.
    • 노드 node : 파이프라인을 실행하는 시스템.
    • 스테이지 stage : 특정 단계에서 수행되는 작업들의 정의.
    • 스텝 step : 파이프라인의 특정 단계에서 수행되는 단일 작업을 의미.
  • 구성 형태
    • pipeline script: 일반적인 방식이며 jenkins 파이프라인을 생성하여 shell script를 직접 생성하여 빌드
    • pipeline script from SCM: 가장 많이 사용하는 방식으로, 사전 작성한 jenkinsfile을 형상관리시스템에 저장 / 빌드 시작 시 파이프라인 프로젝트에서 호출
    • Blue Ocean: UI기반하여 시작적으로 파이프라인을 구성하면, Jenkinsfile 자동 생성되어 실행

 

  • 구문
    • 선언형: 쉽게 작성 가능, 최근 문법, step 필수
    • 스크립트형: 커스텀 작업에 용이하나 난이도가 높음

 

 jenkis pipeline - 실습

 

  • 신규 item 생성 - pipeline

  • Pipeline 설정 → 간단한 실습으로 pipeline script 선택
    • 두개 stage로 Hello world출력 및 java 버전 확인 / Deployed successfully 출력

 

  • Pipeline 설정 → 간단한 실습으로 pipeline script 선택
    • 두개 stage로 environment에서 환경 변수 설정 / stage에서 환경 변수 설정한 내용 출력

 

  • Pipeline 설정 → 간단한 실습으로 pipeline script 선택
    • 파라미터 설정 후 빌드

 

  • Pipeline 설정 → 간단한 실습으로 pipeline script 선택
    • post(빌드 후 조치)
      • always: 항상 실행
      • changed: 현재 빌드의 상태가 이번 빌드의 상태와 달라졌다면 실행
      • success: 현재 빌드가 성공했다면 실행
      • failure: 현재 빌드가 실패했다면 실행
      • unstable: 현재 빌드의 상태가 불안하다면 실행

 

 

 

 jenkins 를 사용하여 kubernetes resource 배포

# 사전 준비
# jenkins 사용자에서 아래 작업 진행
whoami
mkdir ~/.kube

# root 계정에서 아래 복사 실행
cp ~/.kube/config /var/lib/jenkins/.kube/config
chown jenkins:jenkins /var/lib/jenkins/.kube/config

# jenkins 사용자에서 aws eks 사용(sts 호출 등)을 위한 자격증명 설정
aws configure
AWS Access Key ID [None]: AKIA5ILF2###
AWS Secret Access Key [None]: ###
Default region name [None]: ap-northeast-2

# jenkins 사용자에서 kubectl 명령어 사용 확인
kubectl get pods -A

 

 파이프라인으로 Deployment /Service 배포

 

  • container build stage: github에 push된 Dockerfile를 사용하여 Image 빌드
    • 생성된 image를 도커 허브에 push
  • Deployment Deploy: github에 push된 deplyment.yaml을 이용하여 deployment 배포

 

 

 

 

728x90