설치
설치 (Installation)
Argo CD에는 멀티 테넌트(multi-tenant)와 코어(core) 두 가지 설치 유형이 있어요. 목적에 맞는 설치 방식을 선택하고 운영해요.
출처: 문서
본문
Argo CD에는 두 가지 유형의 설치가 있어요: 멀티 테넌트와 코어.
멀티 테넌트 (Multi-Tenant)
멀티 테넌트 설치는 Argo CD를 설치하는 가장 일반적인 방식이에요. 이 유형의 설치는 조직 내 여러 애플리케이션 개발 팀을 지원하는 데 주로 사용되며 플랫폼 팀이 유지보수해요.
최종 사용자는 Web UI나 argocd CLI로 API 서버를 통해 Argo CD에 접근할 수 있어요. argocd CLI는 argocd login <server-host> 명령으로 구성해야 해요.
두 가지 유형의 설치 매니페스트가 제공돼요:
비고가용성 (Non-High Availability):
프로덕션 사용에는 권장되지 않아요. 이 유형의 설치는 주로 데모나 테스트를 위한 평가 기간에 사용돼요.
- install.yaml - cluster-admin 접근 권한이 있는 표준 Argo CD 설치예요. Argo CD가 실행되는 것과 같은 클러스터(즉 kubernetes.svc.default)에 애플리케이션을 배포하려면 이 매니페스트 세트를 사용하세요. 입력된 자격 증명으로 외부 클러스터에도 배포할 수 있어요.
[!NOTE] 설치 매니페스트의 ClusterRoleBinding은 argocd 네임스페이스의 ServiceAccount에 바인딩돼요. 네임스페이스를 수정할 때 주의하세요. ClusterRoleBinding이 새 네임스페이스를 반영하도록 올바르게 조정하지 않으면 권한 관련 오류가 발생할 수 있어요.
- namespace-install.yaml - 네임스페이스 수준 권한만 필요한 Argo CD 설치예요(클러스터 역할 불필요). Argo CD가 실행되는 것과 같은 클러스터에 애플리케이션을 배포할 필요가 없고 입력된 클러스터 자격 증명에만 의존한다면 이 매니페스트 세트를 사용하세요. 이 매니페스트 세트를 사용하는 예시는 서로 다른 팀을 위해 여러 Argo CD 인스턴스를 실행하는 경우예요. 각 인스턴스는 외부 클러스터에 애플리케이션을 배포하게 되지요. 제공된 자격 증명으로 같은 클러스터(kubernetes.svc.default)에 배포하는 것도 여전히 가능해요(즉
argocd cluster add <CONTEXT> --in-cluster --namespace <YOUR NAMESPACE>). 포함된 기본 역할로는 같은 클러스터에 Argo CD 리소스(Applications, ApplicationSets, AppProjects)만 배포할 수 있어요. 실제 배포는 외부 클러스터에서 이루어지는 GitOps 모드만 지원하기 때문이에요. 새 역할을 정의하고argocd-application-controller서비스 어카운트에 바인딩하면 이를 수정할 수 있어요.
[!NOTE] Argo CD CRD는 namespace-install.yaml에 포함되지 않으며 별도로 설치해야 해요. CRD 매니페스트는 manifests/crds 디렉터리에 있어요. 설치하려면 다음 명령을 사용하세요:
kubectl apply --server-side --force-conflicts -k https://github.com/argoproj/argo-cd/manifests/crds\?ref\=stable
고가용성 (High Availability):
고가용성 설치는 프로덕션 사용에 권장돼요. 이 번들은 같은 컴포넌트를 포함하지만 고가용성과 복원력을 위해 튜닝되었어요.
- ha/install.yaml - install.yaml과 같지만 지원되는 컴포넌트에 여러 레플리카를 사용해요.
- ha/namespace-install.yaml - namespace-install.yaml과 같지만 지원되는 컴포넌트에 여러 레플리카를 사용해요.
코어 (Core)
Argo CD Core 설치는 주로 headless 모드로 Argo CD를 배포하는 데 사용돼요. 이 유형의 설치는 독립적으로 Argo CD를 사용하고 멀티 테넌시 기능이 필요 없는 클러스터 관리자에게 가장 적합해요. 이 설치는 컴포넌트가 더 적고 설정이 더 쉬워요. 이 번들에는 API 서버나 UI가 포함되지 않으며, 각 컴포넌트의 경량(비-HA) 버전을 설치해요.
설치 매니페스트는 core-install.yaml에서 사용할 수 있어요.
Argo CD Core에 대한 자세한 내용은 공식 문서를 참고하세요.
Kustomize
Argo CD 매니페스트는 Kustomize로도 설치할 수 있어요. 매니페스트를 원격 리소스로 포함하고 Kustomize 패치로 추가 커스터마이즈를 적용하는 것을 권장해요.
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: argocd
resources:
- https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
이에 대한 예시는 Argoproj CI/CD 인프라를 배포하는 데 사용되는 kustomization.yaml을 참고하세요.
커스텀 네임스페이스에 Argo CD 설치 (Installing Argo CD in a Custom Namespace)
기본 argocd가 아닌 다른 네임스페이스에 Argo CD를 설치하려면 Kustomize를 사용해 ServiceAccount의 올바른 네임스페이스를 참조하도록 ClusterRoleBinding을 업데이트하는 패치를 적용할 수 있어요. 이렇게 하면 커스텀 네임스페이스에 필요한 권한이 올바르게 설정돼요.
커스텀 네임스페이스에 Argo CD를 설치하도록 kustomization.yaml을 구성하는 예시는 다음과 같아요:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: <your-custom-namespace>
resources:
- https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
patches:
- patch: |-
- op: replace
path: /subjects/0/namespace
value: <your-custom-namespace>
target:
kind: ClusterRoleBinding
이 패치는 ClusterRoleBinding이 커스텀 네임스페이스의 ServiceAccount를 올바르게 매핑하도록 보장해서, 배포 중에 권한 관련 문제가 발생하지 않게 해줘요.
Helm
Argo CD는 Helm으로도 설치할 수 있어요. Helm 차트는 현재 커뮤니티가 유지보수하며 argo-helm/charts/argo-cd에서 사용할 수 있어요.
지원 버전 (Supported versions)
Argo CD 버전 지원 정책에 대한 자세한 정보는 릴리스 프로세스와 주기 문서를 참고하세요.
테스트된 버전 (Tested versions)
다음 표는 각 Argo CD 버전과 함께 테스트된 Kubernetes 버전을 보여줘요.
| Argo CD 버전 | Kubernetes 버전 |
|---|---|
| 3.5 | v1.36, v1.35, v1.34, v1.33 |
| 3.4 | v1.35, v1.34, v1.33, v1.32 |
| 3.3 | v1.35, v1.34, v1.33, v1.32 |