반응형
Jen'_'
Jen's Space
Email
GitHub
전체 방문자
오늘
어제
  • 분류 전체보기 (98)
    • Ansible (4)
      • 우아한앤서블 (4)
    • Cloud (19)
      • AWS (17)
      • GCP (2)
    • DevOps (40)
      • Docker (6)
      • Kubernetes (26)
      • CICD (6)
      • Terraform (2)
    • Language (13)
      • Python (12)
      • Node.js (1)
    • Linux (10)
    • etc. (7)
    • 개인기록 (1)
    • AEWS (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 피드백 환영합니다 :)

인기 글

태그

  • INGRESS
  • karpenter
  • ansible
  • terraform
  • gitops
  • 쿠버네티스
  • k8s
  • ubuntu
  • EKS
  • 자격증
  • ALB
  • Kubernetes
  • CICD
  • jenkins
  • argocd
  • AWS
  • 우아하게앤서블
  • vagrant
  • autoscaling
  • Docker

최근 댓글

Jen'_'
DevOps/CICD

Github, Jenkins, argoCD를 사용하여 CI/CD 구축

Github, Jenkins, argoCD를 사용하여 CI/CD 구축
DevOps/CICD

Github, Jenkins, argoCD를 사용하여 CI/CD 구축

2022. 1. 24. 20:46
반응형

프로젝트의 발단은 위 아키텍처를 보고 시작했습니다.

개발자가 도커 이미지를 변경하여 Github에 push 하면 Jenkins에서 도커 이미지를 build 하고, 빌드 번호를 이미지 태그에 붙여 ECR에 push 합니다. 그리고 Github의 deployment.yaml 파일에 이미지 태그의 정보를 업데이트합니다.

argoCD에서 EKS Cluster에 Pod를 배포합니다.

 

 

처음으로 제대로 된 CICD를 구축해 볼 생각에 즐거웠습니다.

하지만 과정은 그렇게 즐겁지만은 않았죠... 젠킨스 파일 삽질을 꽤 했습니다...

시작해보겠습니다.

 

 

작업 순서

1. EKS, ECR 생성

2. Github에 코드 올리기

3. Jenkins 설치 및 설정

4. Jenkinsfile

5. argoCD 설치 

6. 확인

 


 

 

1. EKS, ECR 생성

EKS Cluser
ECR Repo

이미지를 미리 하나 올려놨습니다.

 

2. Github 에 코드 올리기

eks 폴더 - deployment.yaml, service.yaml 

jenkins 폴더 - Jenkinsfile

 

 

3. Jenkins 설치 및 설정

 

Jenkins 설치 명령어 

$ docker run -itd --name jenkins -p 8080:8080 -p 50000:50000 \
-v /docker/jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock \
-e TZ=Asia/Seoul -u root jenkins/jenkins:latest

 

Jenkins Container 내부에 Docker 설치 (docker in docker)

# Jenkins container 접속
$ docker exec -it jenkins bash
# docker 설치 
$ curl -fsSL get.docker.com -o get-docker.sh
$ sh get-docker.sh
# 확인
$ docker ps

 

플러그인 설치

docker-build-step / Docker plugin / Docker Pipeline / AWS ECR 

위의 목록들을 설치해줍니다.

 

Credential 생성

github을 private으로 생성하였기 때문에 접근하기 위한 자격증명이 필요합니다.

설정 방법은 아래 포스팅에 남겼습니다.

2022.01.03 - [Container/CICD] - Jenkins Pipeline Github Private Token 사용하여 연동

 

Jenkins에서 AWS ECR에 접근하기 위한 자격증명이 필요합니다.

위에 처럼 ECR Full access 정책이 있는 IAM Key를 넣어줍니다. (코드에 넣어줄 예정입니다)

https://plugins.jenkins.io/amazon-ecr/

 

 

Pipeline 생성

Definition: SCM 

SCM: Git

Repository URL: 본인 Github url 

Credentials: Github account을 위해 작성한 자격증명

 

Branch Specifier: 브랜치명

Script Path: Jenkinsfile 위치

 

 

4. Jenkinsfile

deploy 부분입니다.

전 stage에서 Dockerfile을 build 하고, 도커이미지:빌드번호 를 AWS ECR에 push 합니다.

그리고 github에 있는 deployment.yaml 파일에 있는 이미지 태그를 업데이트하기 위해 sed 명령어를 사용합니다.

저는 변수에 이전 빌드번호를 넣고 최신 번호로 업데이트하는 것으로 코드를 짰습니다.

https://support.cloudbees.com/hc/en-us/articles/360027646491-Pipeline-Equivalent-to-Git-Publisher?page=21

 

#!/usr/bin/env 언어 
env는 환경 변수에서 지정한 언어의 위치를 찾아 실행됩니다.
다양한 환경에서 실행되는 스크립트 하면 env를 사용하는 것이 좋습니다.

 

 

5. argoCD 설치 

 

EKS Cluster에 argoCD 설치하는 방법입니다. 

argoCD 구성, 애플리케이션 배포에서 EKS 연결하는 것까지 하면 됩니다.

https://www.eksworkshop.com/intermediate/290_argocd/install/

 

Manage > Repositories에서 github 설정을 합니다.

 

그 후, New APP 클릭하여 설정하겠습니다.

manifest 파일이 업데이트되면 자동으로 클러스터에 배포되도록 sync를 automatic으로 설정하겠습니다.

 

Repository URL: Manage에서 설정한 github url을 선택합니다.

Path: github에서 manifest 파일이 위치한 경로를 적어주세요.

 

서비스 배포를 위한 App이 생성되었습니다.

 

github에 있는 manifest 파일에 의해 클러스터에 pod가 자동으로 배포되었습니다.

 

 

6. 확인

 

Build Now 클릭 (웹훅 설정은 패스)

 

빌드 성공.

이전 버전인 5를 최신 버전인 6으로 업데이트하여 deployment.yaml 파일을 업데이트합니다.

 

 

자동으로 새로운 pod가 배포되었습니다.

 

해당 nginx pod image를 확인해 보면 버전 6가 제대로 배포된 것이 확인됩니다!

 

감사합니다 :)

 

 

 

 

참고

https://cwal.tistory.com/22

https://daddyprogrammer.org/post/14102/argocd-kubernetes-cluster-deploy/

 

 

반응형
저작자표시 (새창열림)

'DevOps > CICD' 카테고리의 다른 글

GitOps, ArgoCD Overview  (0) 2023.10.11
Argocd를 사용하여 helm chart 배포 및 주의사항  (1) 2022.04.25
argoCD App of Apps 패턴을 사용한 서비스 배포  (7) 2022.03.11
Jenkins Pipeline Github Private Token 사용하여 연동  (0) 2022.01.03
Jenkins, Codedeploy 사용하여 CICD 환경 구축  (0) 2021.10.10
  • 1. EKS, ECR 생성
  • 2. Github 에 코드 올리기
  • 3. Jenkins 설치 및 설정
  • 4. Jenkinsfile
  • 5. argoCD 설치 
  • 6. 확인
'DevOps/CICD' 카테고리의 다른 글
  • Argocd를 사용하여 helm chart 배포 및 주의사항
  • argoCD App of Apps 패턴을 사용한 서비스 배포
  • Jenkins Pipeline Github Private Token 사용하여 연동
  • Jenkins, Codedeploy 사용하여 CICD 환경 구축
Jen'_'
Jen'_'
DevOps 엔지니어 Jen의 기술 블로그 / 이메일: jenakim47@gmail.com

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.