DOCS/journey/plans/260309_51123_구IP하드코딩_실행경로제거_계획.md

9.0 KiB

tags
tags
infra
51123
ip
ssot
runtime
plans

51123 구 IP 하드코딩 실행 경로 제거 계획

상태: 거의 완료 (2026-03-10 기준, 최종 잔여 1건)

상위 원칙

관련 문서

2026-03-10 진행 반영

완료 처리된 항목

  • robeing-gateway/docker-compose.yml의 공용 env 경로는 workspace-config/runtime.env, workspace-config/secrets.env 기준으로 교정되고 재기동까지 검증됐다.
  • 24 active runtime rb8001, skill-email, skill-calendar, skill-slack, skill-rag-file, robeing-monitorworkspace-config를 공통 런타임 SSOT로 읽도록 정리됐다.
  • 24 active runtime의 compose/.env/컨테이너 env 기준 192.168.219.45 제거와 192.168.0.100 기준 주입이 검증됐다.
  • 5432/tcp, 7687/tcp, 8001, 9024의 23↔24 인프라 경로와 실제 서비스 헬스가 복구됐다.
  • MONITOR_URL 구주소 잔존 문제는 http://192.168.0.106:9024로 교정됐고, 실도메인 기준 stats/preferences 전 경로가 200으로 검증됐다.

이 계획에서 아직 남은 항목

  • admin-dashboard의 서버 간 fallback/구주소 제거 상태를 별도 점검해, 재배포 전에도 192.168.219.45 또는 이전 경로가 다시 살아나지 않는지 최종 확인해야 한다.

이 계획의 닫힘 판단

  • 따라서 이 계획은 실행 조치 대부분이 끝난 상태이며, 남은 핵심 후속은 admin-dashboard fallback 최종 점검 1건으로 축소됐다.

목표

  • 51123 주소 기준을 /home/admin/workspace-config/runtime.envHOST_51123=192.168.0.100으로 단일화한다.
  • active runtime에서 192.168.219.45를 실제로 사용하는 경로를 제거한다.
  • 코드 기본값과 compose fallback에서 과거 IP를 제거해, 재빌드와 복구 시에도 구 IP가 다시 살아나지 않게 한다.

변경 대상 범위

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
  • 상태: skill-email, skill-calendar, robeing-gateway, 24 active runtime은 완료. data-prepper 과거 IP 재검증은 별도 확인 필요.

2. 같은 작업 단위에서 함께 제거할 fallback/code default

  • auth-server/app/providers/gmail_passport.py
  • robeing/skill-calendar/services/google_calendar_service.py
  • robeing/admin-dashboard/backend/services/system_service.py
  • robeing-gateway/docker-compose.yml
  • 상태: robeing-gateway/docker-compose.yml은 완료. admin-dashboard fallback 점검은 미완료.

3. 같은 작업 단위에서 함께 고정할 공용 env 경로

  • workspace-config만 공용 SSOT로 사용한다.
  • /home/admin/infra-config/*.env 참조는 실행 경로에서 허용하지 않는다.
  • 상태: active runtime 기준 대부분 완료. 다만 관련 잔존 참조의 전수 증명은 admin-dashboard 포함 최종 점검 후 닫는다.

실행 원칙

  • 과거 IP 192.168.219.45를 새 값과 병행 허용하지 않는다.
  • "안 되면 예전 IP로 재시도" 같은 폴백을 추가하지 않는다.
  • IP literal 대신 의미 있는 환경변수 또는 현재 SSOT 값만 참조하게 바꾼다.
  • 문서 수정만으로 닫지 않고, 재빌드와 실연결 검증까지 완료해야 닫는다.

단계별 계획

1. active runtime 교정

  • skill-email
    • .envAUTH_SERVER_URL, DATABASE_URL, POSTGRES_CONNECTION_STRING에서 과거 IP를 제거한다.
    • docker-compose.yml fallback도 같은 작업 단위에서 교체한다.
    • 컨테이너 내부 AUTH_SERVER_URL, DATABASE_URL에 과거 IP가 남지 않게 한다.
  • skill-calendar
    • .envDATABASE_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 값으로 교체한다.
    • 재시작 후 timeout 로그가 사라지는지 확인한다.

2. fallback과 code default 제거

  • auth-server/app/providers/gmail_passport.py
    • DATABASE_URL 기본값에서 과거 IP literal을 제거한다.
  • robeing/skill-calendar/services/google_calendar_service.py
    • 코드 기본값을 SSOT 기준으로 교체하거나, env 미주입 시 즉시 실패하도록 정리한다.
  • robeing/admin-dashboard/backend/services/system_service.py
    • 51124에서 51123으로 접근할 때 과거 IP 폴백을 제거하고 현재 기준값만 사용하게 정리한다.
  • robeing-gateway/docker-compose.yml
    • env_file 경로를 /home/admin/workspace-config/runtime.env, /home/admin/workspace-config/secrets.env만 보게 교체한다.

3. 재배포와 재검증

  • 변경 서비스별로 docker compose down && docker compose up -d --build로 재기동한다.
  • 컨테이너 env, TCP 연결, 헬스체크, 로그를 다시 확인한다.
  • 192.168.219.45로 향하는 연결 시도가 남지 않았는지 재검색한다.

검증 계획

1. 설정 검증

  • 실행 경로 파일 검색에서 192.168.219.45가 0건인지 확인한다.
  • .envdocker compose config에서 과거 IP가 0건인지 확인한다.
  • 컨테이너 env에서 AUTH_SERVER_URL, DATABASE_URL, OpenSearch host 관련 값에 과거 IP가 없는지 확인한다.

2. 연결 검증

  • 23 서버 호스트에서 다음 경로가 모두 192.168.0.100 기준으로 열리는지 확인한다.
    • 9000 auth-server
    • 5432 PostgreSQL
    • 9200 OpenSearch
  • 컨테이너 내부에서도 같은 경로를 다시 확인한다.

3. 로그 검증

  • data-prepper에서 Timeout connecting to [/192.168.219.45:9200]가 사라졌는지 확인한다.
  • skill-email, skill-calendar에서 과거 IP 대상 연결 실패 로그가 없는지 확인한다.

4. 완료 검증

  • 24 서버에서 23 서버 DB/인증/모니터 경로를 재확인해 과거 IP 재참조가 없는지 확인한다.
  • admin-dashboard 재배포 전 코드 fallback 제거 상태를 별도 점검한다.

완료 판단 기준

  • active runtime 컨테이너 skill-email, skill-calendar, data-prepper가 더 이상 192.168.219.45를 사용하지 않는다.
  • code default와 compose fallback에서 과거 IP literal이 제거된다.
  • 실행 경로에서 /home/admin/infra-config/*.env 참조가 0건이고, 공용 env는 workspace-config만 사용한다.
  • TCP 연결, 헬스체크, 로그 재검증에서 과거 IP timeout이 재현되지 않는다.
  • 51123 주소 기준은 192.168.0.100 하나로만 설명 가능하다.

현재 남은 최종 확인 1건

  • 대상: robeing/admin-dashboard/backend/services/system_service.py와 관련 fallback 경로
  • 질문: admin-dashboard가 재배포 전/후에도 192.168.219.45 또는 구 fallback을 다시 참조하지 않는가
  • 닫힘 기준:
    • 코드 검색에서 구 IP와 구 fallback이 0건이다.
    • 실제 실행 경로 또는 재배포 전 점검 결과로 현재 기준값만 설명 가능하다.
    • 필요 시 admin-dashboard 관련 health/status 호출이 현재 SSOT 기준으로 동작함을 확인한다.

상위 원칙/근거 문서 연결