diff --git a/journey/README.md b/journey/README.md index 5f5c3fd..c649656 100644 --- a/journey/README.md +++ b/journey/README.md @@ -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) diff --git a/journey/troubleshooting/260309_51123_구IP하드코딩_런타임SSOT불일치_이슈.md b/journey/troubleshooting/260309_51123_구IP하드코딩_런타임SSOT불일치_이슈.md index 88f3553..8f3286a 100644 --- a/journey/troubleshooting/260309_51123_구IP하드코딩_런타임SSOT불일치_이슈.md +++ b/journey/troubleshooting/260309_51123_구IP하드코딩_런타임SSOT불일치_이슈.md @@ -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) diff --git a/journey/worklog/260310_24서버_robeing_runtime_workspace_config_단일화.md b/journey/worklog/260310_24서버_robeing_runtime_workspace_config_단일화.md new file mode 100644 index 0000000..8f7ce91 --- /dev/null +++ b/journey/worklog/260310_24서버_robeing_runtime_workspace_config_단일화.md @@ -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가 제거된 것을 확인했습니다.