Skip to content

Split View: [Golden Kubestronaut] CGOA 실전 연습 문제 80제 - Certified GitOps Associate

|

[Golden Kubestronaut] CGOA 실전 연습 문제 80제 - Certified GitOps Associate

1. CGOA 시험 개요

**CGOA(Certified GitOps Associate)**는 CNCF에서 주관하는 GitOps 관련 입문 수준 자격증입니다.

항목내용
시험 시간90분
문제 수60문제 (MCQ)
합격선75% (45문제 이상)
시험 방식온라인 원격 감독
유효 기간3년
응시 비용USD 250

2. Golden Kubestronaut 프로그램 소개

Golden Kubestronaut는 기존 Kubestronaut 5개 자격증에 더해 CGOA, KCSA 등 추가 자격증까지 모두 취득한 사람에게 부여되는 최상위 타이틀입니다.

자격증유형합격선
KCNA이론 (MCQ)75%
KCSA이론 (MCQ)75%
CGOA이론 (MCQ)75%
CKA실기66%
CKAD실기66%
CKS실기67%

3. 도메인별 출제 비율

도메인비율
GitOps Terminology20%
GitOps Principles30%
Related Tools30%
GitOps Patterns20%

4. 핵심 개념 요약

GitOps 원칙

  • 선언적 (Declarative): 시스템의 원하는 상태를 선언적으로 정의
  • 버전 관리 (Versioned and Immutable): 모든 상태가 Git에 저장되어 불변성과 버전 이력 보장
  • 자동 적용 (Pulled Automatically): 승인된 변경이 자동으로 시스템에 적용
  • 지속적 조정 (Continuously Reconciled): 에이전트가 실제 상태와 원하는 상태를 지속 비교하여 드리프트 교정

ArgoCD 아키텍처

  • API Server: 웹 UI, CLI, CI/CD 시스템을 위한 gRPC/REST 인터페이스
  • Repository Server: Git 저장소를 클론하고 매니페스트를 생성
  • Application Controller: 실행 중인 애플리케이션 상태를 모니터링하고 원하는 상태와 비교
  • Redis: 매니페스트 캐싱과 상태 저장
  • Dex: SSO를 위한 OIDC 프로바이더

Flux 아키텍처

  • source-controller: Git, Helm, OCI 저장소에서 아티팩트를 가져옴
  • kustomize-controller: Kustomize 오버레이를 적용하고 리소스를 배포
  • helm-controller: Helm 차트 릴리스를 관리
  • notification-controller: 외부 시스템에 이벤트를 전달

5. 실전 연습 문제 80문제

Domain 1: GitOps Terminology (Q1-Q16)

Q1. GitOps에서 "Single Source of Truth"가 의미하는 것은?

A) 운영팀만 접근할 수 있는 중앙 데이터베이스 B) Git 저장소에 저장된 선언적 설정이 시스템의 유일한 진실 원천 C) Kubernetes API 서버에 저장된 현재 클러스터 상태 D) CI/CD 파이프라인의 최종 빌드 아티팩트

정답: B

설명: GitOps에서 Single Source of Truth는 Git 저장소에 저장된 선언적 설정 파일을 의미합니다. 모든 인프라와 애플리케이션 상태는 Git에서 관리되며, 이것이 시스템이 도달해야 할 원하는 상태(Desired State)의 유일한 기준점입니다.

Q2. GitOps에서 "Desired State"와 "Actual State"의 차이를 나타내는 용어는?

A) Deviation B) Drift C) Delta D) Divergence

정답: B

설명: Drift(드리프트)는 Git 저장소에 정의된 Desired State(원하는 상태)와 실제 실행 중인 클러스터의 Actual State(실제 상태) 간의 차이를 나타내는 GitOps 핵심 용어입니다.

Q3. 선언적(Declarative) 접근 방식의 특징으로 올바른 것은?

A) 시스템이 도달해야 할 최종 상태를 기술한다 B) 상태에 도달하기 위한 단계별 명령을 기술한다 C) 수동으로 각 리소스를 순서대로 생성한다 D) 스크립트를 통해 절차적으로 인프라를 구성한다

정답: A

설명: 선언적 접근 방식은 "무엇(What)"을 원하는지 기술합니다. 반면 명령적(Imperative) 접근 방식은 "어떻게(How)" 도달할지를 단계별로 기술합니다. GitOps는 선언적 방식을 핵심 원칙으로 사용합니다.

Q4. 명령적(Imperative) 접근 방식의 예시는?

A) Kubernetes YAML 매니페스트로 Deployment를 정의 B) kubectl create deployment nginx --image=nginx 명령 실행 C) Helm 차트로 애플리케이션 패키지를 정의 D) Kustomize 오버레이로 환경별 설정을 관리

정답: B

설명: kubectl create 명령은 리소스를 직접 생성하는 명령적 접근입니다. YAML 파일로 정의한 뒤 kubectl apply하는 것이 선언적 접근이며, Helm과 Kustomize도 선언적 도구입니다.

Q5. GitOps의 4가지 핵심 원칙(OpenGitOps)에 해당하지 않는 것은?

A) 선언적 (Declarative) B) 버전 관리 및 불변 (Versioned and Immutable) C) 수동 승인 후 적용 (Manual Approval Required) D) 지속적 조정 (Continuously Reconciled)

정답: C

설명: OpenGitOps의 4가지 원칙은 (1) Declarative, (2) Versioned and Immutable, (3) Pulled Automatically, (4) Continuously Reconciled입니다. 수동 승인은 워크플로우에 추가할 수 있지만 핵심 원칙은 아닙니다.

Q6. GitOps에서 "Reconciliation"의 의미는?

A) Git 저장소의 브랜치를 병합하는 과정 B) 원하는 상태와 실제 상태를 비교하여 일치시키는 과정 C) CI 파이프라인에서 테스트를 실행하는 과정 D) 컨테이너 이미지를 빌드하고 레지스트리에 푸시하는 과정

정답: B

설명: Reconciliation(조정)은 GitOps 에이전트가 Git에 정의된 원하는 상태와 클러스터의 실제 상태를 주기적으로 비교하고, 차이가 있으면 실제 상태를 원하는 상태로 수렴시키는 핵심 메커니즘입니다.

Q7. "Drift Detection"이 필요한 상황은?

A) 새로운 애플리케이션을 처음 배포할 때 B) 누군가 kubectl edit으로 클러스터에서 직접 리소스를 수정했을 때 C) Git에 새로운 커밋이 푸시되었을 때 D) CI 파이프라인이 새 이미지를 빌드했을 때

정답: B

설명: Drift Detection은 Git에 정의된 상태와 클러스터의 실제 상태가 다를 때 이를 감지하는 기능입니다. 대표적으로 누군가 kubectl 등으로 클러스터에 직접 변경을 가한 경우 드리프트가 발생합니다.

Q8. GitOps에서 Git 저장소의 역할로 가장 적절한 것은?

A) 컨테이너 이미지를 저장하는 레지스트리 B) 인프라와 애플리케이션의 원하는 상태를 저장하는 선언적 저장소 C) CI/CD 파이프라인의 실행 로그를 저장하는 곳 D) 모니터링 메트릭을 수집하는 데이터 소스

정답: B

설명: GitOps에서 Git 저장소는 인프라와 애플리케이션의 원하는 상태를 선언적으로 저장하는 Single Source of Truth 역할을 합니다.

Q9. "State Store"의 개념으로 올바른 것은?

A) 애플리케이션의 런타임 데이터를 저장하는 데이터베이스 B) 원하는 상태의 선언을 저장하는 버전 관리 시스템 C) 클러스터 이벤트를 저장하는 로그 시스템 D) 시크릿을 암호화하여 저장하는 볼트 시스템

정답: B

설명: GitOps에서 State Store는 시스템의 원하는 상태(Desired State)를 선언적으로 저장하는 버전 관리 시스템입니다. Git이 가장 대표적인 State Store이며, 불변 이력과 감사 추적을 제공합니다.

Q10. GitOps에서 "Feedback Loop"의 역할은?

A) 개발자에게 코드 리뷰 알림을 보내는 것 B) 실제 상태가 원하는 상태에서 벗어났을 때 감지하고 알리는 것 C) CI 파이프라인의 테스트 결과를 보고하는 것 D) Git 커밋에 대한 자동 코멘트를 추가하는 것

정답: B

설명: Feedback Loop은 GitOps 에이전트가 실제 클러스터 상태를 관찰하고 원하는 상태와의 차이를 감지하여 운영자에게 알리는 메커니즘입니다. 이를 통해 드리프트 발생 시 즉각 대응이 가능합니다.

Q11. GitOps에서 "Immutable Infrastructure"의 의미는?

A) 인프라가 한번 배포되면 절대 변경할 수 없다 B) 변경이 필요하면 기존 인프라를 수정하지 않고 새로 교체한다 C) 인프라의 모든 설정이 하드코딩되어 있다 D) 물리 서버에서만 가능한 배포 방식이다

정답: B

설명: Immutable Infrastructure는 기존 인프라를 수정(mutate)하지 않고, 새로운 버전을 배포하여 교체하는 패턴입니다. 이를 통해 구성 드리프트를 방지하고 롤백을 용이하게 합니다.

Q12. GitOps가 해결하고자 하는 핵심 문제는?

A) 컨테이너 이미지 빌드 속도 최적화 B) 인프라와 애플리케이션 배포의 일관성, 감사 가능성, 자동화 C) 소스 코드 컴파일 시간 단축 D) 네트워크 대역폭 최적화

정답: B

설명: GitOps는 인프라와 애플리케이션 배포를 Git 기반의 워크플로우로 통합하여 일관성(Consistency), 감사 가능성(Auditability), 자동화(Automation)를 보장하는 것을 목표로 합니다.

Q13. "Software Agent"가 GitOps에서 수행하는 역할은?

A) 코드를 컴파일하고 테스트를 실행 B) Git 저장소의 상태를 클러스터에 적용하고 드리프트를 교정 C) 개발자의 코드 리뷰를 자동화 D) 컨테이너 이미지를 빌드하고 푸시

정답: B

설명: GitOps의 Software Agent(ArgoCD, Flux 등)는 Git 저장소에 선언된 원하는 상태를 클러스터에 적용하고, 지속적으로 드리프트를 감지하여 교정하는 역할을 합니다.

Q14. "Observability"가 GitOps와 어떻게 관련되는가?

A) GitOps는 모니터링 도구를 대체한다 B) 실제 상태를 관찰하여 원하는 상태와 비교하는 데 필수적이다 C) 로그 수집과 메트릭 분석만 의미한다 D) CI/CD 파이프라인 성능 측정에만 사용된다

정답: B

설명: GitOps에서 Observability는 클러스터의 실제 상태를 관찰하고, 원하는 상태와의 차이를 파악하는 데 핵심 역할을 합니다. 드리프트 감지와 자동 교정의 기반이 됩니다.

Q15. GitOps Terminology에서 "Desired State"를 가장 잘 설명한 것은?

