CI-CD 14

CD를 위한 Jenkins, Argo CD 연계

이전 포스트에서 Jenkins, GitHub, Docker Hub를 파이프라인으로 구성하여, 컨테이너 이미지 빌드를 자동화하였다. 이번 시간엔 Argo CD를 연계하여 배포까지 자동화된 CI/CD Pipeline을 만들어 볼 차례다. 우선 기존 구성에서 추가되는 내용은 다음과 같다. 1. Jenkins에서 Image 빌드 및 Push 후, 배포 전용 Repository에 새로운 이미지 태그 반영 2. Argo CD는 해당 Repository로부터 Auto Sync 수행 3. AutoSync를 통해 업데이트된 Manifest를 사용하여 리소스 재생성 참고로 GitHub와 Argo CD의 연결은 일반적으로 GitHub Webhook 방식을 사용하나, 현재 테스트 환경은 외부에서 Argo CD에 접근할 수 없..

CI-CD 2021.02.21

CI를 위한 Jenkins, GitHub, Docker Hub 연계

본격적인 CI 구성을 위해 Jenkins와 GitHub 그리고 Docker Hub를 연계하는 방법에 대해 설명한다. k8s 위에 Jenkins를 배포하는 방법에 대해선 이전 포스트를 참고한다. 실습 환경에서 CI는 다음과 같은 일련의 순서로 이루어진다고 가정하자. 1. 개발자가 자신이 작업한 코드를 GitHub Repository에 반영 2. Jenkins는 해당 Repository를 Checkout하여 Docker Image로 빌드 3. 빌드 완료 후 Docker Hub로 Image를 Push 실제 CI 과정에선 코드 리뷰나 테스트 등의 과정이 포함되어야 하나 이번 실습에선 생략하도록 한다. 우선은 Jenkihns가 GitHub에서 Code를 가져올 수 있도록 Credential을 추가하자. GitHu..

CI-CD 2021.02.20

Kubernetes 위에 Jenkins 설치하기

이번엔 Kubernetes 위에 Jenkins를 설치해보자. 가장 먼저 아래와 같이 Manifest 파일을 작성한다. [jenkins-master.yaml] apiVersion: apps/v1 kind: StatefulSet metadata: name: jenkins spec: serviceName: jenkins replicas: 1 selector: matchLabels: app: jenkins template: metadata: labels: app: jenkins spec: serviceAccountName: jenkins containers: - name: jenkins image: jenkins/jenkins:lts ports: - name: http-port containerPort: 808..

CI-CD 2021.02.19

ArgoCD: Kubernetes에 GitOps 적용하기

What is GitOps? 개발자의 코드가 실제 서비스로 반영되기까지 많은 과정을 거쳐야 한다. Repository에 Push 후 CI를 통해 Docker Image로 빌드되고, Container Registry(ex: DockerHub)로 업로드하면 CI 과정은 끝나며 이후부턴 Kubernetes에 어떻게 배포할지 고민이 필요하다. 처음엔 Manifest 파일을 작성하고 이를 kubectl 명령어를 통해 서비스를 배포하다가, 서비스마다 일일이 Manifest 파일을 작성하기 번거롭기 때문에 Helm, kustomize 등을 활용하고, 이후 자동화를 위해 Jenkins나 Ansible 등의 툴이나 API 호출같은 방식을 택하게 된다. 문제는 사람마다 선호하는 배포 방식이 제각각이고 여러 소스(원천)로부..

CI-CD 2021.02.17