Skip to content

[INFRA] 운영에 AI가 배포되어 있지 않다 — apps/prod/ai 등록과 PINLOG_AI_BASE_URL 주입 #122

Description

@minyongP

운영에 AI가 배포되어 있지 않고 back이 부를 주소도 없다. #102를 정리해 다시 끊는다 — 그 이슈는 PINLOG_AI_INTERNAL_SECRET과 묶여 있었는데 그쪽은 #105로 해소됐고, 남은 것은 주소 하나다.

시연 범위가 전체 통합으로 확정돼(#102) 선택 사항이 아니다.

지금 상태 — 확인한 것

확인 대상 상태
infra/apps/prod/ back 하나뿐. ai 없음
infra/apps/dev/ai/values.yaml enabled: false"승인되지 않은 계약이 남아 있어 workload는 의도적으로 차단한다"
back/src/main/resources/application.yml:114 base-url: ${PINLOG_AI_BASE_URL:http://localhost:8000}
infra/apps/prod/back/values.yaml env: PINLOG_AI_BASE_URL 없음

즉 운영 파드는 AI 호출을 전부 자기 자신의 8000 포트로 보낸다. 거기에는 아무것도 없다.

왜 지금 중요한가 — 검색은 오류 화면이 뜬다

임베딩 경로와 검색 경로의 실패 방식이 다르다.

소비자 주소가 틀렸을 때 사용자에게
AiProcessClient (임베딩 접수) 삼킨다. PENDING → 5분 주기 3회 재시도 → FAILED 안 보인다. Context는 정상 생성
AiSearchClient (자연어 검색) AiSearchException.unavailable()을 던진다 오류 응답
// AiSearchClient.java:108
 * @throws AiSearchException 호출이 실패했을 . <b> 목록으로 대신하지 않는다</b>

빈 결과로 삼키지 않는 것은 설계된 계약이다(공용 계약 05 §7.1 런타임 대조). 설정이 어긋난 채 배포된 사실이 "검색 결과 없음"으로 보이는 쪽을 막으려고 일부러 그렇게 했다. 따라서 시연에서 자연어 검색을 보여주면 그 자리에서 터진다.

임베딩 쪽은 #104(재스캔 Scheduler·FAILED Finalizer, 4a9ab36) 이후 배포 약 15분이면 context_ai_stateFAILED가 쌓이기 시작한다. 그게 주소 오류의 가장 빠른 신호다.

해야 할 일

  • S15P11A705-61 [AI] AI 서버 배포 인프라 요청 갱신 — AI 파트. 본문 두 곳이 현행 계약과 어긋나 있다(SealedSecret 경로 -154 표준화, Embedding Profile ConfigMap 단일 주입은 BD-39로 폐기)
  • apps/prod/ai 등록 — 인프라. 내부 전용 ClusterIP · 포트 8000, 외부 진입점 없음. FQDN은 인프라가 확정한다
  • apps/prod/back/values.yamlenv:PINLOG_AI_BASE_URL 추가 — 인프라
  • 배포 후 자연어 검색이 오류 없이 응답하는지, context_ai_stateFAILED가 더 쌓이지 않는지 확인

back 저장소 변경은 필요 없다. application.yml:114의 placeholder가 이미 있어 주입만 하면 그대로 읽힌다.

함께 딸린 것 (차단은 아님)

back/docs/development/configuration.md의 인프라 요청 표가 낡았다. 문서 전용이라 아무 때나, 티켓 없이 고칠 수 있다.

  • L80 "인프라 계약에 아직 반영되지 않았으므로 배포 전에 요청해야 합니다" — 07-30에 6종 전부 back-owner-secrets로 봉인·주입돼 사실이 아니다
  • 표에 PINLOG_AI_INTERNAL_SECRET이 빠져 있다(운영 필수 — 없으면 운영 프로파일 기동 실패, AiProcessClient.java:65)
  • PINLOG_AI_EMBEDDING_PROFILE요청 대상이 아니다. application.yml:122에 리터럴 기본값이 있다(BD-39)

아직 답을 못 받은 질문 — runtime Secret 키 집합

AI 파트가 ai#39에 남겼다가 그 PR 병합과 함께 묻혔고, #102로 옮겨 적었으나 여전히 미응답이다. #102를 닫으면서 또 묻히지 않도록 여기로 옮긴다.

등록 완료   ai 저장소 pinlog-secrets-dev
            GMS_API_KEY · GMS_BASE_URL · INTERNAL_SHARED_SECRET   (3키)

그런데 세 곳이 여전히 exact 8-key schema를 규정한다.

위치 내용
S15P11A705-118 본문 "ai-runtime-secrets는 다음 exact 8-key schema만 허용한다"
infra/docs/ai-dev-prerequisites.md 3절 같은 문구
infra/tools/validate_ai_dev_prerequisites.py:17 REQUIRED_RUNTIME_KEYS 8개. missing뿐 아니라 unexpected도 오류

지금 상태로 검증기를 돌리면 DATABASE_URL·PINLOG_EMBEDDING_MODEL·DIMENSION·DISTANCE·PROFILE 다섯이 missing으로 걸린다. EMBEDDING 넷은 S15P11A705-96·ai#36에서 app/core/config.py 기본값으로 옮겨 주입 대상에서 빠졌다(공용 계약 05 §7.1 개정).

세 곳을 3키 기준으로 갱신할 예정인지만 알려주면 된다. 8키 유지 결정이면 AI 파트가 나머지를 등록하겠다고 했다. apps/dev/aienabled: false인 상태라 이 판정이 dev AI 기동의 선행이고, 전체 통합 확정으로 dev 기동이 prod 배포의 선행이 됐다.

참고

Metadata

Metadata

Labels

chore빌드·설정·잡무

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions