ArgoCD 애플리케이션 퀴즈
이 퀴즈는 ArgoCD 애플리케이션과 그 구성에 대한 이해도를 테스트합니다.
- ArgoCD Application 리소스의 주요 목적은 무엇인가요?
- A) 사용자 접근 제어 정의
- B) 애플리케이션의 원하는 상태와 동기화 설정 지정
- C) 알림 구성
- D) 시크릿 관리
정답 보기
정답: B) 애플리케이션의 원하는 상태와 동기화 설정 지정
설명: ArgoCD Application은 애플리케이션의 소스(Git 리포지토리, 경로, 리비전)와 대상(클러스터, 네임스페이스)을 정의하는 Kubernetes 커스텀 리소스이며, 동기화 정책을 지정합니다. 상태의 health는 controller가 기록하고 사용자 정의 리소스 헬스 체크는 별도 argocd-cm 설정으로 정의합니다.
- Application spec에서 매니페스트가 배포될 위치를 정의하는 필드는 무엇인가요?
- A) source
- B) target
- C) destination
- D) cluster
정답 보기
정답: C) destination
설명:destination 필드는 애플리케이션의 리소스가 배포될 대상 클러스터(서버 URL 또는 이름)와 네임스페이스를 지정합니다.
- Git 소스를 쓰는 Application에서
spec.source.path필드는 무엇을 지정하나요?- A) ArgoCD 설치 경로
- B) 매니페스트가 포함된 Git 리포지토리 내의 디렉토리
- C) 로컬 파일 시스템 경로
- D) API 서버 경로
정답 보기
정답: B) 매니페스트가 포함된 Git 리포지토리 내의 디렉토리
설명:source 아래의 path 필드는 Kubernetes 매니페스트, Helm 차트 또는 Kustomize 구성이 포함된 Git 리포지토리 내의 디렉토리를 지정합니다.
- Argo CD가 destination.namespace를 자동으로 생성하도록 하는 내장 sync 옵션은 무엇인가요?
- A) 먼저 네임스페이스를 수동으로 생성
- B) syncPolicy.syncOptions에 CreateNamespace=true 사용
- C) 불가능함
- D) pre-sync hook 사용
정답 보기
정답: B) syncPolicy.syncOptions에 CreateNamespace=true 사용
설명:syncPolicy.syncOptions에 CreateNamespace=true를 설정하면 ArgoCD가 애플리케이션 리소스를 동기화하기 전에 대상 네임스페이스가 없으면 생성합니다. 다른 namespace가 manifest에 명시되어 있다고 모두 생성하는 기능은 아니며 AppProject/RBAC 권한도 필요합니다.
targetRevision: HEAD와targetRevision: main의 차이점은 무엇인가요?- A) 차이 없음
- B) HEAD는 원격 HEAD를 따르고, main은 명시적인 브랜치 이름
- C) HEAD가 더 빠름
- D) main은 웹훅을 지원하고, HEAD는 지원하지 않음
정답 보기
정답: B) HEAD는 원격 HEAD를 따르고, main은 명시적인 브랜치 이름
설명:HEAD는 리포지토리의 기본 브랜치가 무엇이든 가리키는 심볼릭 참조이고, main은 main 브랜치를 명시적으로 지정합니다. 기본 브랜치 변경이 배포 대상에도 영향을 줄 수 있습니다. 재현성을 요구하는 릴리스는 검증한 commit/tag 정책을 사용합니다.
- Helm 리포지토리(Git이 아닌)에서 Helm 차트를 배포할 때 사용할 소스 유형은 무엇인가요?
- A) git
- B) helm
- C) directory
- D) kustomize
정답 보기
정답: B) helm
설명: Helm 리포지토리에서 배포할 때는 source.chart와 source.repoURL을 Helm 리포지토리를 가리키도록 설정하면 ArgoCD가 Git 소스가 아닌 Helm 소스로 처리합니다.
spec.source.helm.releaseName을 설정하면 어떻게 되나요?- A) 새 Helm 리포지토리 생성
- B) 기본 릴리스 이름(Application 이름)을 재정의
- C) Helm hooks 활성화
- D) 차트 버전 설정
정답 보기
정답: B) 기본 릴리스 이름(Application 이름)을 재정의
설명: 기본적으로 ArgoCD는 Application 이름을 Helm 릴리스 이름으로 사용합니다. releaseName은 템플릿의 Release.Name을 바꿉니다. Argo CD가 일반 Helm release를 저장·운영한다는 뜻은 아닙니다. label 기반 tracking을 사용한다면 chart selector와 추적 label의 상호작용도 확인합니다.
- ArgoCD Application에서 Helm values를 어떻게 지정하나요?
- A) 리포지토리의 values 파일을 통해서만
- B) Application spec에 인라인으로만
- C) values 파일과 인라인 values 둘 다
- D) values는 ConfigMap에 저장해야 함
정답 보기
정답: C) values 파일과 인라인 values 둘 다
설명: ArgoCD는 spec.source.helm.valueFiles(리포지토리의 파일 참조) 및/또는 spec.source.helm.values(인라인 YAML)를 통해 Helm values를 지정하는 것을 지원합니다. valueFiles와 인라인 값을 함께 사용할 수 있습니다. 전체 우선순위는 parameters > valuesObject > values > valueFiles > Chart 기본값이며, valuesObject와 values는 인라인 표현을 중복 사용하지 않는 편이 명확합니다.