From 715e134a649e1d7f9c24f7787dafd6c3340f28f3 Mon Sep 17 00:00:00 2001 From: happybell80 Date: Mon, 9 Mar 2026 18:23:05 +0900 Subject: [PATCH] docs: finalize 51123 legacy ip source tracing --- ...P하드코딩_실행경로제거_계획.md | 9 ++++-- ..._실행경로_SSOT불일치_리서치.md | 28 +++++++++++++++++-- ...드코딩_런타임SSOT불일치_이슈.md | 1 + 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/journey/plans/260309_51123_구IP하드코딩_실행경로제거_계획.md b/journey/plans/260309_51123_구IP하드코딩_실행경로제거_계획.md index 0fc8e6e..55ec1bc 100644 --- a/journey/plans/260309_51123_구IP하드코딩_실행경로제거_계획.md +++ b/journey/plans/260309_51123_구IP하드코딩_실행경로제거_계획.md @@ -23,7 +23,9 @@ tags: [infra, 51123, ip, ssot, runtime, plans] ## 변경 대상 범위 ### 1. 즉시 교정 대상(active runtime) - `robeing/skill-email/docker-compose.yml` +- `robeing/skill-email/.env` - `robeing/skill-calendar/docker-compose.yml` +- `robeing/skill-calendar/.env` - `fluent-bit/data-prepper/pipelines.yaml` ### 2. 같은 작업 단위에서 함께 제거할 fallback/code default @@ -44,10 +46,12 @@ tags: [infra, 51123, ip, ssot, runtime, plans] ## 단계별 계획 ### 1. active runtime 교정 - `skill-email` - - `AUTH_SERVER_URL` fallback을 `HOST_51123` 기반 또는 현재 SSOT 기반으로 교체한다. + - `.env`의 `AUTH_SERVER_URL`, `DATABASE_URL`, `POSTGRES_CONNECTION_STRING`에서 과거 IP를 제거한다. + - `docker-compose.yml` fallback도 같은 작업 단위에서 교체한다. - 컨테이너 내부 `AUTH_SERVER_URL`, `DATABASE_URL`에 과거 IP가 남지 않게 한다. - `skill-calendar` - - `DATABASE_URL` fallback을 SSOT 기준으로 교체한다. + - `.env`의 `DATABASE_URL`에서 과거 IP를 제거한다. + - `docker-compose.yml` fallback과 `services/google_calendar_service.py` code default를 같은 작업 단위에서 교체한다. - 컨테이너 내부 env에 과거 IP가 남지 않게 한다. - `data-prepper` - sink host를 `192.168.0.100:9200` 또는 동일 의미의 SSOT 값으로 교체한다. @@ -73,6 +77,7 @@ tags: [infra, 51123, ip, ssot, runtime, plans] ## 검증 계획 ### 1. 설정 검증 - 실행 경로 파일 검색에서 `192.168.219.45`가 0건인지 확인한다. +- `.env`와 `docker compose config`에서 과거 IP가 0건인지 확인한다. - 컨테이너 env에서 `AUTH_SERVER_URL`, `DATABASE_URL`, OpenSearch host 관련 값에 과거 IP가 없는지 확인한다. ### 2. 연결 검증 diff --git a/journey/research/260309_51123_구IP하드코딩_실행경로_SSOT불일치_리서치.md b/journey/research/260309_51123_구IP하드코딩_실행경로_SSOT불일치_리서치.md index 2d5915d..6b13c12 100644 --- a/journey/research/260309_51123_구IP하드코딩_실행경로_SSOT불일치_리서치.md +++ b/journey/research/260309_51123_구IP하드코딩_실행경로_SSOT불일치_리서치.md @@ -14,6 +14,7 @@ tags: [infra, 51123, ip, ssot, runtime, research] - [Infra Journey](../README.md) - [51123 구 IP 하드코딩과 런타임 SSOT 불일치 이슈](../troubleshooting/260309_51123_구IP하드코딩_런타임SSOT불일치_이슈.md) - [24서버 우분투 터미널 불가, 네트워크 대역 오류, python3-apt 복구 기록](../troubleshooting/260309_24서버_우분투터미널불가_네트워크대역오류_python3apt복구.md) +- [51123 구 IP 하드코딩 실행 경로 제거 계획](../plans/260309_51123_구IP하드코딩_실행경로제거_계획.md) ## Facts @@ -55,6 +56,16 @@ tags: [infra, 51123, ip, ssot, runtime, research] - `MONITOR_URL=http://192.168.0.100:9024` - `data-prepper`는 env가 아니라 `pipelines.yaml`의 sink host를 사용하며, 현재 설정값이 `http://192.168.219.45:9200`다. +### 3-1. `skill-email`, `skill-calendar`의 주입 원천은 `.env`로 확정됐다 +- `/home/admin/robeing/skill-email/.env`에는 아래 값이 직접 기록돼 있다. + - `AUTH_SERVER_URL=http://192.168.219.45:9000` + - `DATABASE_URL=postgresql://robeings:robeings@192.168.219.45:5432/main_db` + - `POSTGRES_CONNECTION_STRING=postgresql://robeings:robeings@192.168.219.45:5432/main_db` +- `/home/admin/robeing/skill-calendar/.env`에는 아래 값이 직접 기록돼 있다. + - `DATABASE_URL=postgresql://robeings:robeings@192.168.219.45:5432/main_db` +- `docker compose ... config` 확인 결과, 두 서비스 모두 `.env` 값이 최종 environment로 해석돼 컨테이너에 주입된다. +- 따라서 `skill-email`, `skill-calendar`의 현재 과거 IP 사용 원천은 "미확정 fallback"이 아니라 `.env`의 직접 주입으로 확정된다. + ### 4. active runtime의 과거 IP 경로는 실제로 timeout을 낸다 - 23 서버 호스트에서 TCP 확인 결과: - `192.168.219.45:9000` -> `tcp_fail timed out` @@ -78,6 +89,19 @@ tags: [infra, 51123, ip, ssot, runtime, research] - 24 서버의 `admin-dashboard` 코드에는 23 서버 fallback 구조가 존재하지만, 2026-03-09 현재 24 서버 `docker ps`는 빈 상태였고 해당 컨테이너는 active runtime으로 확인되지 않았다. - `ivada_project/robeing-monitor/*`는 현재 실행 중인 `robeing_monitor` 컨테이너의 compose 경로가 아니라 잔존 구 경로로 보인다. +### 6. active runtime의 주입 원천과 영향 범위를 구분할 수 있다 +- `skill-email` + - 현재 원천: `/home/admin/robeing/skill-email/.env` + - 보조 잔존: `docker-compose.yml` fallback +- `skill-calendar` + - 현재 원천: `/home/admin/robeing/skill-calendar/.env` + - 보조 잔존: `docker-compose.yml` fallback, `services/google_calendar_service.py` code default +- `data-prepper` + - 현재 원천: `/home/admin/fluent-bit/data-prepper/pipelines.yaml` +- `auth-server` + - 현재 active runtime 원천: `host.docker.internal:5432` + - 보조 잔존: `gmail_passport.py` code default + ## Interpretation ### 1. 문제는 “문서 잔존”이 아니라 “실행 중 서비스가 과거 IP를 실제 사용 중”인 상태다 @@ -101,11 +125,9 @@ tags: [infra, 51123, ip, ssot, runtime, research] ### 5. 트러블슈팅 문서를 닫으려면 active runtime 0건과 fallback 0건을 함께 달성해야 한다 - active runtime만 고쳐도 코드 fallback이 남아 있으면 다음 재빌드 때 재발할 수 있다. - 반대로 코드만 고치고 현재 돌고 있는 컨테이너 env와 pipeline이 그대로면 실제 장애는 즉시 남는다. -- 따라서 닫힘 조건은 `active runtime 교정 + fallback 제거 + 재검증`의 3단계여야 한다. +- 따라서 닫힘 조건은 `현재 주입 원천 제거 + fallback 제거 + 재검증`의 3단계여야 한다. ## Unresolved -- `skill-email`의 `DATABASE_URL` 실제 주입 원천이 `.env`인지 compose fallback인지 이번 조사만으로는 분리하지 못했다. -- `skill-calendar`의 `DATABASE_URL`도 동일하게 `.env`와 compose fallback 중 어느 쪽이 최종 원천인지 추가 확인이 필요하다. - `admin-dashboard`의 23 서버 fallback 주소는 현재 비실행 상태이지만, 차후 24 서버에서 다시 배포될 때 SSOT를 어떤 방식으로 주입할지 결정되지 않았다. - `ivada_project/robeing-monitor/*`가 완전히 폐기 대상인지, 비상 복구 경로로 남길지 운영 결정이 아직 없다. diff --git a/journey/troubleshooting/260309_51123_구IP하드코딩_런타임SSOT불일치_이슈.md b/journey/troubleshooting/260309_51123_구IP하드코딩_런타임SSOT불일치_이슈.md index 0d3d449..88f3553 100644 --- a/journey/troubleshooting/260309_51123_구IP하드코딩_런타임SSOT불일치_이슈.md +++ b/journey/troubleshooting/260309_51123_구IP하드코딩_런타임SSOT불일치_이슈.md @@ -15,6 +15,7 @@ tags: [infra, 51123, ip, ssot, runtime, troubleshooting] - [23서버 워크스페이스-인프라 구조정리 이슈](./260307_23서버_워크스페이스_인프라_구조정리_이슈.md) - [24서버 우분투 터미널 불가, 네트워크 대역 오류, python3-apt 복구 기록](./260309_24서버_우분투터미널불가_네트워크대역오류_python3apt복구.md) - [51123 구 IP 하드코딩 실행 경로와 런타임 SSOT 불일치 리서치](../research/260309_51123_구IP하드코딩_실행경로_SSOT불일치_리서치.md) +- [51123 구 IP 하드코딩 실행 경로 제거 계획](../plans/260309_51123_구IP하드코딩_실행경로제거_계획.md) ## 문제 정의 - 2026-03-09 현재 23 서버(51123)의 실제 운영 IP는 `192.168.0.100/24`이다.