Skip to content

ArgoCD 애플리케이션 퀴즈 ​

이 퀴즈는 ArgoCD 애플리케이션과 그 구성에 대한 이해도를 테스트합니다.

  1. ArgoCD Application 리소스의 주요 목적은 무엇인가요?
    • A) 사용자 접근 제어 정의
    • B) 애플리케이션의 원하는 상태와 동기화 설정 지정
    • C) 알림 구성
    • D) 시크릿 관리
정답 보기

정답: B) 애플리케이션의 원하는 상태와 동기화 설정 지정

설명: ArgoCD Application은 애플리케이션의 소스(Git 리포지토리, 경로, 리비전)와 대상(클러스터, 네임스페이스)을 정의하는 Kubernetes 커스텀 리소스이며, 동기화 정책을 지정합니다. 상태의 health는 controller가 기록하고 사용자 정의 리소스 헬스 체크는 별도 argocd-cm 설정으로 정의합니다.

  1. Application spec에서 매니페스트가 배포될 위치를 정의하는 필드는 무엇인가요?
    • A) source
    • B) target
    • C) destination
    • D) cluster
정답 보기

정답: C) destination

설명:destination 필드는 애플리케이션의 리소스가 배포될 대상 클러스터(서버 URL 또는 이름)와 네임스페이스를 지정합니다.

  1. Git 소스를 쓰는 Application에서 spec.source.path 필드는 무엇을 지정하나요?
    • A) ArgoCD 설치 경로
    • B) 매니페스트가 포함된 Git 리포지토리 내의 디렉토리
    • C) 로컬 파일 시스템 경로
    • D) API 서버 경로
정답 보기

정답: B) 매니페스트가 포함된 Git 리포지토리 내의 디렉토리

설명:source 아래의 path 필드는 Kubernetes 매니페스트, Helm 차트 또는 Kustomize 구성이 포함된 Git 리포지토리 내의 디렉토리를 지정합니다.

  1. 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 권한도 필요합니다.

  1. targetRevision: HEAD와 targetRevision: main의 차이점은 무엇인가요?
    • A) 차이 없음
    • B) HEAD는 원격 HEAD를 따르고, main은 명시적인 브랜치 이름
    • C) HEAD가 더 빠름
    • D) main은 웹훅을 지원하고, HEAD는 지원하지 않음
정답 보기

정답: B) HEAD는 원격 HEAD를 따르고, main은 명시적인 브랜치 이름

설명:HEAD는 리포지토리의 기본 브랜치가 무엇이든 가리키는 심볼릭 참조이고, main은 main 브랜치를 명시적으로 지정합니다. 기본 브랜치 변경이 배포 대상에도 영향을 줄 수 있습니다. 재현성을 요구하는 릴리스는 검증한 commit/tag 정책을 사용합니다.

  1. Helm 리포지토리(Git이 아닌)에서 Helm 차트를 배포할 때 사용할 소스 유형은 무엇인가요?
    • A) git
    • B) helm
    • C) directory
    • D) kustomize
정답 보기

정답: B) helm

설명: Helm 리포지토리에서 배포할 때는 source.chart와 source.repoURL을 Helm 리포지토리를 가리키도록 설정하면 ArgoCD가 Git 소스가 아닌 Helm 소스로 처리합니다.

  1. 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의 상호작용도 확인합니다.

  1. 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는 인라인 표현을 중복 사용하지 않는 편이 명확합니다.