

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Argo CD
<a name="argo-cd"></a>

Argo CD는 여러 주요 GitOps 원칙을 준수하는 Kubernetes에 널리 사용되는 GitOps 지속적 전달(CD) 도구입니다.

## GitOps 지원
<a name="argo-cd-gitops"></a>


| 영역 | 도구 기능 | 
| --- | --- | 
| 선언적 구성 | Argo CD는 Git 리포지토리에 저장된 선언적 구성을 사용합니다. 애플리케이션 및 인프라의 원하는 상태는 YAML 파일에 정의됩니다. 이러한 구성은 배포 방법이 아니라 배포해야 할 사항을 설명합니다. | 
| 단일 정보 소스로서의 버전 제어 시스템 | Git 리포지토리는 전체 시스템의 단일 정보 소스 역할을 합니다. 애플리케이션 및 인프라에 대한 모든 변경은 Git을 통해 이루어집니다. 이렇게 하면 전체 감사 추적과 이전 상태로 롤백할 수 있습니다. | 
| 자동 동기화 | Argo CD는 Git 리포지토리의 변경 사항을 지속적으로 모니터링합니다. 변경 사항이 감지되면 클러스터의 실제 상태를 Git에 정의된 원하는 상태와 자동으로 동기화합니다. 이렇게 하면 클러스터가 항상 리포지토리에 설명된 상태를 반영합니다. | 
| Kubernetes 네이티브 | Argo CD는 Kubernetes 환경을 위해 특별히 설계되었습니다. 애플리케이션 관리를 위해 Kubernetes의 선언적 특성과 사용자 지정 리소스를 활용합니다. | 
| 자가 복구 및 드리프트 감지 | Argo CD는 클러스터의 라이브 상태를 Git의 원하는 상태와 정기적으로 비교합니다. 드리프트(실제 상태와 원하는 상태 간의 차이)를 감지하면 이러한 불일치를 자동으로 수정할 수 있습니다. | 
| 다중 클러스터 및 다중 테넌시 지원 | Argo CD는 단일 인스턴스에서 여러 Kubernetes 클러스터를 관리할 수 있습니다. 다중 테넌시를 지원하므로 팀마다 애플리케이션을 독립적으로 관리할 수 있습니다. | 
| 애플리케이션 정의 | Argo CD의 애플리케이션은 Application CRD(사용자 지정 리소스 정의)를 사용하여 정의됩니다. 이를 통해 Kubernetes 네이티브 방식으로 배포 대상과 방법을 정의할 수 있습니다. | 
| 배포 및 릴리스 분리 | Argo CD는 코드 배포를 릴리스에서 사용자로 분리합니다. 이는 블루/그린 또는 카나리 배포와 같은 다양한 배포 전략을 통해 달성됩니다. | 
| 관찰성 및 감사 가능성 | Argo CD는 애플리케이션 및 클러스터의 상태를 관찰하기 위한 웹 UI 및 CLI를 제공합니다. 모든 작업이 로깅되어 변경 사항 및 배포에 대한 명확한 감사 추적을 제공합니다. | 
| 보안 및 RBAC | Argo CD는 Kubernetes 역할 기반 액세스 제어(RBAC)와 통합됩니다. 인증 및 권한 부여를 위한 Single Sign-On 통합을 지원합니다. | 
| 플러그형 아키텍처 | Argo CD는 다양한 소스 제어 관리 시스템, 차트 Helm, Kustomize 및 기타 Kubernetes 매니페스트 형식을 지원합니다. 이러한 유연성을 통해 다양한 환경과 워크플로에 맞출 수 있습니다. | 
| 지속적 전송(CD) | Argo CD는 지속적 전달에 중점을 두지만 지속적 통합(CI) 도구와 통합하여 완전한 CI/CD 파이프라인을 생성할 수 있습니다. | 

Argo CD는 이러한 GitOps 원칙을 준수함으로써 Kubernetes 배포를 관리할 수 있는 강력하고 확장 가능하며 안전한 방법을 제공합니다. 이를 통해 시스템의 운영 상태가 Git 리포지토리에 정의된 원하는 상태와 항상 동기화되고 복잡한 Kubernetes 환경에서 일관성, 신뢰성 및 관리 용이성을 높일 수 있습니다.

Argo CD가 해결할 수 있는 시나리오 및 요구 사항은이 가이드 뒷부분의 [Argo CD 사용 사례를](use-cases.md#argo-cd-use-cases) 참조하세요. Argo CD와 Flux 간의 비교는이 가이드 뒷부분의 [기능 비교](use-cases.md#argo-flux-comparison)를 참조하세요.

자세한 내용은 [Argo CD 설명서를](https://argo-cd.readthedocs.io/en/stable/) 참조하세요.

## 아키텍처
<a name="argo-cd-architecture"></a>

다음 다이어그램은 EKS 클러스터 내에서 Argo CD를 사용하는 GitOps 기반 CD 워크플로를 보여줍니다. 자세한 내용은 [Argo CD 설명서를](https://argo-cd.readthedocs.io/en/stable/operator-manual/architecture/) 참조하세요.

![Argo CD 아키텍처 및 워크플로 켜짐 AWS.](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/eks-gitops-tools/images/argo-cd-on-aws.png)


여기서 각 항목은 다음과 같습니다.
+ **1단계: 풀 요청(PR) 병합**. 개발자는 Git 리포지토리에 저장된 Kubernetes 매니페스트 또는 차트 Helm에 변경 사항을 커밋합니다. PR을 검토하고 기본 브랜치에 병합하면 소스 제어에서 애플리케이션의 원하는 상태가 업데이트됩니다.
+ **2단계: 리포지토리 동기화**. Argo CD는 EKS 클러스터의 전용 네임스페이스(`argocd`) 내에서 실행되며 구성된 Git 리포지토리를 지속적으로 모니터링합니다. 변경 사항을 감지하면 최신 업데이트를 가져와 선언된 상태를 조정합니다.
+ **3단계: 대상 네임스페이스에 배포**. Argo CD는 Git의 원하는 상태를 클러스터의 라이브 상태와 비교합니다. 그런 다음 애플리케이션이 적절히 배포되거나 업데이트되도록 대상 워크로드 네임스페이스에 필요한 변경 사항을 적용합니다. 여기에는 배포, 서비스, ConfigMaps 및 보안 암호와 같은 Kubernetes 리소스를 관리하여 Git 소스와의 클러스터 일관성을 유지하는 것이 포함됩니다.