A) 현재 클러스터에서 실행 중인 모든 리소스의 상태 B) Git 저장소에 선언적으로 정의된 시스템이 도달해야 할 목표 상태 C) 운영팀이 수동으로 설정한 서버 구성 D) 모니터링 대시보드에 표시된 메트릭 값

정답: B

설명: Desired State는 Git 저장소에 선언적으로 정의된 시스템의 목표 상태입니다. GitOps 에이전트는 이 상태를 기준으로 클러스터를 지속 조정합니다.

Q16. "Configuration as Code"와 GitOps의 관계로 올바른 것은?

A) 둘은 완전히 별개의 개념이다 B) Configuration as Code는 GitOps의 전제 조건이며, 모든 설정을 코드로 관리한다 C) GitOps는 Configuration as Code를 대체하는 새로운 방법론이다 D) Configuration as Code는 애플리케이션 코드에만 적용된다

정답: B

설명: Configuration as Code는 인프라와 애플리케이션 설정을 코드(YAML, JSON, HCL 등)로 관리하는 것으로, GitOps를 실현하기 위한 전제 조건입니다. 이를 통해 Git 버전 관리와 자동화가 가능해집니다.

Domain 2: GitOps Principles (Q17-Q40)

Q17. Pull 기반 배포 모델의 특징은?

A) CI 서버가 클러스터에 직접 배포 명령을 보낸다 B) 클러스터 내부의 에이전트가 Git 저장소에서 변경 사항을 가져와 적용한다 C) 개발자가 kubectl로 직접 리소스를 배포한다 D) 외부 스크립트가 SSH로 서버에 접속하여 배포한다

정답: B

설명: Pull 모델에서는 클러스터 내부에서 실행되는 에이전트(ArgoCD, Flux)가 주기적으로 Git 저장소를 확인하고 변경 사항을 클러스터에 적용합니다. 외부에서 클러스터에 직접 접근할 필요가 없어 보안상 유리합니다.

Q18. Push 기반 배포 모델의 보안 단점은?

A) Git 저장소에 대한 읽기 권한이 필요하다 B) CI/CD 시스템이 클러스터에 대한 직접 접근 권한(credentials)을 보유해야 한다 C) 컨테이너 이미지 레지스트리 접근이 필요하다 D) 코드 리뷰 프로세스가 복잡해진다

정답: B

설명: Push 모델에서는 Jenkins, GitHub Actions 등 CI/CD 시스템이 클러스터에 직접 접근하기 위한 kubeconfig나 ServiceAccount 토큰 등의 자격 증명을 보유해야 합니다. 이는 보안상 공격 표면을 넓히는 단점입니다.

Q19. GitOps의 Reconciliation Loop에서 감지할 수 없는 것은?

A) 클러스터에서 누군가 직접 수정한 Deployment의 replica 수 변경 B) Git 저장소에 새로 커밋된 ConfigMap 변경 C) 개발자 로컬 머신에서 테스트 중인 미커밋 코드 변경 D) Git 저장소에 푸시된 새로운 Helm 차트 버전

정답: C

설명: Reconciliation Loop은 Git 저장소에 커밋된 상태와 클러스터의 실제 상태를 비교합니다. 개발자 로컬 머신에서 아직 커밋되지 않은 변경 사항은 Git에 존재하지 않으므로 감지 대상이 아닙니다.

Q20. GitOps에서 "Self-Healing"의 의미는?

A) 서버가 물리적 장애에서 자동으로 복구되는 것 B) 실제 상태가 원하는 상태와 달라지면 자동으로 원하는 상태로 복원하는 것 C) 애플리케이션 코드의 버그를 자동으로 수정하는 것 D) 네트워크 장애를 자동으로 우회하는 것

정답: B

설명: Self-Healing은 GitOps 에이전트가 드리프트를 감지했을 때 자동으로 Git에 정의된 원하는 상태로 복원하는 메커니즘입니다. 예를 들어 누군가 수동으로 replica 수를 변경하면 에이전트가 이를 감지하고 Git의 값으로 되돌립니다.

Q21. Git 브랜치 전략 중 "Environment per Branch" 패턴의 특징은?

A) 모든 환경이 단일 브랜치에서 관리된다 B) 각 환경(dev, staging, prod)에 대응하는 별도의 브랜치가 존재한다 C) 브랜치 없이 태그만 사용한다 D) feature 브랜치에서 직접 프로덕션에 배포한다

정답: B

설명: Environment per Branch 패턴에서는 main, staging, production 등 각 환경에 대응하는 브랜치를 두고, 해당 브랜치에 머지하면 GitOps 에이전트가 자동으로 해당 환경에 배포합니다.

Q22. GitOps에서 롤백(Rollback)을 수행하는 권장 방법은?

A) kubectl로 이전 버전의 이미지를 직접 설정 B) Git에서 이전 커밋으로 revert하여 새 커밋을 생성 C) 클러스터의 etcd 백업을 복원 D) CI/CD 파이프라인을 수동으로 재실행

정답: B

설명: GitOps에서 롤백은 Git에서 이전 커밋으로 revert하는 것이 권장됩니다. 이렇게 하면 변경 이력이 보존되고, GitOps 에이전트가 자동으로 이전 상태로 클러스터를 조정합니다.

Q23. "Trunk-Based Development"를 GitOps와 함께 사용할 때의 장점은?

A) 장기 실행 브랜치가 많아져 병합 충돌이 줄어든다 B) 짧은 수명의 브랜치와 빈번한 통합으로 빠른 피드백과 배포가 가능하다 C) 코드 리뷰 없이 직접 main 브랜치에 커밋할 수 있다 D) 여러 환경을 하나의 브랜치로만 관리할 수 있다

정답: B

설명: Trunk-Based Development는 짧은 수명의 feature 브랜치를 사용하고 자주 main에 통합하는 방식입니다. GitOps와 결합하면 빈번한 배포와 빠른 피드백 루프를 실현할 수 있습니다.

Q24. GitOps에서 "Pull Request(PR)" 워크플로우의 역할은?

A) 자동으로 컨테이너 이미지를 빌드한다 B) 변경 사항에 대한 리뷰, 승인, 감사 추적을 제공한다 C) 클러스터에 직접 배포를 실행한다 D) 테스트 환경을 자동으로 프로비저닝한다

정답: B

설명: Pull Request는 GitOps 워크플로우에서 변경 사항에 대한 코드 리뷰, 팀 승인, 자동화된 검증(CI), 그리고 변경 이력의 감사 추적을 제공하는 핵심 게이트입니다.

Q25. GitOps에서 Separation of Concerns 원칙에 따라 저장소를 분리하는 이유는?

A) Git 저장소의 용량 제한 때문에 B) 애플리케이션 소스 코드와 배포 설정의 변경 주기와 권한이 다르기 때문에 C) Git이 바이너리 파일을 잘 처리하지 못하기 때문에 D) CI/CD 파이프라인의 속도를 높이기 위해

정답: B

설명: 애플리케이션 소스 코드와 배포 설정(manifest)은 변경 주기, 접근 권한, 리뷰 프로세스가 다릅니다. 이를 분리하면 각각 독립적으로 관리하고 RBAC을 적용할 수 있습니다.

Q26. GitOps에서 "Idempotency(멱등성)"가 중요한 이유는?

A) 배포 속도를 높이기 위해 B) 동일한 선언적 상태를 여러 번 적용해도 결과가 동일함을 보장하기 위해 C) Git 커밋 메시지의 일관성을 유지하기 위해 D) 컨테이너 이미지의 크기를 줄이기 위해

정답: B

설명: 멱등성은 동일한 작업을 여러 번 수행해도 결과가 동일한 속성입니다. GitOps에서 reconciliation loop이 반복적으로 상태를 적용하므로, 매번 동일한 결과를 보장하는 멱등성이 필수적입니다.

Q27. "Continuous Reconciliation"과 "CI/CD"의 차이점은?

A) 차이가 없으며 동일한 개념이다 B) CI/CD는 이벤트 기반으로 트리거되고, Continuous Reconciliation은 지속적으로 상태를 비교 조정한다 C) CI/CD만이 자동화를 제공한다 D) Continuous Reconciliation은 빌드 단계만 포함한다

정답: B

설명: CI/CD는 커밋이나 머지 같은 이벤트에 트리거되어 빌드-테스트-배포를 수행합니다. Continuous Reconciliation은 이벤트와 관계없이 지속적으로 원하는 상태와 실제 상태를 비교하고 조정합니다.

Q28. GitOps에서 "Audit Trail(감사 추적)"이 자동으로 제공되는 이유는?

A) 별도의 감사 로그 시스템을 구축했기 때문에 B) 모든 변경이 Git 커밋으로 기록되어 누가, 언제, 무엇을 변경했는지 추적 가능하기 때문에 C) Kubernetes 이벤트가 영구 저장되기 때문에 D) CI/CD 파이프라인 로그가 보관되기 때문에

정답: B

설명: GitOps에서 모든 인프라 변경은 Git 커밋으로 이루어지므로, 커밋 이력이 자연스럽게 감사 추적 역할을 합니다. 커밋자, 시간, 변경 내용, PR 리뷰 기록이 모두 보존됩니다.

Q29. Multi-tenancy 환경에서 GitOps를 적용할 때 권장되는 방법은?

A) 모든 팀이 하나의 저장소와 네임스페이스를 공유 B) 팀별 저장소와 네임스페이스를 분리하고, RBAC으로 접근을 제한 C) 각 팀이 독립적인 Kubernetes 클러스터를 운영 D) GitOps를 사용하지 않고 수동 배포

정답: B

설명: Multi-tenancy 환경에서는 팀별 Git 저장소와 네임스페이스를 분리하고, ArgoCD의 AppProject나 Flux의 Tenant 기능으로 RBAC을 적용하여 격리를 보장합니다.

Q30. GitOps에서 "Environment Promotion"의 올바른 구현 방법은?

A) 동일한 YAML을 모든 환경에 복사-붙여넣기 B) Pull Request를 통해 변경 사항을 dev에서 staging, staging에서 prod로 순차 승격 C) kubectl로 각 환경에 수동 배포 D) 환경별로 완전히 다른 매니페스트를 작성

정답: B

설명: Environment Promotion은 Pull Request 워크플로우를 통해 변경 사항을 dev에서 staging, staging에서 production으로 순차적으로 승격하는 패턴입니다. 각 단계에서 리뷰와 자동 테스트를 수행합니다.

Q31. GitOps에서 "Reconciliation Timeout"의 역할은?

A) Git 저장소 접근 제한 시간 B) 동기화 작업이 완료되기까지의 최대 허용 시간 C) PR 리뷰 대기 시간 제한 D) 이미지 빌드 타임아웃

정답: B

설명: Reconciliation Timeout은 동기화 작업이 완료되기까지 허용되는 최대 시간입니다. 이 시간 내에 리소스가 정상 상태에 도달하지 못하면 동기화 실패로 처리됩니다.

Q32. "Infrastructure as Code(IaC)"와 GitOps의 관계는?

A) IaC는 GitOps와 무관한 개념이다 B) IaC는 GitOps의 기반이 되며, 인프라를 코드로 정의하여 Git에서 관리한다 C) GitOps는 IaC를 완전히 대체한다 D) IaC는 클라우드 환경에서만 사용 가능하다

