GitOps: Flux와 Argo CD 비교

GitOps는 배포 구성을 위한 진실의 원천으로 Git을 사용하는 소프트웨어 개발 및 운영 방법론입니다. 애플리케이션이나 인프라의 원하는 상태를 Git 저장소에 유지하고 Git 기반 워크플로를 사용하여 변경 사항을 관리 및 배포하는 것을 포함합니다. 기업이 자신의 Kubernetes 애플리케이션을 관리하기 위해 GitOps를 구현하는 데 도움이 되는 두 가지 인기 있는 오픈 소스 도구는 Flux와 Argo CD입니다. 이 기사에서는 이러한 도구와 그 장단점, 설정 방법에 대해 자세히 살펴보겠습니다. DZone의 관련 자습서인 Jenkins와 Kubernetes로 CI/CD 파이프라인을 자동화하는 방법을 읽어보세요.

Flux와 Argo CD의 일반적인 사용 사례

Flux

  • 지속적 인도: Flux는 변경 사항이 Git 저장소에 푸시되는 즉시 자동으로 배포되도록 배포 파이프라인을 자동화하는 데 사용할 수 있습니다.
  • 구성 관리: Flux를 사용하면 애플리케이션의 구성을 코드로 저장 및 관리할 수 있으므로 버전 제어 및 변경 사항 추적이 더 쉬워집니다.
  • 불변적인 인프라: Flux는 인프라에 대한 변경이 Git 저장소를 통해서만 이루어지고 클러스터에 대한 수동 개입을 통해서는 이루어지지 않도록 하는 불변적인 인프라 접근 방식을 강제합니다.
  • 블루-그린 배포: Flux는 블루-그린 배포를 지원하여 애플리케이션의 새 버전이 기존 버전과 병렬로 배포되고 트래픽이 점진적으로 새 버전으로 이동합니다.

Argo CD

  • 지속적인 배포: Argo CD는 애플리케이션이 Git 저장소의 최신 변경 사항과 항상 최신 상태를 유지하도록 배포 프로세스를 자동화하는 데 사용될 수 있습니다.
  • 애플리케이션 프로모션: Argo CD는 애플리케이션을 한 환경에서 다른 환경으로 프로모션할 수 있는 기능을 지원합니다. 예를 들어, 개발에서 프로덕션으로.
  • 다중 클러스터 관리: Argo CD는 여러 클러스터에서 애플리케이션을 관리할 수 있으며, 애플리케이션의 원하는 상태가 모든 클러스터에서 일관되게 유지되도록 합니다.
  • 롤백 관리: Argo CD는 실패 시 변경 사항을 되돌리기 쉽게 하는 롤백 기능을 제공합니다.

두 도구 중 어느 것을 선택할지는 조직과 애플리케이션의 특정 요구사항에 따라 달라집니다. 그러나 두 도구 모두 GitOps 접근 방식을 제공하여 배포 과정을 간소화하고 수동 오류의 위험을 줄입니다. 두 도구 모두 장단점이 있으며, 이 글에서는 이들이 무엇이고 어떻게 설정하는지 살펴보겠습니다.

Flux란?

Flux는 Kubernetes에서 애플리케이션을 자동으로 배포하는 GitOps 도구입니다. 이는 지속적으로 Git 저장소의 상태를 모니터링하고 클러스터에 어떤 변경이 있으면 적용하는 방식으로 작동합니다. Flux는 GitHub, GitLab, Bitbucket과 같은 다양한 Git 제공자와 통합됩니다. 저장소에 변경이 있을 때 Flux는 이를 자동으로 감지하고 클러스터를 해당하는 방식으로 업데이트합니다. 관련 튜토리얼: GitLab CI/CD를 사용하여 스프링 부트 앱을 자동 배포하는 방법.

Flux의 장점

  • 자동화된 배포: Flux는 배포 프로세스를 자동화하여 수동 오류를 줄이고 개발자가 다른 작업에 집중할 수 있게 해줍니다.
  • Git 기반 워크플로: Flux는 Git을 진실의 원천으로 활용하여 변경 사항을 추적하고 되돌리기 쉽게 만듭니다.
  • 선언적 구성: Flux는 Kubernetes 매니페스트를 사용하여 클러스터의 원하는 상태를 정의하므로 변경 사항을 관리하고 추적하기 쉽습니다.

