본문 바로가기
서버구축 (WEB,DB)

ArgoCD 활용 GitOps 시스템 K8S CI/CD Pipeline 구축

by 날으는물고기 2024. 1. 8.

ArgoCD 활용 GitOps 시스템 K8S CI/CD Pipeline 구축

GitOps (ArgoCD) - Pi Kubernetes Cluster

ArgoCD는 Kubernetes 클러스터에서 애플리케이션을 배포 및 관리하기 위한 오픈 소스 도구 중 하나입니다. ArgoCD는 GitOps라는 개념을 기반으로 하여 클러스터 구성을 Git 리포지토리에 정의하고, Git 리포지토리에 있는 정의를 기반으로 애플리케이션을 배포하고 업데이트하는 데 사용됩니다.

주요 특징

  1. GitOps 방식의 배포: ArgoCD는 애플리케이션 및 클러스터 설정을 Git 리포지토리에 정의합니다. 이를 통해 변경 사항의 추적, 버전 관리, 롤백 등을 쉽게 할 수 있습니다.
  2. 자동 동기화: Git 리포지토리에 저장된 애플리케이션의 정의를 기반으로 ArgoCD는 클러스터의 상태를 지속적으로 감지하고, 정의와 클러스터 간의 불일치가 감지되면 자동으로 동기화를 수행합니다.
  3. 멀티-클러스터 지원: ArgoCD는 여러 Kubernetes 클러스터 간에 애플리케이션을 배포할 수 있습니다. 이를 통해 다중 클러스터 환경에서 애플리케이션을 일관되게 관리할 수 있습니다.
  4. 사용자 인터페이스 및 API: ArgoCD는 직관적인 웹 기반 사용자 인터페이스와 RESTful API를 제공하여 사용자가 애플리케이션 및 클러스터 상태를 모니터링하고 관리할 수 있습니다.

ArgoCD 사용 시나리오

  1. 애플리케이션 배포: Git 리포지토리에 정의된 애플리케이션의 버전을 클러스터에 배포합니다.
  2. GitOps 워크플로우: 애플리케이션 및 클러스터 설정의 변경은 Git 리포지토리에 푸시되어 ArgoCD가 자동으로 클러스터를 업데이트합니다.
  3. 롤백 및 히스토리 관리: 이전 버전으로 롤백하거나 애플리케이션 배포 히스토리를 추적하여 문제 해결에 도움을 줍니다.
  4. 안전한 배포: ArgoCD는 롤링 업데이트와 같은 안전한 배포 전략을 지원하여 애플리케이션 업데이트 중에 가용성을 유지할 수 있습니다.

ArgoCD는 CI/CD 파이프라인과 통합하여 효율적인 개발 및 배포 워크플로우를 구축하는 데 도움이 되며, Kubernetes 기반의 환경에서 애플리케이션 배포 및 관리를 단순화하는 강력한 도구입니다.

 

간단한 예제로 "Guestbook" 애플리케이션을 ArgoCD를 사용하여 배포하는 단계를 설명하겠습니다. Guestbook은 Redis를 백엔드로 사용하는 간단한 웹 애플리케이션입니다.

단계 1: ArgoCD 설치

ArgoCD를 설치합니다. Kubernetes 클러스터에 Helm을 사용하여 설치할 수 있습니다.

# ArgoCD 설치를 위한 Helm 레포지토리 추가
helm repo add argo-cd https://argoproj.github.io/argo-helm

# Helm 레포지토리 업데이트
helm repo update

# ArgoCD 설치
kubectl create namespace argocd
helm install argocd argo-cd/argo-cd -n argocd

단계 2: ArgoCD 웹 인터페이스 접속

ArgoCD가 설치된 후 웹 인터페이스에 접속합니다. 서비스의 IP나 도메인을 찾아 접속합니다.

# ArgoCD 서비스의 IP 가져오기
kubectl get svc argocd-server -n argocd

웹 브라우저에서 http://<ArgoCD 서비스의 IP>로 접속하고, 기본 로그인 정보를 사용하여 로그인합니다.

단계 3: 애플리케이션 정의 작성

Git 리포지토리에 Guestbook 애플리케이션의 Kubernetes 정의 파일을 저장합니다.

예를 들어, guestbook-app.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: guestbook
spec:
  replicas: 3
  selector:
    matchLabels:
      app: guestbook
  template:
    metadata:
      labels:
        app: guestbook
    spec:
      containers:
      - name: guestbook
        image: gcr.io/google-samples/gb-frontend:v4
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: guestbook
spec:
  ports:
  - port: 80
  selector:
    app: guestbook

단계 4: ArgoCD에 애플리케이션 추가

ArgoCD 웹 인터페이스에서 "New App"을 클릭하고 다음과 같이 입력합니다.

  • Application Name: Guestbook
  • Project: Default
  • Repository URL: Guestbook 애플리케이션의 Git 리포지토리 URL
  • Revision: 브랜치 또는 커밋의 리비전
  • Path: Guestbook 애플리케이션 정의 파일의 경로 (예: guestbook-app.yaml)

단계 5: 애플리케이션 배포

ArgoCD는 애플리케이션을 클러스터로 배포합니다. ArgoCD 대시보드에서 "Sync" 버튼을 클릭하여 Guestbook 애플리케이션을 클러스터에 배포합니다.

단계 6: 변경 사항 관리

Guestbook 애플리케이션의 변경 사항이 발생하면 Git 리포지토리에 새로운 정의 파일을 푸시하고 ArgoCD를 통해 클러스터에 변경 사항을 동기화할 수 있습니다. 변경 사항을 롤백하거나 히스토리를 추적할 수 있습니다.

 

이러한 단계를 통해 ArgoCD를 사용하여 Guestbook 애플리케이션을 배포하고 관리할 수 있습니다. 이는 간단한 예제이며, 실제 프로덕션 환경에서는 더 복잡한 설정과 보안 고려 사항이 필요할 수 있습니다.

728x90

댓글