정답: B

설명: Infrastructure as Code는 인프라를 코드로 정의하는 방법론으로, GitOps의 기반입니다. IaC로 정의된 인프라를 Git에 저장하고, GitOps 에이전트가 이를 자동으로 적용합니다.

Q33. GitOps 워크플로우에서 "Webhook"의 역할은?

A) 클러스터에 직접 배포를 실행한다 B) Git 저장소의 변경을 에이전트에 즉시 알려 빠른 동기화를 트리거한다 C) 컨테이너 이미지를 빌드한다 D) 보안 스캔을 실행한다

정답: B

설명: Webhook은 Git 저장소에 변경이 발생하면 GitOps 에이전트(ArgoCD, Flux)에 즉시 알림을 보내 폴링 간격을 기다리지 않고 빠르게 동기화를 시작할 수 있게 합니다.

Q34. GitOps에서 "Convergence"의 의미는?

A) 여러 Git 브랜치를 하나로 합치는 것 B) 실제 상태가 원하는 상태로 수렴하여 일치하는 것 C) 여러 마이크로서비스가 하나의 모놀리스로 통합되는 것 D) 분산 시스템이 하나의 데이터센터로 집중되는 것

정답: B

설명: Convergence는 GitOps 에이전트의 reconciliation을 통해 클러스터의 실제 상태가 Git에 정의된 원하는 상태로 점진적으로 수렴하여 최종적으로 일치하는 것을 의미합니다.

Q35. Pull 모델이 Push 모델보다 보안적으로 우수한 이유는?

A) Pull 모델이 더 빠르기 때문에 B) 클러스터 자격 증명을 외부 CI/CD 시스템에 노출할 필요가 없기 때문에 C) Pull 모델은 암호화를 사용하기 때문에 D) Push 모델은 Git을 사용하지 않기 때문에

정답: B

설명: Pull 모델에서는 클러스터 내부의 에이전트가 Git을 읽어와 적용하므로, 클러스터의 자격 증명(kubeconfig, token)을 외부 시스템(Jenkins, GitHub Actions 등)에 공유할 필요가 없습니다. 이는 공격 표면을 줄입니다.

Q36. GitOps에서 "Declarative Configuration"과 "Procedural Configuration"의 핵심 차이는?

A) 사용하는 프로그래밍 언어가 다르다 B) Declarative는 최종 상태를 정의하고, Procedural은 도달 단계를 정의한다 C) Declarative가 항상 더 빠르다 D) Procedural이 항상 더 안전하다

정답: B

설명: Declarative Configuration은 "시스템이 어떤 상태여야 하는가"를 정의하고, Procedural Configuration은 "어떤 단계를 실행해야 하는가"를 정의합니다. GitOps는 선언적 방식을 사용합니다.

Q37. GitOps에서 "Observability"가 Reconciliation과 어떻게 연결되는가?

A) 관련이 없다 B) Observability를 통해 실제 상태를 파악하여 Reconciliation의 기반 데이터를 제공한다 C) Observability가 Reconciliation을 대체한다 D) 둘 다 로그 분석에만 사용된다

정답: B

설명: Observability는 클러스터의 실제 상태를 파악하는 기능을 제공합니다. GitOps 에이전트는 이 정보를 기반으로 원하는 상태와의 차이를 감지하고 Reconciliation을 수행합니다.

Q38. "Eventual Consistency"가 GitOps에서 의미하는 것은?

A) 모든 변경이 즉시 적용된다 B) 시간이 지나면 클러스터 상태가 Git에 정의된 상태와 최종적으로 일치하게 된다 C) 데이터베이스의 트랜잭션 일관성 D) 네트워크 지연이 없는 상태

정답: B

설명: GitOps에서 Eventual Consistency는 Git에 변경이 커밋된 후 즉시 적용되지 않을 수 있지만, reconciliation loop을 통해 최종적으로 클러스터가 원하는 상태에 도달한다는 것을 의미합니다.

Q39. GitOps에서 "Separation of Environments"를 구현하는 방법으로 적절하지 않은 것은?

A) 환경별 Git 저장소 분리 B) 환경별 브랜치 분리 C) 환경별 디렉토리 분리 (Kustomize overlays) D) 모든 환경의 시크릿을 하나의 파일에 평문으로 저장

정답: D

설명: 모든 환경의 시크릿을 하나의 파일에 평문으로 저장하는 것은 보안상 매우 위험하며, GitOps의 환경 분리 원칙에도 위배됩니다. 환경 분리는 저장소, 브랜치, 또는 디렉토리 수준에서 구현합니다.

Q40. GitOps에서 "Automated Drift Remediation"의 올바른 동작은?

A) 드리프트 발생 시 관리자에게 이메일만 보낸다 B) 드리프트를 감지하면 자동으로 Git에 정의된 상태로 클러스터를 복원한다 C) 드리프트가 발생하면 클러스터를 완전히 재생성한다 D) 드리프트 발생 시 Git 저장소를 클러스터 상태로 업데이트한다

정답: B

설명: Automated Drift Remediation은 GitOps 에이전트가 드리프트를 감지했을 때 자동으로 Git에 정의된 원하는 상태로 클러스터를 복원하는 기능입니다. Git이 항상 진실의 원천이므로 클러스터를 Git에 맞추는 것이 올바른 방향입니다.

Q41. ArgoCD Application Controller의 주요 역할은?

A) Git 저장소를 클론하고 매니페스트를 생성한다 B) 실행 중인 애플리케이션의 상태를 모니터링하고 원하는 상태와 비교한다 C) 사용자 인증을 처리한다 D) 웹 UI를 제공한다

정답: B

설명: Application Controller는 ArgoCD의 핵심 컴포넌트로, Kubernetes 클러스터에서 실행 중인 애플리케이션의 상태를 지속적으로 모니터링하고 Git에 정의된 원하는 상태와 비교합니다.

Q42. ArgoCD의 Repository Server의 역할은?

A) 클러스터의 리소스 상태를 캐싱한다 B) Git 저장소를 클론하고 Helm, Kustomize 등으로 Kubernetes 매니페스트를 생성한다 C) RBAC 정책을 관리한다 D) 알림을 외부 시스템에 전달한다

정답: B

설명: Repository Server(repo-server)는 Git 저장소를 클론하고, 경로에 있는 매니페스트를 Helm, Kustomize, plain YAML, 또는 Config Management Plugin 등을 사용하여 최종 Kubernetes 리소스로 렌더링합니다.

Q43. ArgoCD에서 Redis의 역할은?

A) 사용자 세션과 매니페스트 캐시를 저장한다 B) Git 저장소의 백업을 유지한다 C) 컨테이너 이미지를 캐싱한다 D) SSL 인증서를 관리한다

정답: A

설명: ArgoCD에서 Redis는 매니페스트 생성 결과의 캐싱과 사용자 세션 데이터를 저장합니다. 이를 통해 Repository Server의 부하를 줄이고 응답 속도를 향상시킵니다.

Q44. ArgoCD에서 Dex의 역할은?

A) Git 저장소에 대한 접근 권한을 관리한다 B) SSO(Single Sign-On)를 위한 OIDC/SAML/LDAP 인증을 제공한다 C) Kubernetes 리소스의 상태를 확인한다 D) 매니페스트를 렌더링한다

정답: B

설명: Dex는 ArgoCD에 통합된 OIDC(OpenID Connect) Identity Provider로, SAML, LDAP, GitHub, Google 등 다양한 외부 인증 시스템과의 SSO를 지원합니다.

Q45. Flux의 source-controller가 지원하는 소스 유형에 해당하지 않는 것은?

A) GitRepository B) HelmRepository C) OCIRepository D) DockerRepository

정답: D

설명: Flux의 source-controller는 GitRepository, HelmRepository, OCIRepository, Bucket 등의 소스 유형을 지원합니다. DockerRepository는 Flux에서 사용하는 리소스 타입이 아닙니다.

Q46. Flux의 kustomize-controller 역할은?

A) Helm 차트를 배포한다 B) Kustomize 오버레이를 적용하고 Kubernetes 리소스를 클러스터에 배포한다 C) Git 저장소에서 소스를 가져온다 D) 외부 시스템에 알림을 보낸다

정답: B

설명: kustomize-controller는 source-controller가 가져온 소스에 Kustomize 오버레이를 적용하여 최종 매니페스트를 생성하고 클러스터에 배포합니다. plain YAML도 처리할 수 있습니다.

Q47. Flux의 helm-controller가 사용하는 CRD(Custom Resource Definition)는?

A) HelmChart B) HelmRelease C) HelmDeployment D) HelmApplication

정답: B

설명: Flux의 helm-controller는 HelmRelease CRD를 사용하여 Helm 차트의 릴리스를 선언적으로 관리합니다. HelmRelease에서 차트 소스, 값(values), 의존성 등을 정의합니다.

Q48. Flux의 notification-controller의 역할은?

A) 클러스터 내부의 Pod 간 통신을 관리한다 B) 외부 시스템(Slack, Teams, Webhook 등)에 이벤트 알림을 전달한다 C) DNS 기록을 업데이트한다 D) 인증서를 자동 갱신한다

정답: B

설명: notification-controller는 Flux 이벤트(동기화 성공/실패, 드리프트 감지 등)를 Slack, Microsoft Teams, Webhook 등 외부 시스템에 알림으로 전달합니다.

Q49. ArgoCD Application의 Sync Status가 "OutOfSync"인 경우 의미하는 것은?

A) ArgoCD 서버에 오류가 발생했다 B) Git에 정의된 상태와 클러스터의 실제 상태가 다르다 C) 네트워크 연결이 끊겼다 D) 인증 토큰이 만료되었다

정답: B

설명: OutOfSync는 Git 저장소에 정의된 원하는 상태와 클러스터에서 실행 중인 실제 상태 간에 차이가 있음을 나타냅니다. 수동 또는 자동 Sync를 통해 일치시킬 수 있습니다.

Q50. ArgoCD에서 "Health Status"가 "Degraded"를 나타내는 경우는?

A) 모든 Pod가 정상 실행 중 B) 일부 리소스가 정상이 아닌 상태(예: Pod CrashLoopBackOff) C) Git 저장소에 접근할 수 없음 D) ArgoCD UI에 로그인 오류 발생

정답: B

설명: Health Status가 Degraded인 경우 애플리케이션의 일부 리소스가 비정상 상태임을 나타냅니다. 예를 들어 Pod가 CrashLoopBackOff이거나 Deployment의 replica가 부족한 경우 해당됩니다.

Q51. Helm의 역할로 올바른 것은?

A) 컨테이너 런타임을 관리한다 B) Kubernetes 애플리케이션을 패키지로 템플릿화하고 배포한다 C) 네트워크 정책을 관리한다 D) 클러스터 인증을 처리한다

정답: B

설명: Helm은 Kubernetes의 패키지 매니저로, 차트(Chart)라는 패키지 형태로 Kubernetes 리소스를 템플릿화하고 values를 통해 커스터마이징하여 배포합니다.

