refactor: 구조 변경
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user