Skip to content

fix(cicd): add db-seed init container to backend deployments - #389

Merged
jeongmin1999 merged 2 commits into
mainfrom
fix/ontology-seed-missing
Jul 3, 2026
Merged

jeongmin1999 merged 2 commits into
mainfrom
fix/ontology-seed-missing

Conversation

@gpffh20

@gpffh20 gpffh20 commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

배경

프로덕션 인사이트맵(research 모드)에 개념이 하나도 표시되지 않는 문제가 있었습니다. 원인은 ontology_concepts/ontology_edges 테이블이 alembic upgrade로 스키마만 생성되고, 데이터는 UtterAI_BE/scripts/seed_ontology.py를 별도로 수동 실행해야 채워지는데, 이 단계가 배포 파이프라인 어디에도 없었기 때문입니다. 프로덕션은 실제로 ontology_concepts 0건이었습니다.

임시 조치로 프로덕션 파드에 직접 kubectl exec로 시드 스크립트를 1회 실행해 데이터는 채워놓은 상태이며, 이 PR은 재발 방지를 위한 자동화입니다.

변경 내용

  • db-migrate init 컨테이너 바로 뒤에 db-seed init 컨테이너를 추가해 배포마다 python scripts/seed_ontology.py를 자동 실행하도록 함
    • k8s/apps/backend/overlays/dev/deployment.yaml
    • k8s/apps/backend/overlays/prod/deployment-blue.yaml
    • k8s/apps/backend/overlays/prod/deployment-green.yaml
  • prod 네임스페이스는 pod-security.kubernetes.io/enforce: restricted가 적용되어 있어, db-migrate와 동일한 securityContext(non-root, capabilities.drop: [ALL], readOnlyRootFilesystem: true)를 db-seed에도 patch-deployment.yaml에 추가함

영향 범위 / 검증

  • kubectl kustomize로 dev/prod overlay 렌더링 결과 확인 — db-seed 컨테이너에 올바른 이미지 태그(kustomize image transformer가 기존 utterai-backend-blue/-green 이름으로 자동 주입)와 securityContext가 정상 반영됨
  • seed_ontology.py는 concept_key 기준 upsert(존재하면 UPDATE, 없으면 INSERT)라 여러 번 실행해도 안전(idempotent)
  • 짝을 이루는 변경: UtterAI_BE#93 — 이미지에 scripts/ 디렉토리를 포함하도록 Dockerfile 수정. 이 PR이 먼저 머지/배포되어야 db-seed가 정상 동작함

리뷰 포인트

  • prod blue-green에서 새 color를 0→2 replica로 한번에 올릴 때, 두 파드의 db-seed가 동시에 시작되면 concept_key unique 제약으로 드물게 한쪽 init 컨테이너가 실패할 수 있습니다. seed_ontology.py가 원자적 ON CONFLICT upsert가 아니라 조회 후 삽입/갱신 방식이기 때문입니다. 다만 Kubernetes가 실패한 init 컨테이너를 자동 재시도하고, 재시도 시점엔 다른 파드가 이미 커밋해놨을 것이므로 자동 회복됩니다. 필요시 추후 seed_ontology.py를 원자적 upsert로 개선하는 것을 고려해볼 수 있습니다.

@gpffh20

gpffh20 commented Jul 2, 2026 •

Copy link
Copy Markdown
Contributor Author

추가 커밋 반영: AI 서비스 prod HPA `minReplicas`를 2 → 1로 낮췄습니다(`k8s/apps/ai-service/overlays/prod/hpa.yaml`). 온톨로지 시드 자동화와는 별개 변경이지만 이 PR에 함께 포함했습니다.

@jeongmin1999
jeongmin1999 self-requested a review July 3, 2026 10:57
@jeongmin1999
jeongmin1999 merged commit addfcce into main Jul 3, 2026
1 check passed
@gpffh20
gpffh20 deleted the fix/ontology-seed-missing branch October 20, 2026 12:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants