docs: record 24 runtime workspace-config unification

This commit is contained in:
Claude 2026-03-10 18:13:51 +09:00
parent bacdda2a8c
commit 06fcdbe314
3 changed files with 69 additions and 0 deletions

View File

@ -55,5 +55,6 @@
- [24서버 ONNX 모델 NAS 백업 정리](./worklog/260309_24서버_onnx모델_nas백업_정리.md)
- [23제어면 gateway workspace-config 단일화](./worklog/260309_23제어면_gateway_workspace_config_단일화.md)
- [51123 구IP active runtime 제거 1차](./worklog/260309_51123_구IP_active_runtime_제거_1차.md)
- [24서버 robeing runtime workspace-config 단일화](./worklog/260310_24서버_robeing_runtime_workspace_config_단일화.md)
- [24전환 배포대상과 ingress 24IP 교정 1차](./worklog/260309_24전환_배포대상과_ingress_24IP_교정_1차.md)
- [24서버 NAS 마운트 복원 및 ONNX 백업 실행](./worklog/260309_24서버_nas마운트복원_onnx백업실행.md)

View File

@ -86,6 +86,30 @@ tags: [infra, 51123, ip, ssot, runtime, troubleshooting]
- 23 서버 기동 서비스가 모두 `192.168.0.100` 또는 명시 env만 참조한다.
- 24 서버에서 23 서버 DB/인증/모니터 호출을 실제로 재검증해 과거 IP 경로가 다시 나오지 않는다.
## 2026-03-10 후속 확인
- 24 서버(`/home/admin`)에는 `workspace-config/runtime.env`, `workspace-config/secrets.env`가 실제로 존재했고, 이 파일을 공통 런타임 기준으로 사용해야 한다는 계획 문서와 일치했습니다.
- 그러나 실제 active runtime은 `rb8001`, `skill_email`, `skill-calendar`, `skill-slack`, `skill-rag-file`, `robeing-monitor` 일부가 서비스별 `.env`와 compose 재정의에 남은 `192.168.219.45`를 계속 사용하고 있었습니다.
- 따라서 문제의 실체는 "workspace-config 부재"가 아니라, `workspace-config`가 있어도 서비스가 이를 일관되게 읽지 않던 실행 구조였습니다.
### 2026-03-10 시점 직접 확인된 경로
- `rb8001/.env`
- `DATABASE_URL`, `TEST_DATABASE_URL`, `METRICS_DATABASE_URL`, `POSTGRES_CONNECTION_STRING`, `GATEWAY_URL`, `AUTH_SERVER_URL`
- `skill_email/.env`
- `DATABASE_URL`, `POSTGRES_CONNECTION_STRING`, `TEST_DATABASE_URL`
- `skill-calendar/.env`
- `DATABASE_URL`
- `skill-slack/.env`
- `DATABASE_URL`
- `skill-rag-file/.env`
- `DATABASE_URL`
- `robeing-monitor/.env`
- `DATABASE_URL`
### 2026-03-10 기준 해결 방향 재확인
- 24 서버 런타임은 각 서비스 `.env`에 인프라 주소를 중복 보관하지 않고, `/home/admin/workspace-config/runtime.env`, `/home/admin/workspace-config/secrets.env`를 공통 기준으로 읽어야 합니다.
- compose의 `environment:`에서 다시 같은 키를 재정의해 공통 env를 덮어쓰지 않도록 정리해야 합니다.
- 구 IP `192.168.219.45`는 24 런타임의 active compose, 서비스 `.env`, 컨테이너 env에서 0건이어야 합니다.
## 상위 원칙/근거 문서 연결
- [Infra Project Identity](../../00_Philosophy/00_IDENTITY/Infra_Project_Identity.md)
- [Core Infrastructure Principles](../../00_Philosophy/01_PRINCIPLES/Core_Infrastructure_Principles.md)

View File

