GitOps Desired State
Kubernetes API 안에서 지속적으로 reconcile할 desired state를 관리합니다.
GitOps controller를 사용하지 않는 초기 단계에도 kubectl kustomize로 같은
entrypoint를 렌더할 수 있습니다.
platform ─┐
policies ─┼──▶ clusters/<...> ◀── GitOps controller root
tenants ─┤
apps ─┘
clusters: 클러스터별 최종 조립점platform: cluster-wide addon과 controllerpolicies: cluster-wide admission과 거버넌스 규칙tenants: 구체적인 namespace/RBAC/quota/NetworkPolicyapps: 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에 문서화합니다.