LabHub

GitOps 와 ArgoCD · 드리프트와 self-heal · 퀴즈

퀴즈: 드리프트와 self-heal

LabHub 에서 이어서 보기

문항 7개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.

  1. `selfHeal: true` 인 앱에서 `kubectl scale` 로 replicas 를 늘렸습니다. 어떻게 되나요?

    1. 저장소가 자동으로 갱신되어 새 값이 커밋으로 남는다
    2. 그 앱이 OutOfSync 로 표시된 채 그대로 남는다
    3. 소유자가 아니라며 scale 명령 자체가 거부된다
    4. 다음 리컨실 주기에 저장소에 적힌 값으로 되돌아간다
  2. `prune` 이 삭제 대상을 판정하는 기준은?

    1. 마지막 동기화 시각 이후에 새로 만들어진 모든 오브젝트
    2. GitOps 관련 라벨이나 어노테이션이 하나도 없는 오브젝트
    3. 이 앱이 소유한 것으로 표시돼 있으나 렌더된 매니페스트에는 없는 오브젝트
    4. Application 이 지정한 네임스페이스 밖에 있는 오브젝트
  3. `source.path` 를 빈 디렉터리로 잘못 바꾼 커밋이 병합됐고 `prune: true` 입니다. 가장 직접적인 방어 장치는?

    1. `revisionHistoryLimit` 을 늘려 되돌릴 리비전을 넉넉히 남긴다
    2. `retry.limit` 을 0 으로 두어 잘못된 동기화가 반복되지 않게 한다
    3. `CreateNamespace=true` 를 켜서 지워진 네임스페이스가 곧바로 되살아나게 한다
    4. `syncPolicy.automated.allowEmpty: false` 로 빈 렌더 결과를 거부한다
  4. 어떤 Application 이 `Synced` 이면서 동시에 `Degraded` 입니다. 무슨 뜻인가요?

    1. 저장소와 클러스터의 내용이 서로 어긋나 있다는 신호다
    2. 적용이 아직 끝나지 않고 동기화가 진행 중이라는 뜻이다
    3. 두 상태가 함께 나올 수 없으므로 표시가 잘못된 버그다
    4. 저장소가 시킨 대로 적용은 됐지만 리소스가 정상 동작하지 못하고 있다
  5. diff 단계에서 `resourceVersion`, `uid`, `managedFields`, `status` 를 걷어내는 정규화가 없다면?

    1. 전처리 단계가 사라져 diff 계산이 오히려 조금 빨라진다
    2. 소유 표시를 읽지 못해 prune 이 아예 동작하지 않는다
    3. 아무것도 바꾸지 않아도 매번 차이가 있다고 보고돼 끝없이 동기화한다
    4. 동기화 단계가 건너뛰어져 sync 훅이 실행되지 않는다
  6. 이 실습 환경에서 만든 Application 이 스스로 `Synced` 가 되지 않는 이유는?

    1. Application CRD 를 잘못 적용해 스키마가 반쯤만 등록됐기 때문
    2. 이 환경에는 ArgoCD Application Controller 가 실행되지 않기 때문
    3. Application 오브젝트가 `argocd` 네임스페이스에 있지 않기 때문
    4. 가리키는 저장소에 원격이 없어 상태 필드를 채우지 못하기 때문
  7. 프로덕션 Application 에 대해 흔히 쓰이는 절충안으로 가장 적절한 것은?

    1. 환경을 가리지 않고 둘 다 켜 두어 저장소와 클러스터를 언제나 완전히 일치시켜 둔다
    2. prune 과 selfHeal 을 모두 끄고 배포는 사람이 승인하는 수동 동기화로만 진행한다
    3. selfHeal 은 켜되 prune 은 신중히 다루거나 수동 동기화로 두어, 실수로 병합된 삭제가 즉시 반영되지 않게 한다
    4. prune 만 켜고 selfHeal 은 꺼서 삭제는 따라가되 손으로 바꾼 값은 남겨 둔다