Flux의 단점

  • 제한된 맞춤화: Flux는 제한된 범위의 맞춤화만 지원하며, 모든 사용 사례에 적합하지 않을 수 있습니다.
  • 가혹한 학습 곡선: Flux는 새로운 사용자에게 가혹한 학습 곡선을 가지고 있으며, Kubernetes와 Git에 대한 깊은 이해가 필요합니다.

Flux 설정 방법

사전 요구 사항

  • A running Kubernetes cluster.
  • 로컬 컴퓨터에 Helm이 설치되어 있어야 합니다.
  • A Git repository for your application’s source code and Kubernetes manifests.
  • Git 저장소의 저장소 URL과 SSH 키.

1단계: Flux Helm 저장소 추가

첫 번째 단계는 로컬 컴퓨터에 Flux Helm 저장소를 추가하는 것입니다. 저장소를 추가하려면 다음 명령을 실행하세요:

Shell

 

helm repo add fluxcd https://charts.fluxcd.io

2단계: Flux 설치

이제 Flux Helm 저장소가 추가되었으므로 클러스터에 Flux를 설치할 수 있습니다. Flux를 설치하려면 다음 명령을 실행하세요:

Shell

 

helm upgrade -i flux fluxcd/flux \
--set [email protected]:/.git \
--set git.path= \
--set git.pollInterval=1m \
--set git.ssh.secretName=flux-git-ssh

위의 명령에서 자리표 값을 자신의 Git 저장소 정보로 대체하세요. git.url 매개변수는 Git 저장소의 URL이며, git.path 매개변수는 Kubernetes 매니페스트가 포함된 디렉토리의 경로이며, git.ssh.secretName 매개변수는 저장소에 대한 SSH 키가 포함된 SSH 비밀의 이름입니다.

3단계: 설치 확인

위의 명령어를 실행한 후, Flux 포드의 상태를 확인하여 설치를 확인할 수 있습니다. 포드를 보려면 다음 명령어를 실행하세요:

Shell

 

kubectl get pods -n <flux-namespace>

포드가 실행 중이라면, Flux가 성공적으로 설치되었습니다.

Step 4: Flux를 깃 저장소에 연결하기

마지막 단계는 Flux를 깃 저장소에 연결하는 것입니다. SSH 키를 생성하고 비밀을 생성하기 위해 다음 명령어를 실행하세요:

Shell

 

ssh-keygen -t rsa -b 4096 -f id_rsa
kubectl create secret generic flux-git-ssh \
--from-file=id_rsa=./id_rsa --namespace=

위의 명령에서 <flux-namespace> 자리표시자를 Flux가 설치된 네임스페이스로 교체하세요.

이제, 생성된 공개 키를 깃 저장소의 배포 키로 추가하세요.

Helm을 사용하여 Flux를 성공적으로 설정하셨습니다. 깃 저장소에 변경 사항이 발생할 때마다 Flux가 이를 감지하고 클러스터를 해당하는 대로 업데이트합니다.

결론적으로, Helm을 사용하여 Flux를 설정하는 과정은 매우 간단합니다. 깃을 진실의 원천으로 사용하고 클러스터의 상태를 지속적으로 모니터링함으로써, Flux는 배포 과정을 간소화하고 수동 오류의 위험을 줄여줍니다.

Argo CD란 무엇인가?

Argo CD는 오픈 소스 GitOps 도구로, Kubernetes에서 애플리케이션의 자동 배포를 수행합니다. 개발자들이 선언적으로 애플리케이션을 관리하고, 애플리케이션의 원하는 상태를 실시간 상태와 동기화할 수 있게 해줍니다. Argo CD는 Git 저장소와 통합되며 지속적으로 변경 사항을 모니터링합니다. 변경 사항이 감지되면 Argo CD는 이를 클러스터에 적용하여 애플리케이션이 항상 최신 상태로 유지되도록 합니다. Argo CD를 사용하면 조직은 배포 프로세스를 자동화하고, 수동 오류의 위험을 감소시키며, Git의 버전 제어 기능을 활용할 수 있습니다. Argo CD는 그래픽 사용자 인터페이스와 명령줄 인터페이스를 제공하므로 대규모로 애플리케이션을 쉽게 사용 및 관리할 수 있습니다.

Argo CD의 장점

  • 고급 배포 기능: Argo CD는 롤링 업데이트 및 카나리 배포와 같은 고급 배포 기능을 제공하여 복잡한 배포를 쉽게 관리할 수 있습니다.
  • 사용자 친화적인 인터페이스: Argo CD는 비기술적인 사용자에게 특히 배포를 관리하기 쉬운 사용자 친화적인 인터페이스를 제공합니다.
  • 맞춤화 가능: Argo CD는 특정 사용 사례에 맞게 도구를 더 쉽게 맞춤화할 수 있습니다.