Q52. Kustomize의 핵심 개념으로 올바른 것은?

A) 템플릿 엔진을 사용하여 YAML을 생성한다 B) 베이스 매니페스트에 패치와 오버레이를 적용하여 환경별 설정을 생성한다 C) 바이너리 패키지로 애플리케이션을 배포한다 D) 컨테이너 이미지를 빌드한다

정답: B

설명: Kustomize는 템플릿 없이(template-free) 베이스 매니페스트에 패치(patches)와 오버레이(overlays)를 적용하여 환경별 커스터마이징을 수행합니다. kustomization.yaml 파일에서 변형을 정의합니다.

Q53. ArgoCD에서 Application을 생성할 때 "Auto-Sync" 옵션의 의미는?

A) 매니페스트 렌더링을 자동화한다 B) Git 저장소에 변경이 감지되면 자동으로 클러스터에 동기화한다 C) 이미지 태그를 자동으로 업데이트한다 D) PR을 자동으로 병합한다

정답: B

설명: Auto-Sync를 활성화하면 ArgoCD가 Git 저장소에서 변경을 감지했을 때 수동 개입 없이 자동으로 클러스터에 동기화합니다. 비활성화 시 수동으로 Sync 버튼을 클릭하거나 CLI를 사용해야 합니다.

Q54. ArgoCD의 "Prune" 옵션이 하는 일은?

A) 오래된 Git 브랜치를 삭제한다 B) Git에서 제거된 리소스를 클러스터에서도 자동으로 삭제한다 C) 사용하지 않는 컨테이너 이미지를 정리한다 D) 만료된 인증서를 제거한다

정답: B

설명: Prune은 Git 저장소에서 리소스 정의가 제거되었을 때, 클러스터에 남아있는 해당 리소스를 자동으로 삭제하는 옵션입니다. Auto-Sync와 함께 사용하면 Git의 상태와 클러스터를 완전히 일치시킬 수 있습니다.

Q55. ArgoCD의 AppProject 리소스의 역할은?

A) 프로젝트의 소스 코드를 관리한다 B) 애플리케이션이 배포할 수 있는 소스 저장소, 대상 클러스터, 네임스페이스를 제한한다 C) CI/CD 파이프라인을 정의한다 D) 모니터링 대시보드를 구성한다

정답: B

설명: AppProject는 ArgoCD의 RBAC 단위로, 해당 프로젝트에 속한 Application이 접근할 수 있는 Git 저장소, 대상 클러스터, 네임스페이스, 생성 가능한 리소스 종류 등을 제한합니다.

Q56. Flux에서 "Reconciliation Interval"을 설정하는 방법은?

A) Flux CLI 플래그로 전역 설정 B) 각 리소스(GitRepository, Kustomization 등)의 spec.interval 필드로 개별 설정 C) Kubernetes ConfigMap으로 설정 D) 환경 변수로 설정

정답: B

설명: Flux에서는 각 리소스(GitRepository, Kustomization, HelmRelease 등)의 spec.interval 필드에서 개별적으로 reconciliation 주기를 설정합니다. 이를 통해 리소스별로 다른 주기를 적용할 수 있습니다.

Q57. ArgoCD CLI에서 애플리케이션을 동기화하는 명령은?

A) argocd app deploy APP_NAME B) argocd app sync APP_NAME C) argocd app apply APP_NAME D) argocd app push APP_NAME

정답: B

설명: argocd app sync APP_NAME 명령으로 특정 애플리케이션을 Git 저장소의 최신 상태와 동기화할 수 있습니다.

Q58. ArgoCD에서 "Self-Heal" 옵션의 의미는?

A) ArgoCD 자체가 장애에서 자동 복구한다 B) 클러스터에서 수동 변경이 발생하면 자동으로 Git의 상태로 되돌린다 C) Git 저장소의 충돌을 자동으로 해결한다 D) 만료된 시크릿을 자동으로 갱신한다

정답: B

설명: Self-Heal은 Auto-Sync의 하위 옵션으로, 클러스터에서 수동 변경(kubectl edit 등)이 감지되면 자동으로 Git에 정의된 상태로 되돌리는 기능입니다. 드리프트를 즉시 교정합니다.

Q59. Flux의 Bootstrap 과정에서 수행되는 작업은?

A) Kubernetes 클러스터를 처음부터 설치한다 B) Flux 컴포넌트를 클러스터에 설치하고, Git 저장소에 Flux 설정을 커밋한다 C) Helm 차트 저장소를 초기화한다 D) 컨테이너 레지스트리를 설정한다

정답: B

설명: Flux Bootstrap은 Flux 컨트롤러들을 클러스터에 설치하고, Git 저장소에 Flux 설정 파일(gotk-components.yaml 등)을 커밋합니다. 이후 Flux는 이 저장소를 통해 스스로를 관리합니다.

Q60. ArgoCD와 Flux의 공통점은?

A) 동일한 프로그래밍 언어로 작성되었다 B) 둘 다 CNCF 프로젝트이며, Pull 기반 GitOps 에이전트이다 C) 동일한 CRD를 사용한다 D) 동일한 웹 UI를 제공한다

정답: B

설명: ArgoCD와 Flux 모두 CNCF Graduated 프로젝트이며, Pull 기반 GitOps 모델을 구현한 에이전트입니다. 둘 다 Go 언어로 작성되었지만 아키텍처와 CRD, UI 등은 다릅니다.

Q61. ArgoCD에서 "Config Management Plugin"의 용도는?

A) RBAC 정책을 관리한다 B) 기본 지원되지 않는 도구(jsonnet, cue 등)로 매니페스트를 생성한다 C) 클러스터 네트워크를 구성한다 D) 사용자 계정을 관리한다

정답: B

설명: Config Management Plugin(CMP)은 ArgoCD가 기본적으로 지원하지 않는 매니페스트 생성 도구(Jsonnet, CUE, KCL 등)를 플러그인 형태로 추가하여 사용할 수 있게 합니다.

Q62. ArgoCD의 "Resource Hooks"에서 PreSync 훅의 역할은?

A) Sync 완료 후 정리 작업을 실행한다 B) 실제 동기화 작업 이전에 데이터베이스 마이그레이션 등의 사전 작업을 실행한다 C) Sync 실패 시 알림을 보낸다 D) Git 저장소를 사전 검증한다

정답: B

설명: PreSync Hook은 실제 동기화(Sync) 이전에 실행되는 리소스(Job, Pod 등)입니다. 데이터베이스 스키마 마이그레이션, 설정 검증 등 동기화 전에 필요한 사전 작업에 사용됩니다.

Q63. Kustomize의 "strategic merge patch"와 "JSON 6902 patch"의 차이는?

A) 차이가 없으며 동일하다 B) Strategic merge patch는 부분 덮어쓰기, JSON 6902는 명시적인 add/remove/replace 연산을 지정한다 C) JSON 6902가 항상 더 빠르다 D) Strategic merge patch는 Helm에서만 사용한다

정답: B

설명: Strategic merge patch는 기존 리소스에 부분적으로 필드를 덮어쓰는 방식이고, JSON 6902 patch는 add, remove, replace, move, copy 등의 명시적 연산을 경로로 지정합니다.

Q64. ArgoCD에서 "Resource Tracking"의 두 가지 방식은?

A) Label과 Finalizer B) Annotation과 Label C) ConfigMap과 Secret D) CRD와 Webhook

정답: B

설명: ArgoCD는 Annotation 방식(기본값)과 Label 방식으로 자신이 관리하는 리소스를 추적합니다. Annotation 방식은 argocd.argoproj.io/tracking-id를, Label 방식은 app.kubernetes.io/instance를 사용합니다.

Domain 4: GitOps Patterns (Q65-Q80)

Q65. "App-of-Apps" 패턴의 목적은?

A) 하나의 애플리케이션을 여러 클러스터에 배포 B) 루트 Application이 하위 Application들을 선언적으로 관리하여 대규모 배포를 구조화 C) 단일 Git 저장소에서 모든 애플리케이션을 관리 D) 애플리케이션 간의 네트워크 통신을 설정

정답: B

설명: App-of-Apps 패턴에서는 루트(부모) Application이 하위(자식) Application 리소스들을 포함하고, ArgoCD가 이를 재귀적으로 동기화합니다. 이를 통해 대규모 마이크로서비스 배포를 체계적으로 관리합니다.

Q66. ArgoCD ApplicationSet의 "Cluster Generator"는 무엇을 하는가?

A) 새로운 Kubernetes 클러스터를 생성한다 B) ArgoCD에 등록된 클러스터 목록을 기반으로 각 클러스터에 Application을 자동 생성한다 C) 클러스터의 리소스 사용량을 모니터링한다 D) 클러스터 인증서를 관리한다

정답: B

설명: Cluster Generator는 ArgoCD에 등록된 클러스터 목록을 순회하며, 각 클러스터에 대해 Application을 자동으로 생성합니다. 새 클러스터가 등록되면 자동으로 애플리케이션이 생성됩니다.

Q67. ApplicationSet의 "Git Generator - Directory" 방식의 작동 원리는?

A) Git 커밋 이력을 기반으로 Application을 생성한다 B) Git 저장소의 디렉토리 구조를 스캔하여 각 디렉토리에 대응하는 Application을 자동 생성한다 C) Git 브랜치별로 Application을 생성한다 D) Git 태그를 기반으로 Application 버전을 관리한다

정답: B

설명: Git Generator - Directory는 Git 저장소의 지정 경로 아래 디렉토리를 스캔하여, 각 디렉토리에 대응하는 Application을 자동 생성합니다. 새 디렉토리가 추가되면 자동으로 Application이 생성됩니다.

Q68. ApplicationSet의 "Matrix Generator"의 역할은?

A) 행렬 연산으로 리소스를 최적화한다 B) 두 개의 Generator를 결합하여 조합(카테시안 곱)으로 Application을 생성한다 C) 매니페스트의 문법을 검증한다 D) 클러스터 간 로드 밸런싱을 수행한다

정답: B

설명: Matrix Generator는 두 개의 하위 Generator를 조합하여 카테시안 곱(Cartesian product)으로 Application을 생성합니다. 예를 들어 Cluster Generator와 Git Generator를 결합하면 (클러스터 x 디렉토리)의 모든 조합에 대해 Application을 만듭니다.

Q69. Multi-cluster GitOps 구성에서 권장되는 ArgoCD 아키텍처는?

A) 각 클러스터에 독립적인 ArgoCD를 설치 B) 허브(Hub) 클러스터의 ArgoCD가 여러 스포크(Spoke) 클러스터를 관리 C) 모든 클러스터가 하나의 Git 브랜치를 공유 D) 클러스터 간 직접 API 통신으로 동기화

정답: B

설명: Hub-Spoke 모델에서 중앙 허브 클러스터의 ArgoCD가 여러 스포크 클러스터를 관리합니다. ArgoCD에 원격 클러스터를 등록하면 해당 클러스터로 Application을 배포할 수 있습니다.

Q70. Progressive Delivery에서 "Canary Deployment"의 GitOps 구현 방법은?

