refactor: 구조 변경

This commit is contained in:
donghyeon-ka
2026-08-28 17:24:26 +09:00
parent a6f6c663e0
commit b8626946b1
192 changed files with 2251 additions and 206 deletions
+39 -26
View File
@@ -56,41 +56,54 @@ Plugin 안에서 실행하지 않습니다.
## 저장소 분류
```text
bootstrap/argocd/ controller 버전, 제한된 AppProject와 단일 root seed
clusters/dev-k3s/
bootstrap/
foundation/ 외부 state/identity 선행 조건 문서
gitops/argocd/ controller 버전, 제한된 AppProject와 단일 root seed
infrastructure/
components/ 재사용 Vault Terraform component
live/dev-k3s/
vault-foundation/ mount/auth와 delegated automation policy
vault-workloads/ workload ACL, auth role와 Transit key
vault-database/ PostgreSQL connection과 dynamic role
gitops/clusters/dev-k3s/
kustomization.yaml Argo CD가 읽는 유일한 cluster root
overlays/
platform/ 공유 서비스의 dev-k3s 최종 구성
systems/ bounded context system의 dev-k3s 최종 구성
workloads/ first-party workload의 dev-k3s 최종 구성
platform/
control-plane/argocd/ AppProject와 ApplicationSet inventory
shared-services/ 여러 system이 사용할 수 있는 cluster capability base
systems/ 특정 bounded context가 소유하는 backing system base
workloads/ source repository가 따로 있는 실행 애플리케이션 base
iac/terraform/
modules/ 재사용 Vault 모듈
live/dev-k3s/ vault-foundation, vault-workloads, vault-database roots
backend/dev-k3s/ secret 없는 remote backend 예시
policies/vault/ Terraform이 읽는 Vault ACL 문서
hack/ bootstrap, validation, dev Vault init entrypoint
docs/ architecture, ADR, migration/operation runbook
platform/ 공유 서비스의 dev-k3s 최종 구성
systems/ bounded-context system의 dev-k3s 최종 구성
workloads/ first-party workload의 dev-k3s 최종 구성
gitops/platform/
control-plane/argocd/ AppProject와 ApplicationSet inventory
shared-services/ 여러 system이 는 cluster capability base
gitops/apps/
systems/ bounded-context backing system base
workloads/ 별도 source repository를 가진 application base
scripts/ bootstrap, validation, dev Vault init entrypoint
docs/ architecture, ADR, guide와 runbook
examples/, tests/ 템플릿 예제와 저장소 수준 검증 영역
```
각 catalog의 `_template`은 새 component를 만들 때 사용하는 복사 원본이며
Argo CD가 직접 reconcile하지 않습니다.
분류는 제품 종류가 아니라 소비자, 소유자, 변경 주기로 결정합니다.
Vault는 공유 capability이므로 `platform/`, Project Auth 전용 PostgreSQL과
Keycloak은 `systems/auth-system/`, 직접 빌드하는 서버는 `workloads/`
속합니다. namespace, host, image digest, Vault role, NetworkPolicy 같은
클러스터별 값은 `clusters/dev-k3s/overlays/`에서 완결합니다.
Vault는 공유 capability이므로 `gitops/platform/`, Project Auth 전용
PostgreSQL과 Keycloak은 `gitops/apps/systems/auth-system/`, 직접 빌드하는
서버는 `gitops/apps/workloads/`속합니다. namespace, host, image digest,
Vault role, NetworkPolicy 같은 클러스터별 값은
`gitops/clusters/dev-k3s/overlays/`에서 완결합니다. Vault ACL은 소비하는
Terraform state의 `policies/`에 함께 둡니다.
자세한 판단 기준은
[repository taxonomy](docs/architecture/repository-taxonomy.md)와
[ADR 0007](docs/adr/0007-repository-ownership-boundaries.md)을 따릅니다.
[ADR 0007](docs/decisions/0007-repository-ownership-boundaries.md)을 따릅니다.
## Argo CD 단계 gate
Root Application은 `platform/control-plane/argocd`의 AppProject와
ApplicationSet을 소유합니다. 각 inventory 항목은 `autoSync`를 quoted
string으로 명시해야 합니다. 새 항목이나 외부 준비 조건이 있는 항목은
Root Application은 `gitops/clusters/dev-k3s`만 source로 사용합니다. 이
cluster root가 `gitops/platform/control-plane/argocd`의 AppProject와
ApplicationSet을 조립하고, 각 ApplicationSet이 cluster overlay를
reconcile합니다. 각 inventory 항목은 `autoSync`를 quoted string으로
명시해야 합니다. 새 항목이나 외부 준비 조건이 있는 항목은
`autoSync: "false"`로 시작하고, 선행 controller, Vault 구성, runtime
secret, database 준비를 확인한 PR에서만 `autoSync: "true"`로 바꿉니다.
@@ -146,4 +159,4 @@ make terraform-plan \
- [Terraform state 이관](docs/runbooks/terraform-state-migration.md)
- [Vault backup/recovery](docs/runbooks/vault-backup-restore.md)
- [Sealed Secrets recovery](docs/runbooks/sealed-secrets-recovery.md)
- [입문 가이드](INTERN_GUIDE.md)
- [입문 가이드](docs/guides/intern-guide.md)