9.4 KiB
9.4 KiB
tags
| tags | ||||||
|---|---|---|---|---|---|---|
|
51123 구 IP 하드코딩 실행 경로 제거 계획
상태: 완료 (2026-03-10 기준)
상위 원칙
- Infra Project Identity
- Core Infrastructure Principles
- Operational Guardrails
- 공통 작성 원칙: 0_VALUE Writing Principles
관련 문서
- Infra Journey
- 51123 구 IP 하드코딩과 런타임 SSOT 불일치 이슈
- 51123 구 IP 하드코딩 실행 경로와 런타임 SSOT 불일치 리서치
- 23서버 워크스페이스 SSOT 구조전환 계획
- 51123 구IP active runtime 제거 1차
- 23제어면 gateway workspace-config 단일화
- 24서버 robeing runtime workspace-config 단일화
- 23 gateway MONITOR_URL 24 monitor 교정 및 실도메인 전수검증
- 23 gateway MONITOR_URL 구주소 잔존으로 24 monitor 프록시 실패 복구
- 260310 admin-dashboard SSOT fallback 제거 및 검증
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-monitor는workspace-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/구주소 제거 상태를 별도 점검했고,HOST_51123,HOST_51124,workspace-config기준으로 재기동과 실제 응답 검증까지 완료했다.
이 계획의 닫힘 판단
- 따라서 이 계획은
active runtime 구IP 제거,gateway/monitor 경로 교정,admin-dashboard fallback 제거까지 닫혔고, 51123 주소 기준은 현재192.168.0.100하나로만 설명 가능하다.
목표
- 51123 주소 기준을
/home/admin/workspace-config/runtime.env의HOST_51123=192.168.0.100으로 단일화한다. - active runtime에서
192.168.219.45를 실제로 사용하는 경로를 제거한다. - 코드 기본값과 compose fallback에서 과거 IP를 제거해, 재빌드와 복구 시에도 구 IP가 다시 살아나지 않게 한다.
변경 대상 범위
1. 즉시 교정 대상(active runtime)
robeing/skill-email/docker-compose.ymlrobeing/skill-email/.envrobeing/skill-calendar/docker-compose.ymlrobeing/skill-calendar/.envfluent-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.pyrobeing/skill-calendar/services/google_calendar_service.pyrobeing/admin-dashboard/backend/services/system_service.pyrobeing-gateway/docker-compose.yml- 상태:
robeing-gateway/docker-compose.yml은 완료.admin-dashboardfallback 점검은 미완료.
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.env의AUTH_SERVER_URL,DATABASE_URL,POSTGRES_CONNECTION_STRING에서 과거 IP를 제거한다.docker-compose.ymlfallback도 같은 작업 단위에서 교체한다.- 컨테이너 내부
AUTH_SERVER_URL,DATABASE_URL에 과거 IP가 남지 않게 한다.
skill-calendar.env의DATABASE_URL에서 과거 IP를 제거한다.docker-compose.ymlfallback과services/google_calendar_service.pycode default를 같은 작업 단위에서 교체한다.- 컨테이너 내부 env에 과거 IP가 남지 않게 한다.
data-prepper- sink host를
192.168.0.100:9200또는 동일 의미의 SSOT 값으로 교체한다. - 재시작 후 timeout 로그가 사라지는지 확인한다.
- sink host를
2. fallback과 code default 제거
auth-server/app/providers/gmail_passport.pyDATABASE_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.ymlenv_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건인지 확인한다. .env와docker compose config에서 과거 IP가 0건인지 확인한다.- 컨테이너 env에서
AUTH_SERVER_URL,DATABASE_URL, OpenSearch host 관련 값에 과거 IP가 없는지 확인한다.
2. 연결 검증
- 23 서버 호스트에서 다음 경로가 모두
192.168.0.100기준으로 열리는지 확인한다.9000auth-server5432PostgreSQL9200OpenSearch
- 컨테이너 내부에서도 같은 경로를 다시 확인한다.
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하나로만 설명 가능하다.
최종 닫힘 근거
admin-dashboard는system_service.py,routers/system.py,admin_routes.py에서HOST_51123,HOST_51124환경변수 기반으로 현재 주소를 읽도록 교정됐다.admin-dashboard/docker-compose.yml은workspace-config/runtime.env,workspace-config/secrets.env를 직접 읽고,JWT_SECRET_KEY,DATABASE_URL하드코딩을 제거했다.- 재빌드 후
admin-dashboard-backend컨테이너 env에HOST_51123=192.168.0.100,HOST_51124=192.168.0.106이 주입됐고,admin/login,admin/system/services/list,admin/diaries응답이 모두 정상 확인됐다.