A) Git에서 직접 트래픽 비율을 수정 B) Argo Rollouts 또는 Flagger를 사용하여 단계적으로 트래픽을 전환 C) 모든 Pod를 동시에 새 버전으로 교체 D) Blue-Green 배포만 지원

정답: B

설명: Canary Deployment를 GitOps로 구현할 때는 Argo Rollouts이나 Flagger 같은 Progressive Delivery 도구를 사용합니다. 이들은 트래픽 비율을 단계적으로 조절하며 메트릭을 분석하여 자동 승격/롤백을 수행합니다.

Q71. Sealed Secrets의 작동 원리는?

A) Kubernetes Secret을 Base64로만 인코딩한다 B) 공개키로 시크릿을 암호화하여 Git에 안전하게 저장하고, 클러스터 내 컨트롤러가 비밀키로 복호화한다 C) 시크릿을 외부 볼트에 저장하고 참조만 Git에 보관한다 D) 시크릿 파일을 압축하여 Git에 저장한다

정답: B

설명: Sealed Secrets는 비대칭 암호화를 사용합니다. 공개키(public key)로 시크릿을 암호화하여 SealedSecret 리소스를 만들어 Git에 안전하게 저장하고, 클러스터의 Sealed Secrets Controller가 비밀키(private key)로 복호화하여 일반 Secret으로 변환합니다.

Q72. External Secrets Operator(ESO)의 작동 방식은?

A) 시크릿을 Git 저장소에 암호화하여 저장한다 B) 외부 시크릿 관리 시스템(Vault, AWS SM 등)에서 시크릿을 가져와 Kubernetes Secret으로 동기화한다 C) Kubernetes Secret을 외부 시스템으로 내보낸다 D) 시크릿 값을 환경 변수로 주입한다

정답: B

설명: External Secrets Operator는 ExternalSecret CRD를 통해 외부 시크릿 관리 시스템(HashiCorp Vault, AWS Secrets Manager, Azure Key Vault, GCP Secret Manager 등)에서 시크릿을 가져와 Kubernetes Secret으로 자동 동기화합니다.

Q73. SOPS(Secrets OPerationS)를 GitOps에서 사용하는 방법은?

A) SOPS가 클러스터에서 시크릿을 직접 관리한다 B) SOPS로 YAML/JSON의 value를 암호화하여 Git에 저장하고, CI/CD 또는 GitOps 도구에서 복호화한다 C) SOPS가 Kubernetes API를 대체한다 D) SOPS로 컨테이너 이미지를 암호화한다

정답: B

설명: SOPS는 YAML이나 JSON 파일의 값(value)만 선택적으로 암호화하여 Git에 안전하게 저장합니다. 키(key)는 평문으로 유지되어 리뷰가 가능하며, Flux의 Kustomize Controller는 SOPS 복호화를 네이티브로 지원합니다.

Q74. "GitOps Repository Structure"에서 Monorepo 방식의 장단점은?

A) 장점: 단일 저장소에서 모든 앱을 관리하여 일관성 확보 / 단점: 대규모 시 권한 관리 복잡 B) 장점: 팀별 완전한 격리 / 단점: 저장소 간 의존성 관리 어려움 C) Monorepo는 GitOps에 적합하지 않다 D) 장단점이 없으며 모든 상황에서 최적이다

정답: A

설명: Monorepo는 모든 애플리케이션 배포 설정을 단일 저장소에서 관리합니다. 장점은 일관성과 단순한 의존성 관리이고, 단점은 대규모 조직에서 세밀한 RBAC 적용과 CI/CD 파이프라인 관리가 복잡해지는 것입니다.

Q75. ApplicationSet의 "PullRequest Generator"는 어떤 용도로 사용되는가?

A) PR을 자동으로 병합한다 B) 열려있는 Pull Request마다 임시 프리뷰 환경을 자동 생성한다 C) PR의 코드 리뷰를 자동화한다 D) PR에 보안 스캔 결과를 추가한다

정답: B

설명: PullRequest Generator는 GitHub, GitLab 등의 열려있는 PR을 감지하여 각 PR에 대응하는 임시 Application(프리뷰 환경)을 자동 생성합니다. PR이 닫히면 해당 환경도 자동 삭제됩니다.

Q76. "Drift Detection" 알림을 구성하려면 어떤 도구를 사용하는가?

A) ArgoCD Notifications 또는 Flux notification-controller B) Kubernetes Event만으로 충분하다 C) 별도의 cron job으로 구현해야 한다 D) 모니터링 도구(Prometheus)만 사용한다

정답: A

설명: ArgoCD Notifications(또는 argocd-notifications-controller)와 Flux의 notification-controller를 사용하여 드리프트 감지, 동기화 상태 변경 등의 이벤트를 Slack, Teams, PagerDuty 등으로 알림을 보낼 수 있습니다.

Q77. GitOps에서 "Blue-Green Deployment"를 구현할 때 고려해야 할 사항은?

A) 단일 환경만 필요하다 B) 두 환경(Blue, Green)의 리소스가 필요하며, 트래픽 전환 메커니즘이 필수적이다 C) 롤백이 불가능하다 D) 데이터베이스 마이그레이션이 자동으로 처리된다

정답: B

설명: Blue-Green 배포에서는 현재 버전(Blue)과 새 버전(Green) 두 환경을 동시에 운영하므로 두 배의 리소스가 필요합니다. Service나 Ingress를 통한 트래픽 전환 메커니즘이 필수적이며, Git에서 이를 선언적으로 관리합니다.

Q78. ApplicationSet의 "Merge Generator"가 필요한 상황은?

A) Git 브랜치를 병합할 때 B) 여러 Generator의 결과를 공통 키로 합쳐 특정 조합에만 오버라이드를 적용할 때 C) 여러 Helm 차트를 합칠 때 D) 매니페스트를 하나의 파일로 합칠 때

정답: B

설명: Merge Generator는 여러 Generator의 결과를 공통 키 필드를 기준으로 병합합니다. 기본 Generator로 전체 목록을 생성한 후, 보조 Generator로 특정 항목에만 추가 파라미터를 오버라이드할 때 유용합니다.

Q79. GitOps에서 "Secrets Management"의 핵심 원칙은?

A) 시크릿을 Git에 평문으로 저장해도 된다 B) 시크릿은 암호화하거나 외부 참조만 Git에 저장하여, 평문 시크릿이 Git에 노출되지 않도록 한다 C) 시크릿은 항상 환경 변수로만 관리한다 D) 시크릿 관리는 GitOps의 범위 밖이다

정답: B

설명: GitOps에서 시크릿은 절대 평문으로 Git에 저장하면 안 됩니다. Sealed Secrets으로 암호화하거나, External Secrets Operator로 외부 시크릿 저장소의 참조만 Git에 저장하는 것이 핵심 원칙입니다.

Q80. GitOps 도입 시 조직에서 가장 먼저 해야 할 일은?

A) 즉시 ArgoCD를 프로덕션에 설치한다 B) 기존 인프라와 애플리케이션 설정을 선언적 코드로 전환하고, Git 저장소 전략을 수립한다 C) 모든 개발자에게 kubectl 접근 권한을 부여한다 D) 모니터링 시스템을 먼저 완전히 구축한다

정답: B

설명: GitOps를 도입하려면 먼저 기존 인프라와 애플리케이션 설정을 선언적 코드(IaC, Kubernetes manifests)로 전환하고, Git 저장소 구조(monorepo vs polyrepo), 브랜치 전략, 환경 관리 방안을 수립해야 합니다.

6. 마무리

CGOA 시험은 GitOps의 이론적 이해도를 평가하는 시험입니다. 위 80문제를 통해 GitOps의 핵심 원칙, ArgoCD와 Flux의 아키텍처, 다양한 GitOps 패턴과 시크릿 관리 전략을 종합적으로 학습하시기 바랍니다.

시험 합격 팁:

  1. OpenGitOps 4대 원칙을 완벽히 이해하세요
  2. Pull vs Push 모델의 차이와 보안 이점을 숙지하세요
  3. ArgoCD와 Flux의 핵심 컴포넌트 역할을 구분하세요
  4. ApplicationSet Generator 유형별 특징을 파악하세요
  5. 시크릿 관리 도구(Sealed Secrets, ESO, SOPS)의 차이를 이해하세요

Golden Kubestronaut를 향한 여정에서 CGOA 합격을 응원합니다!

[Golden Kubestronaut] CGOA Practice Exam 80 Questions - Certified GitOps Associate

1. CGOA Exam Overview

CGOA (Certified GitOps Associate) is an entry-level GitOps certification administered by CNCF.

ItemDetails
Duration90 minutes
Questions60 (MCQ)
Passing Score75% (45+ correct)
FormatOnline proctored
Validity3 years
CostUSD 250

2. Golden Kubestronaut Program

Golden Kubestronaut is the highest-tier title awarded to individuals who pass all core Kubestronaut certifications plus additional ones including CGOA and KCSA.

CertificationTypePassing Score
KCNATheory MCQ75%
KCSATheory MCQ75%
CGOATheory MCQ75%
CKAPractical66%
CKADPractical66%
CKSPractical67%

3. Domain Weights

DomainWeight
GitOps Terminology20%
GitOps Principles30%
Related Tools30%
GitOps Patterns20%

4. Key Concepts Summary

GitOps Principles

  • Declarative: Define the desired state of the system declaratively
  • Versioned and Immutable: All state stored in Git with immutability and version history
  • Pulled Automatically: Approved changes are automatically applied to the system
  • Continuously Reconciled: Agents continuously compare actual state to desired state and correct drift

ArgoCD Architecture

  • API Server: gRPC/REST interface for Web UI, CLI, and CI/CD systems
  • Repository Server: Clones Git repositories and generates manifests
  • Application Controller: Monitors running application state and compares to desired state
  • Redis: Manifest caching and state storage
  • Dex: OIDC provider for SSO

Flux Architecture

  • source-controller: Fetches artifacts from Git, Helm, and OCI repositories
  • kustomize-controller: Applies Kustomize overlays and deploys resources
  • helm-controller: Manages Helm chart releases
  • notification-controller: Delivers events to external systems

5. Practice Questions (80 Questions)

Domain 1: GitOps Terminology (Q1-Q16)

Q1. What does "Single Source of Truth" mean in GitOps?

A) A central database accessible only to operations teams B) Declarative configurations stored in a Git repository serve as the only source of truth for the system C) The current cluster state stored in the Kubernetes API server D) The final build artifact from the CI/CD pipeline

Answer: B

Explanation: In GitOps, Single Source of Truth means the declarative configuration files stored in a Git repository. All infrastructure and application state is managed in Git, which serves as the sole reference point for the desired state the system should reach.

Q2. What term describes the difference between "Desired State" and "Actual State" in GitOps?

A) Deviation B) Drift C) Delta D) Divergence

Answer: B

Explanation: Drift is the core GitOps term that describes the difference between the Desired State defined in a Git repository and the Actual State running in the cluster.

Q3. Which statement correctly describes the declarative approach?