@ -0,0 +1,44 @@
---
tags: [infra, 24-server, robeing, workspace-config, runtime, worklog]
---
# 260310 24서버 robeing runtime workspace-config 단일화
## 관련 문서
- [51123 구 IP 하드코딩과 런타임 SSOT 불일치 이슈](../troubleshooting/260309_51123_구IP하드코딩_런타임SSOT불일치_이슈.md)
- [51123 구 IP 하드코딩 실행 경로 제거 계획](../plans/260309_51123_구IP하드코딩_실행경로제거_계획.md)
- [24서버 실서비스 운영전환 계획](../plans/260309_24서버_실서비스운영전환_계획.md)
## 작업
- `/home/admin/workspace-config/runtime.env`에 24 런타임이 공통으로 써야 하는 비민감 기준값을 정리했습니다.
- `HOST_51124=192.168.0.106`
- `AUTH_SERVER_URL=http://192.168.0.100:9000`
- `GATEWAY_URL=http://192.168.0.100:8100`
- `OPENSEARCH_URL=http://192.168.0.100:9200`
- `/home/admin/workspace-config/secrets.env`에 robeing 공통 DB 연결값을 정리했습니다.
- `DATABASE_URL=postgresql://robeings:robeings@192.168.0.100:5432/main_db`
- `TEST_DATABASE_URL=postgresql://robeings:robeings@192.168.0.100:5432/test_db`
- `METRICS_DATABASE_URL=postgresql://robeings:robeings@192.168.0.100:5432/robeing_metrics`
- `POSTGRES_CONNECTION_STRING=postgresql://robeings:robeings@192.168.0.100:5432/main_db`
- 아래 24 런타임 서비스의 `docker-compose.yml`이 공통 `workspace-config`를 직접 읽도록 맞췄습니다.
- `rb8001`
- `skill_email`
- `skill-calendar`
- `skill-slack`
- `skill-rag-file`
- `robeing-monitor`
- 서비스별 `.env`에 남아 있던 `192.168.219.45` 기반 DB/auth/gateway literal은 제거하거나 공통 env 주입 주석으로 대체했습니다.
- compose의 `environment:` 재정의 때문에 공통 env가 덮어써지던 항목(`DATABASE_URL`, `AUTH_SERVER_URL` fallback 등)도 함께 제거했습니다.
## 검증
- 파일 검색 기준으로 `rb8001`, `skill_email`, `skill-calendar`, `skill-slack`, `skill-rag-file`, `robeing-monitor`, `workspace-config`의 active compose/.env 경로에서 `192.168.219.45`는 0건이었습니다.
- `docker compose config` 기준으로 `rb8001`, `skill_email`, `skill-calendar`, `skill-slack`, `skill-rag-file``DATABASE_URL`, `TEST_DATABASE_URL`, `METRICS_DATABASE_URL`, `POSTGRES_CONNECTION_STRING`, `AUTH_SERVER_URL`, `GATEWAY_URL`는 모두 `192.168.0.100` 기준으로 해석됐습니다.
- 컨테이너 재생성 후 `docker inspect` 기준으로 `rb8001`, `skill-email`, `skill-calendar`, `skill-slack`, `skill-rag-file`, `robeing_monitor` env에서 구 IP `192.168.219.45`는 사라졌고, 공통 값은 `192.168.0.100`으로 주입됐습니다.
- 헬스체크는 `skill-calendar`, `skill-email`, `skill-slack`, `skill-rag-file`, `robeing_monitor`가 정상으로 확인됐습니다.
## 남은 사항
- `rb8001`은 공통 env 반영까지는 완료됐지만, 재기동 직후에도 `localhost:8001/health`가 열리지 않아 별도 기동 이슈가 남아 있습니다.
- 따라서 이번 작업의 닫힘 범위는 `24 서버 robeing runtime의 workspace-config 단일화와 구 IP 제거`까지이며, `rb8001` 기동 장애 원인 분석은 별도 트러블슈팅으로 다루는 것이 맞습니다.
## 한 줄 결론
- 24 서버 robeing active runtime은 이제 서비스별 구 IP 하드코딩 대신 `workspace-config`를 공통 런타임 SSOT로 읽도록 정리됐고, 실제 컨테이너 env에서도 구 IP가 제거된 것을 확인했습니다.