# GitOps Desired State Kubernetes API 안에서 지속적으로 reconcile할 desired state를 관리합니다. GitOps controller를 사용하지 않는 초기 단계에도 `kubectl kustomize`로 같은 entrypoint를 렌더할 수 있습니다. ```text platform ─┐ policies ─┼──▶ clusters/<...> ◀── GitOps controller root tenants ─┤ apps ─┘ ``` - `clusters`: 클러스터별 최종 조립점 - `platform`: cluster-wide addon과 controller - `policies`: cluster-wide admission과 거버넌스 규칙 - `tenants`: 구체적인 namespace/RBAC/quota/NetworkPolicy - `apps`: application 배포 정의 Catalog 디렉터리를 controller root로 직접 지정하지 않습니다. cluster entrypoint가 필요한 base/overlay를 선택하고 의존 순서를 명시합니다. ## 기본 규칙 - `base`는 환경을 모르며 재사용 가능한 기본값만 가집니다. - `overlays`는 차이만 patch하고 전체 manifest를 복사하지 않습니다. - CRD/controller가 필요한 리소스는 controller 이후에 reconcile합니다. - resource namespace, ownership label과 버전을 명시합니다. - raw `Secret` 또는 실제 비밀값을 커밋하지 않습니다. - 원격 base/chart를 참조할 때 immutable version 또는 digest를 사용합니다. Flux/Argo CD 고유 리소스와 sync ordering은 선택한 controller를 기록한 ADR에 문서화합니다.