A) It describes the final state the system should reach B) It describes step-by-step commands to reach a state C) It manually creates each resource in order D) It configures infrastructure procedurally through scripts

Answer: A

Explanation: The declarative approach describes "what" is desired. In contrast, the imperative approach describes "how" to get there step by step. GitOps uses the declarative approach as a core principle.

Q4. Which is an example of the imperative approach?

A) Defining a Deployment with a Kubernetes YAML manifest B) Running kubectl create deployment nginx --image=nginx C) Defining an application package with a Helm chart D) Managing environment-specific configs with Kustomize overlays

Answer: B

Explanation: The kubectl create command directly creates a resource, which is an imperative approach. Defining resources in YAML files and applying them with kubectl apply is declarative, and Helm and Kustomize are also declarative tools.

Q5. Which is NOT one of the four core principles of OpenGitOps?

A) Declarative B) Versioned and Immutable C) Manual Approval Required D) Continuously Reconciled

Answer: C

Explanation: The four OpenGitOps principles are (1) Declarative, (2) Versioned and Immutable, (3) Pulled Automatically, and (4) Continuously Reconciled. Manual approval can be added to workflows but is not a core principle.

Q6. What does "Reconciliation" mean in GitOps?

A) The process of merging branches in a Git repository B) The process of comparing and aligning desired state with actual state C) The process of running tests in a CI pipeline D) The process of building and pushing container images to a registry

Answer: B

Explanation: Reconciliation is the core mechanism where a GitOps agent periodically compares the desired state defined in Git with the actual state in the cluster, and if differences exist, converges the actual state toward the desired state.

Q7. When is "Drift Detection" needed?

A) When deploying a new application for the first time B) When someone modifies a resource directly in the cluster using kubectl edit C) When a new commit is pushed to Git D) When the CI pipeline builds a new image

Answer: B

Explanation: Drift Detection detects differences between the state defined in Git and the actual cluster state. A typical drift scenario occurs when someone makes direct changes to the cluster via kubectl or other tools.

Q8. What best describes the role of a Git repository in GitOps?

A) A registry that stores container images B) A declarative store for the desired state of infrastructure and applications C) A place that stores CI/CD pipeline execution logs D) A data source that collects monitoring metrics

Answer: B

Explanation: In GitOps, the Git repository serves as the Single Source of Truth, declaratively storing the desired state of infrastructure and applications.

Q9. What correctly describes the concept of a "State Store"?

A) A database that stores runtime data for applications B) A version control system that stores declarations of desired state C) A log system that stores cluster events D) A vault system that encrypts and stores secrets

Answer: B

Explanation: In GitOps, a State Store is a version control system that declaratively stores the desired state of a system. Git is the most representative State Store, providing immutable history and audit trails.

Q10. What is the role of a "Feedback Loop" in GitOps?

A) Sending code review notifications to developers B) Detecting and alerting when actual state deviates from desired state C) Reporting CI pipeline test results D) Adding automated comments to Git commits

Answer: B

Explanation: A Feedback Loop is the mechanism by which a GitOps agent observes the actual cluster state and detects differences from the desired state, alerting operators so they can respond immediately to drift.

Q11. What does "Immutable Infrastructure" mean in GitOps?

A) Infrastructure can never be changed once deployed B) When changes are needed, existing infrastructure is replaced rather than modified C) All infrastructure configurations are hardcoded D) A deployment method only possible on physical servers

Answer: B

Explanation: Immutable Infrastructure is a pattern where existing infrastructure is not modified (mutated) but rather replaced by deploying a new version. This prevents configuration drift and facilitates rollbacks.

Q12. What is the core problem GitOps aims to solve?

A) Optimizing container image build speed B) Consistency, auditability, and automation of infrastructure and application deployments C) Reducing source code compilation time D) Optimizing network bandwidth

Answer: B

Explanation: GitOps aims to integrate infrastructure and application deployments into Git-based workflows to ensure consistency, auditability, and automation.

Q13. What role does a "Software Agent" perform in GitOps?

A) Compiles code and runs tests B) Applies the state from Git repositories to the cluster and remediates drift C) Automates developer code reviews D) Builds and pushes container images

Answer: B

Explanation: GitOps Software Agents (such as ArgoCD and Flux) apply the desired state declared in Git repositories to clusters and continuously detect and remediate drift.

Q14. How does "Observability" relate to GitOps?

A) GitOps replaces monitoring tools B) It is essential for observing actual state to compare with desired state C) It only refers to log collection and metric analysis D) It is only used for measuring CI/CD pipeline performance

Answer: B

Explanation: In GitOps, Observability plays a key role in observing the actual state of a cluster and identifying differences from the desired state. It forms the basis for drift detection and automatic remediation.

Q15. Which best explains "Desired State" in GitOps terminology?

A) The state of all resources currently running in the cluster B) The target state declaratively defined in a Git repository that the system should reach C) Server configurations manually set by operations teams D) Metric values displayed on a monitoring dashboard

Answer: B

Explanation: Desired State is the target state of the system declaratively defined in a Git repository. GitOps agents continuously reconcile the cluster based on this state.

Q16. What is the relationship between "Configuration as Code" and GitOps?

A) They are completely separate concepts B) Configuration as Code is a prerequisite for GitOps, managing all configurations as code C) GitOps is a new methodology that replaces Configuration as Code D) Configuration as Code applies only to application code

Answer: B

Explanation: Configuration as Code manages infrastructure and application configurations as code (YAML, JSON, HCL, etc.) and is a prerequisite for implementing GitOps. It enables Git version control and automation.

Domain 2: GitOps Principles (Q17-Q40)

Q17. What characterizes the pull-based deployment model?

A) A CI server sends deployment commands directly to the cluster B) An agent inside the cluster pulls changes from the Git repository and applies them C) Developers deploy resources directly using kubectl D) An external script connects to servers via SSH to deploy

Answer: B

Explanation: In the pull model, an agent running inside the cluster (ArgoCD, Flux) periodically checks the Git repository and applies changes to the cluster. This eliminates the need for external cluster access, providing a security advantage.

Q18. What is the security disadvantage of the push-based deployment model?

A) Read access to the Git repository is required B) The CI/CD system must hold direct access credentials to the cluster C) Container image registry access is required D) The code review process becomes complex

Answer: B

Explanation: In the push model, CI/CD systems like Jenkins or GitHub Actions must hold credentials such as kubeconfig or ServiceAccount tokens to access the cluster directly. This widens the attack surface.

Q19. What cannot the GitOps Reconciliation Loop detect?

A) A Deployment replica count changed directly in the cluster B) A ConfigMap change newly committed to the Git repository C) Uncommitted code changes being tested on a developer's local machine D) A new Helm chart version pushed to the Git repository

Answer: C

Explanation: The Reconciliation Loop compares the state committed in the Git repository with the actual cluster state. Changes on a developer's local machine that have not been committed to Git are not a detection target.

Q20. What does "Self-Healing" mean in GitOps?

A) Servers automatically recovering from physical failures B) Automatically restoring to the desired state when actual state deviates C) Automatically fixing bugs in application code D) Automatically routing around network failures

Answer: B

Explanation: Self-Healing is the mechanism where a GitOps agent detects drift and automatically restores the cluster to the desired state defined in Git. For example, if someone manually changes replica counts, the agent detects this and reverts to the Git-defined value.

Q21. What characterizes the "Environment per Branch" Git branching pattern?

A) All environments are managed from a single branch B) Separate branches exist for each environment (dev, staging, prod) C) Only tags are used without branches D) Feature branches deploy directly to production

Answer: B

Explanation: In the Environment per Branch pattern, dedicated branches exist for each environment (main, staging, production). When changes are merged to a branch, the GitOps agent automatically deploys to the corresponding environment.

Q22. What is the recommended way to perform rollbacks in GitOps?

A) Set the previous image version directly using kubectl B) Create a new commit by reverting to a previous commit in Git C) Restore an etcd backup of the cluster D) Manually re-run the CI/CD pipeline

Answer: B

Explanation: In GitOps, rollbacks are recommended by reverting to a previous commit in Git. This preserves the change history, and the GitOps agent automatically reconciles the cluster to the previous state.

Q23. What is the advantage of using "Trunk-Based Development" with GitOps?

A) More long-running branches reduce merge conflicts B) Short-lived branches and frequent integration enable fast feedback and deployment C) Developers can commit directly to the main branch without code review D) Multiple environments can be managed with a single branch only

Answer: B

Explanation: Trunk-Based Development uses short-lived feature branches and frequent integration into main. Combined with GitOps, it enables frequent deployments and fast feedback loops.

Q24. What role does the "Pull Request (PR)" workflow play in GitOps?

A) It automatically builds container images B) It provides review, approval, and audit trails for changes C) It directly executes deployments to the cluster D) It automatically provisions test environments

Answer: B

Explanation: Pull Requests serve as a critical gate in GitOps workflows, providing code review, team approval, automated validation (CI), and audit trails for change history.

Q25. Why should repositories be separated following the Separation of Concerns principle in GitOps?

A) Due to Git repository capacity limitations B) Because application source code and deployment configurations have different change cycles and permissions C) Because Git does not handle binary files well D) To increase CI/CD pipeline speed

Answer: B

Explanation: Application source code and deployment configurations (manifests) have different change cycles, access permissions, and review processes. Separating them enables independent management and RBAC application.

Q26. Why is "Idempotency" important in GitOps?

A) To increase deployment speed B) To guarantee that applying the same declarative state multiple times produces identical results C) To maintain consistency of Git commit messages D) To reduce container image sizes

Answer: B

Explanation: Idempotency is the property where performing the same operation multiple times produces identical results. Since the GitOps reconciliation loop repeatedly applies state, idempotency is essential to guarantee consistent results each time.

Q27. What is the difference between "Continuous Reconciliation" and "CI/CD"?

A) There is no difference; they are the same concept B) CI/CD is event-triggered, while Continuous Reconciliation continuously compares and adjusts state C) Only CI/CD provides automation D) Continuous Reconciliation only includes the build phase

Answer: B

Explanation: CI/CD is triggered by events such as commits or merges to perform build-test-deploy. Continuous Reconciliation continuously compares and adjusts desired and actual state regardless of events.

Q28. Why is an "Audit Trail" automatically provided in GitOps?

A) Because a separate audit log system was built B) Because all changes are recorded as Git commits tracking who, when, and what was changed C) Because Kubernetes events are permanently stored D) Because CI/CD pipeline logs are archived

Answer: B

Explanation: In GitOps, all infrastructure changes are made through Git commits, so commit history naturally serves as an audit trail. Committer, timestamp, change content, and PR review records are all preserved.

Q29. What is the recommended approach for applying GitOps in a multi-tenancy environment?

A) All teams share a single repository and namespace B) Separate repositories and namespaces per team, with RBAC to restrict access C) Each team operates an independent Kubernetes cluster D) Manual deployment without GitOps

Answer: B

Explanation: In multi-tenancy environments, Git repositories and namespaces are separated per team, and RBAC is applied through ArgoCD AppProjects or Flux Tenant features to ensure isolation.