Argo CD의 단점

  • 가파른 학습 곡선: Argo CD는 초보자에게 가파른 학습 곡선을 가지고 있으며, Kubernetes와 Git에 대한 깊은 이해가 필요합니다.
  • 복잡성: Argo CD는 Flux보다 더 복잡한 아키텍처를 가지고 있어, 관리 및 문제 해결이 더 어려울 수 있습니다.

Argo CD 설정 방법

Argo CD는 Helm을 사용하여 Kubernetes 클러스터에 설치할 수 있습니다. 이 섹션에서는 Helm을 사용하여 Argo CD를 설정하는 단계를 안내합니다.

사전 요구 사항

  • A running Kubernetes cluster.
  • 로컬 머신에 Helm이 설치되어 있어야 합니다.
  • A Git repository for your application’s source code and Kubernetes manifests.

1단계: Argo CD Helm 리포지토리 추가

첫 번째 단계는 로컬 머신에 Argo CD Helm 리포지토리를 추가하는 것입니다. 다음 명령어를 실행하여 리포지토리를 추가하세요:

Shell

 

helm repo add argo https://argoproj.github.io/argo-cd

2단계: Argo CD 설치

이제 Argo CD Helm 리포지토리가 추가되었으므로 클러스터에 Argo CD를 설치할 수 있습니다. 다음 명령어를 실행하여 Argo CD를 설치하세요:

Shell

 

helm upgrade -i argocd argo/argo-cd --set server.route.enabled=true

3단계: 설치 확인

위의 명령어를 실행한 후 Argo CD 포드의 상태를 확인하여 설치를 확인할 수 있습니다. 다음 명령어를 실행하여 포드를 보세요:

Shell

 

kubectl get pods -n argocd

포드가 실행 중이면 Argo CD가 성공적으로 설치되었습니다.

4단계: Argo CD를 Git 리포지토리에 연결

마지막 단계는 Argo CD를 Git 리포지토리에 연결하는 것입니다. Argo CD는 애플리케이션을 생성하고 Git 리포지토리에 연결하는 데 사용할 수 있는 그래픽 사용자 인터페이스를 제공합니다.

Argo CD 인터페이스에 접속하려면 다음 명령어를 실행하여 URL을 가져오세요:

Shell

 

kubectl get routes -n argocd

웹 브라우저에서 URL을 사용하여 Argo CD 인터페이스에 접속하세요.

인터페이스에 들어가면 Git 저장소 URL과 Kubernetes 매니페스트의 경로를 제공하여 새 애플리케이션을 생성할 수 있습니다. Argo CD는 저장소의 변경 사항을 지속적으로 모니터링하고 클러스터에 적용합니다.

이제 Helm을 사용하여 Argo CD를 성공적으로 설정했습니다.

결론

Kubernetes와 DevOps는 소프트웨어 개발 수명주기의 핵심 부분이며, GitOps는 Kubernetes에서 애플리케이션의 배포 및 관리를 자동화하기 위한 가치 있는 접근 방식입니다. Flux와 Argo CD는 배포 프로세스를 자동화하고 불변의 인프라를 강제하며 일관되고 예측 가능한 방식으로 애플리케이션을 관리하는 간단하고 효율적인 방법을 제공하는 두 가지 인기 있는 GitOps 도구입니다.

Flux는 배포 파이프라인 자동화 및 코드로서의 구성 관리를 제공하는 반면 Argo CD는 다중 클러스터 관리, 애플리케이션 홍보 및 롤백 관리를 포함하여 보다 완전한 GitOps 솔루션을 제공합니다. 두 도구 모두 장단점이 있으며, 둘 중 어느 것을 선택할지는 조직과 애플리케이션의 구체적인 요구 사항에 따라 다릅니다.

선택한 도구에 관계없이, GitOps는 배포 과정을 단순화하고 수동 오류의 위험을 줄이는 데 유용한 접근 방식을 제공합니다. 애플리케이션의 원하는 상태를 Git 저장소와 동기화시켜주기 때문에 GitOps는 변경 사항이 일관되고 예측 가능한 방식으로 이루어지도록 보장하여 보다 안정적이고 효율적인 배포 과정을 가능하게 합니다.

Source:
https://dzone.com/articles/gitops-flux-vs-argo-cd