개발 서버 이전 — k3d 클러스터 동기화
날짜
영향도보통
Decisions
D1: kube-state-metrics 신규 배포 (base 매니페스트)
- Context: Prometheus config에
kube-state-metrics:8080scrape 타겟이 정의되어 있으나, 해당 리소스의 매니페스트가 없어 OCI/dev 모두 scrape 실패 상태. - Choice:
infra/k3s/kube-state-metrics.yaml에 Deployment/Service/ServiceAccount/ClusterRole/ClusterRoleBinding을 신규 작성.--namespaces=algosu제한으로 리소스 절약. - Alternatives: (a) Helm chart로 설치 — kustomize 기반 운영과 불일치, 기각. (b) scrape 타겟 자체를 제거 — HPA/PDB 등 k8s 리소스 메트릭 수집 불가, 기각.
- Code Paths:
infra/k3s/kube-state-metrics.yaml,infra/k3s/kustomization.yaml,infra/k3s/metrics-network-policy.yaml
D2: dev overlay에서 stateful 서비스 securityContext 제거
- Context: k3d의 local-path provisioner가 fsGroup을 제대로 지원하지 않아,
securityContext.fsGroup: 999가 설정된 postgres/rabbitmq/minio 파드가 PVC 마운트 후 권한 에러로 기동 실패. - Choice:
infra/overlays/dev/kustomization.yaml에 JSON Patch로 postgres, postgres-problem, minio, rabbitmq의 pod-level securityContext를 제거. 이미지 기본 uid로 실행. - Alternatives: (a) initContainer로 chown — pod-level
runAsNonRoot: true가 root initContainer를 차단, 기각. (b) base에서 securityContext 제거 — 운영(OCI) 보안 약화, 기각. - Code Paths:
infra/overlays/dev/kustomization.yaml
D3: dev overlay에서 readinessProbe /health → fallback
- Context: 현재
:dev이미지에/health/ready엔드포인트가 미구현(404) 또는 Gateway 인증 미들웨어 차단(401). readinessProbe 실패로 파드가 영구 Not Ready. - Choice: dev overlay에서 5개 앱 서비스의 readinessProbe path를
/health로 패치. - Code Paths:
infra/overlays/dev/kustomization.yaml
Patterns
P1: dev overlay JSON Patch 패턴으로 k3d 호환성 확보
- Where:
infra/overlays/dev/kustomization.yamlpatches 섹션 - When to Reuse: base 매니페스트의 운영 설정이 k3d/local 환경과 호환되지 않을 때. securityContext, readinessProbe, imagePullSecrets 등을 dev overlay에서 선택적으로 제거/변경하여 base 무수정 유지.
Metrics
- Commits: 1건 (515c817)
- Files changed: 4개 (+226/-0)
- 클러스터 상태: 18 파드 Running, HPA 3, PDB 3, NetworkPolicy 19, kube-state-metrics scrape up