Q30. What is the correct implementation of "Environment Promotion" in GitOps?

A) Copy-pasting the same YAML to all environments B) Sequentially promoting changes from dev to staging to prod through Pull Requests C) Manual deployment to each environment using kubectl D) Writing completely different manifests for each environment

Answer: B

Explanation: Environment Promotion sequentially promotes changes from dev to staging to production through Pull Request workflows. Reviews and automated tests are performed at each stage.

Q31. What is the role of "Reconciliation Timeout"?

A) Git repository access time limit B) Maximum allowed time for a sync operation to complete C) PR review wait time limit D) Image build timeout

Answer: B

Explanation: Reconciliation Timeout is the maximum time allowed for a sync operation to complete. If resources do not reach a healthy state within this time, the sync is marked as failed.

Q32. What is the relationship between "Infrastructure as Code (IaC)" and GitOps?

A) IaC is unrelated to GitOps B) IaC is the foundation of GitOps, defining infrastructure as code managed in Git C) GitOps completely replaces IaC D) IaC is only usable in cloud environments

Answer: B

Explanation: Infrastructure as Code is a methodology for defining infrastructure as code and forms the foundation of GitOps. Infrastructure defined with IaC is stored in Git, and GitOps agents automatically apply it.

Q33. What role do "Webhooks" play in a GitOps workflow?

A) They directly execute deployments to the cluster B) They immediately notify agents of Git repository changes to trigger faster synchronization C) They build container images D) They run security scans

Answer: B

Explanation: Webhooks send immediate notifications to GitOps agents (ArgoCD, Flux) when changes occur in a Git repository, enabling faster sync without waiting for the polling interval.

Q34. What does "Convergence" mean in GitOps?

A) Merging multiple Git branches into one B) The actual state converging to match the desired state C) Multiple microservices integrating into a monolith D) Distributed systems concentrating into a single data center

Answer: B

Explanation: Convergence means that through the GitOps agent's reconciliation, the cluster's actual state gradually converges and ultimately matches the desired state defined in Git.

Q35. Why is the pull model more secure than the push model?

A) Because the pull model is faster B) Because cluster credentials do not need to be exposed to external CI/CD systems C) Because the pull model uses encryption D) Because the push model does not use Git

Answer: B

Explanation: In the pull model, an agent inside the cluster reads from Git and applies changes, so cluster credentials (kubeconfig, tokens) do not need to be shared with external systems (Jenkins, GitHub Actions, etc.). This reduces the attack surface.

Q36. What is the key difference between "Declarative Configuration" and "Procedural Configuration"?

A) They use different programming languages B) Declarative defines the final state; Procedural defines the steps to reach it C) Declarative is always faster D) Procedural is always safer

Answer: B

Explanation: Declarative Configuration defines "what state the system should be in," while Procedural Configuration defines "what steps should be executed." GitOps uses the declarative approach.

Q37. How is "Observability" connected to Reconciliation in GitOps?

A) They are unrelated B) Observability provides the foundation data for Reconciliation by determining actual state C) Observability replaces Reconciliation D) Both are only used for log analysis

Answer: B

Explanation: Observability provides the capability to determine the actual state of a cluster. GitOps agents use this information to detect differences from the desired state and perform Reconciliation.

Q38. What does "Eventual Consistency" mean in GitOps?

A) All changes are applied immediately B) Over time, the cluster state will ultimately match the state defined in Git C) Database transaction consistency D) A state with no network latency

Answer: B

Explanation: In GitOps, Eventual Consistency means that after changes are committed to Git, they may not be applied immediately, but through the reconciliation loop, the cluster will ultimately reach the desired state.

Q39. Which is NOT an appropriate method for implementing "Separation of Environments" in GitOps?

A) Separate Git repositories per environment B) Separate branches per environment C) Separate directories per environment (Kustomize overlays) D) Storing all environment secrets in plaintext in a single file

Answer: D

Explanation: Storing all environment secrets in plaintext in a single file is extremely risky from a security perspective and violates GitOps environment separation principles. Environment separation is implemented at the repository, branch, or directory level.

Q40. What is the correct behavior of "Automated Drift Remediation"?

A) Only sends an email to the administrator when drift occurs B) Automatically restores the cluster to the state defined in Git when drift is detected C) Completely recreates the cluster when drift occurs D) Updates the Git repository to match the cluster state when drift occurs

Answer: B

Explanation: Automated Drift Remediation is the capability where a GitOps agent automatically restores the cluster to the desired state defined in Git when drift is detected. Since Git is always the source of truth, aligning the cluster to Git is the correct direction.

Q41. What is the primary role of the ArgoCD Application Controller?

A) Clones Git repositories and generates manifests B) Monitors running application state and compares it to the desired state C) Handles user authentication D) Provides the web UI

Answer: B

Explanation: The Application Controller is the core component of ArgoCD that continuously monitors the state of running applications in the Kubernetes cluster and compares them to the desired state defined in Git.

Q42. What is the role of the ArgoCD Repository Server?

A) Caches cluster resource state B) Clones Git repositories and generates Kubernetes manifests using Helm, Kustomize, etc. C) Manages RBAC policies D) Delivers notifications to external systems

Answer: B

Explanation: The Repository Server (repo-server) clones Git repositories and renders manifests at the specified path into final Kubernetes resources using Helm, Kustomize, plain YAML, or Config Management Plugins.

Q43. What role does Redis play in ArgoCD?

A) Stores user sessions and manifest caches B) Maintains Git repository backups C) Caches container images D) Manages SSL certificates

Answer: A

Explanation: In ArgoCD, Redis stores manifest generation result caches and user session data. This reduces load on the Repository Server and improves response times.

Q44. What is the role of Dex in ArgoCD?

A) Manages access permissions to Git repositories B) Provides OIDC/SAML/LDAP authentication for SSO (Single Sign-On) C) Checks the status of Kubernetes resources D) Renders manifests

Answer: B

Explanation: Dex is an OIDC (OpenID Connect) Identity Provider integrated with ArgoCD that supports SSO with various external authentication systems including SAML, LDAP, GitHub, and Google.

Q45. Which is NOT a source type supported by Flux's source-controller?

A) GitRepository B) HelmRepository C) OCIRepository D) DockerRepository

Answer: D

Explanation: Flux's source-controller supports GitRepository, HelmRepository, OCIRepository, and Bucket source types. DockerRepository is not a resource type used in Flux.

Q46. What is the role of Flux's kustomize-controller?

A) Deploys Helm charts B) Applies Kustomize overlays and deploys Kubernetes resources to the cluster C) Fetches sources from Git repositories D) Sends notifications to external systems

Answer: B

Explanation: The kustomize-controller applies Kustomize overlays to sources fetched by the source-controller, generates final manifests, and deploys them to the cluster. It can also process plain YAML.

Q47. What CRD (Custom Resource Definition) does Flux's helm-controller use?

A) HelmChart B) HelmRelease C) HelmDeployment D) HelmApplication

Answer: B

Explanation: Flux's helm-controller uses the HelmRelease CRD to declaratively manage Helm chart releases. HelmRelease defines chart sources, values, dependencies, and more.

Q48. What is the role of Flux's notification-controller?

A) Manages inter-Pod communication within the cluster B) Delivers event notifications to external systems (Slack, Teams, Webhook, etc.) C) Updates DNS records D) Automatically renews certificates

Answer: B

Explanation: The notification-controller delivers Flux events (sync success/failure, drift detection, etc.) as notifications to external systems such as Slack, Microsoft Teams, and Webhooks.

Q49. What does it mean when an ArgoCD Application's Sync Status is "OutOfSync"?

A) An error occurred in the ArgoCD server B) The state defined in Git differs from the actual state in the cluster C) Network connectivity was lost D) The authentication token has expired

Answer: B

Explanation: OutOfSync indicates that there is a difference between the desired state defined in the Git repository and the actual state running in the cluster. It can be resolved through manual or automatic sync.

Q50. When does the ArgoCD "Health Status" show "Degraded"?

A) All Pods are running normally B) Some resources are in an unhealthy state (e.g., Pod in CrashLoopBackOff) C) The Git repository is inaccessible D) A login error occurred in the ArgoCD UI

Answer: B

Explanation: A Degraded Health Status indicates that some resources of the application are in an unhealthy state. For example, a Pod in CrashLoopBackOff or a Deployment with insufficient replicas.

Q51. What correctly describes the role of Helm?

A) Manages container runtimes B) Packages and deploys Kubernetes applications as templates C) Manages network policies D) Handles cluster authentication

Answer: B

Explanation: Helm is a package manager for Kubernetes that templates Kubernetes resources as packages called charts and deploys them with customizable values.

Q52. What is the core concept of Kustomize?

A) Uses a template engine to generate YAML B) Applies patches and overlays to base manifests to generate environment-specific configurations C) Deploys applications as binary packages D) Builds container images

Answer: B

Explanation: Kustomize applies patches and overlays to base manifests in a template-free manner to perform environment-specific customization. Transformations are defined in a kustomization.yaml file.

Q53. What does the "Auto-Sync" option mean when creating an ArgoCD Application?

A) Automates manifest rendering B) Automatically synchronizes changes to the cluster when detected in the Git repository C) Automatically updates image tags D) Automatically merges PRs

Answer: B

Explanation: When Auto-Sync is enabled, ArgoCD automatically synchronizes to the cluster without manual intervention when changes are detected in the Git repository. When disabled, manual sync via the UI button or CLI is required.

Q54. What does the ArgoCD "Prune" option do?

A) Deletes old Git branches B) Automatically deletes resources from the cluster that were removed from Git C) Cleans up unused container images D) Removes expired certificates

Answer: B

Explanation: Prune automatically deletes resources remaining in the cluster when their definitions are removed from the Git repository. Combined with Auto-Sync, it ensures complete alignment between Git and the cluster.

Q55. What is the role of the ArgoCD AppProject resource?

A) Manages project source code B) Restricts the source repositories, target clusters, and namespaces that applications can deploy to C) Defines CI/CD pipelines D) Configures monitoring dashboards

Answer: B

Explanation: AppProject is the RBAC unit in ArgoCD that restricts the Git repositories, target clusters, namespaces, and resource types that Applications belonging to the project can access.

Q56. How is the "Reconciliation Interval" configured in Flux?

A) Global setting via Flux CLI flags B) Individually configured via the spec.interval field on each resource (GitRepository, Kustomization, etc.) C) Configured via Kubernetes ConfigMap D) Configured via environment variables

Answer: B

Explanation: In Flux, the reconciliation interval is configured individually via the spec.interval field on each resource (GitRepository, Kustomization, HelmRelease, etc.), allowing different intervals per resource.

Q57. What is the ArgoCD CLI command to sync an application?

A) argocd app deploy APP_NAME B) argocd app sync APP_NAME C) argocd app apply APP_NAME D) argocd app push APP_NAME

Answer: B

Explanation: The argocd app sync APP_NAME command synchronizes a specific application with the latest state in the Git repository.

Q58. What does the "Self-Heal" option mean in ArgoCD?

A) ArgoCD itself recovers from failures automatically B) Automatically reverts manual changes in the cluster to the state defined in Git C) Automatically resolves Git repository conflicts D) Automatically renews expired secrets

Answer: B

Explanation: Self-Heal is a sub-option of Auto-Sync that automatically reverts the cluster to the Git-defined state when manual changes (via kubectl edit, etc.) are detected. It immediately remediates drift.

Q59. What tasks are performed during the Flux Bootstrap process?

A) Installs a Kubernetes cluster from scratch B) Installs Flux components in the cluster and commits Flux configuration to the Git repository C) Initializes a Helm chart repository D) Sets up a container registry

Answer: B

Explanation: Flux Bootstrap installs Flux controllers in the cluster and commits Flux configuration files (gotk-components.yaml, etc.) to the Git repository. From then on, Flux manages itself through this repository.

Q60. What do ArgoCD and Flux have in common?

A) They are written in the same programming language B) Both are CNCF projects and pull-based GitOps agents C) They use the same CRDs D) They provide the same web UI

Answer: B

Explanation: Both ArgoCD and Flux are CNCF Graduated projects that implement the pull-based GitOps model. While both are written in Go, their architectures, CRDs, and UIs differ.

Q61. What is the purpose of "Config Management Plugin" in ArgoCD?

A) Manages RBAC policies B) Generates manifests with tools not natively supported (jsonnet, cue, etc.) C) Configures cluster networking D) Manages user accounts

Answer: B

Explanation: Config Management Plugin (CMP) allows adding manifest generation tools not natively supported by ArgoCD (Jsonnet, CUE, KCL, etc.) as plugins.

Q62. What is the role of a PreSync hook in ArgoCD's "Resource Hooks"?

A) Runs cleanup tasks after sync completes B) Runs pre-tasks like database migrations before the actual sync operation C) Sends notifications on sync failure D) Pre-validates the Git repository

Answer: B

Explanation: PreSync Hooks are resources (Jobs, Pods, etc.) that run before the actual sync. They are used for pre-tasks needed before synchronization, such as database schema migrations and configuration validation.

Q63. What is the difference between Kustomize's "strategic merge patch" and "JSON 6902 patch"?

A) There is no difference; they are identical B) Strategic merge patch provides partial overwrites; JSON 6902 specifies explicit add/remove/replace operations C) JSON 6902 is always faster D) Strategic merge patch is only used with Helm

Answer: B

Explanation: Strategic merge patch partially overwrites fields in existing resources, while JSON 6902 patch specifies explicit operations (add, remove, replace, move, copy) with paths.

Q64. What are the two methods of "Resource Tracking" in ArgoCD?

A) Label and Finalizer B) Annotation and Label C) ConfigMap and Secret D) CRD and Webhook

Answer: B

Explanation: ArgoCD tracks resources it manages using either Annotation (default) or Label methods. The Annotation method uses argocd.argoproj.io/tracking-id, and the Label method uses app.kubernetes.io/instance.

Domain 4: GitOps Patterns (Q65-Q80)

Q65. What is the purpose of the "App-of-Apps" pattern?

A) Deploying a single application to multiple clusters B) A root Application declaratively manages child Applications to structure large-scale deployments C) Managing all applications in a single Git repository D) Setting up network communication between applications

Answer: B

Explanation: In the App-of-Apps pattern, a root (parent) Application contains child Application resources, and ArgoCD recursively syncs them. This enables systematic management of large-scale microservice deployments.

Q66. What does the ArgoCD ApplicationSet "Cluster Generator" do?

A) Creates new Kubernetes clusters B) Automatically creates Applications for each cluster based on the list of clusters registered in ArgoCD C) Monitors cluster resource usage D) Manages cluster certificates

Answer: B

Explanation: The Cluster Generator iterates over the list of clusters registered in ArgoCD and automatically creates Applications for each cluster. When a new cluster is registered, applications are automatically created.

Q67. How does the ApplicationSet "Git Generator - Directory" work?

A) Creates Applications based on Git commit history B) Scans the directory structure in a Git repository and auto-creates an Application for each directory C) Creates Applications per Git branch D) Manages Application versions based on Git tags

Answer: B

Explanation: The Git Generator - Directory scans directories under a specified path in a Git repository and automatically creates an Application for each directory. When a new directory is added, an Application is automatically created.

Q68. What is the role of the ApplicationSet "Matrix Generator"?

A) Optimizes resources through matrix operations B) Combines two Generators to create Applications from their combinations (Cartesian product) C) Validates manifest syntax D) Performs load balancing between clusters

Answer: B

Explanation: The Matrix Generator combines two child Generators to create Applications from their Cartesian product. For example, combining a Cluster Generator with a Git Generator creates Applications for all (cluster x directory) combinations.

Q69. What is the recommended ArgoCD architecture for multi-cluster GitOps?

A) Install independent ArgoCD instances in each cluster B) A hub cluster's ArgoCD manages multiple spoke clusters C) All clusters share a single Git branch D) Direct API communication between clusters for synchronization

Answer: B

Explanation: In the Hub-Spoke model, a central hub cluster's ArgoCD manages multiple spoke clusters. Registering remote clusters with ArgoCD enables deploying Applications to those clusters.

Q70. How is "Canary Deployment" implemented in GitOps for progressive delivery?

A) Manually modifying traffic ratios in Git B) Using Argo Rollouts or Flagger to gradually shift traffic C) Replacing all Pods with the new version simultaneously D) Only Blue-Green deployment is supported

Answer: B

Explanation: Implementing Canary Deployment with GitOps uses progressive delivery tools like Argo Rollouts or Flagger. These tools gradually adjust traffic ratios and analyze metrics to perform automatic promotion or rollback.

Q71. How do Sealed Secrets work?

A) Kubernetes Secrets are only Base64 encoded B) Secrets are encrypted with a public key for safe Git storage, and a cluster controller decrypts them with a private key C) Secrets are stored in an external vault with only references in Git D) Secret files are compressed and stored in Git

Answer: B

Explanation: Sealed Secrets uses asymmetric encryption. Secrets are encrypted with a public key to create SealedSecret resources stored safely in Git, and the Sealed Secrets Controller in the cluster decrypts them with a private key to convert them to regular Secrets.

Q72. How does External Secrets Operator (ESO) work?

A) Encrypts secrets and stores them in Git repositories B) Fetches secrets from external secret management systems (Vault, AWS SM, etc.) and syncs them as Kubernetes Secrets C) Exports Kubernetes Secrets to external systems D) Injects secret values as environment variables

Answer: B

Explanation: External Secrets Operator uses the ExternalSecret CRD to fetch secrets from external management systems (HashiCorp Vault, AWS Secrets Manager, Azure Key Vault, GCP Secret Manager, etc.) and automatically sync them as Kubernetes Secrets.

Q73. How is SOPS (Secrets OPerationS) used in GitOps?

A) SOPS directly manages secrets in the cluster B) SOPS encrypts YAML/JSON values for safe Git storage, and CI/CD or GitOps tools decrypt them C) SOPS replaces the Kubernetes API D) SOPS encrypts container images

Answer: B

Explanation: SOPS selectively encrypts only the values in YAML or JSON files for safe Git storage. Keys remain in plaintext for reviewability, and Flux's Kustomize Controller natively supports SOPS decryption.

Q74. What are the pros and cons of a Monorepo approach for "GitOps Repository Structure"?

A) Pro: Consistency by managing all apps in a single repo / Con: Complex permission management at scale B) Pro: Complete isolation per team / Con: Difficult dependency management between repos C) Monorepo is not suitable for GitOps D) There are no pros or cons; it is optimal in all situations

Answer: A

Explanation: A Monorepo manages all application deployment configurations in a single repository. The advantage is consistency and simple dependency management; the disadvantage is that fine-grained RBAC and CI/CD pipeline management become complex in large organizations.

Q75. What is the "PullRequest Generator" in ApplicationSet used for?

A) Automatically merging PRs B) Automatically creating temporary preview environments for each open Pull Request C) Automating PR code reviews D) Adding security scan results to PRs

Answer: B

Explanation: The PullRequest Generator detects open PRs on GitHub, GitLab, etc. and automatically creates temporary Applications (preview environments) for each PR. When a PR is closed, the corresponding environment is automatically deleted.

Q76. Which tools should be used to configure "Drift Detection" alerts?

A) ArgoCD Notifications or Flux notification-controller B) Kubernetes Events alone are sufficient C) Must be implemented with a separate cron job D) Only monitoring tools (Prometheus) are used

Answer: A

Explanation: ArgoCD Notifications (argocd-notifications-controller) and Flux's notification-controller can send alerts for events like drift detection and sync status changes to Slack, Teams, PagerDuty, and more.

Q77. What should be considered when implementing "Blue-Green Deployment" in GitOps?

A) Only a single environment is needed B) Resources for two environments (Blue and Green) are needed, and a traffic switching mechanism is essential C) Rollback is not possible D) Database migrations are handled automatically

Answer: B

Explanation: Blue-Green deployment simultaneously runs two environments (current Blue and new Green), requiring double the resources. A traffic switching mechanism via Service or Ingress is essential, and this is managed declaratively in Git.

Q78. When is the ApplicationSet "Merge Generator" needed?

A) When merging Git branches B) When merging results from multiple Generators by a common key to apply overrides to specific combinations C) When merging multiple Helm charts D) When combining manifests into a single file

Answer: B

Explanation: The Merge Generator merges results from multiple Generators based on a common key field. It is useful for generating a full list with a base Generator and then overriding additional parameters for specific items with supplementary Generators.

Q79. What is the core principle of "Secrets Management" in GitOps?

A) Secrets can be stored in plaintext in Git B) Secrets should be encrypted or only external references stored in Git to prevent plaintext exposure C) Secrets should always be managed only as environment variables D) Secret management is outside the scope of GitOps

Answer: B

Explanation: In GitOps, secrets must never be stored in plaintext in Git. The core principle is to encrypt them with Sealed Secrets or store only references to external secret stores via External Secrets Operator.

Q80. What is the first thing an organization should do when adopting GitOps?

A) Immediately install ArgoCD in production B) Convert existing infrastructure and application configurations to declarative code and establish a Git repository strategy C) Grant kubectl access to all developers D) Fully build a monitoring system first

Answer: B

Explanation: To adopt GitOps, existing infrastructure and application configurations must first be converted to declarative code (IaC, Kubernetes manifests), and a Git repository structure (monorepo vs polyrepo), branching strategy, and environment management plan must be established.

6. Wrap-Up

The CGOA exam assesses your theoretical understanding of GitOps. Use these 80 questions to comprehensively study GitOps core principles, ArgoCD and Flux architecture, various GitOps patterns, and secrets management strategies.

Exam Tips:

  1. Thoroughly understand the 4 OpenGitOps principles
  2. Know the differences and security benefits of Pull vs Push models
  3. Distinguish the roles of ArgoCD and Flux core components
  4. Understand the characteristics of each ApplicationSet Generator type
  5. Understand the differences between secrets management tools (Sealed Secrets, ESO, SOPS)

Best of luck on your journey to Golden Kubestronaut with CGOA certification!