103 lines
5.4 KiB
Markdown
103 lines
5.4 KiB
Markdown
---
|
|
tags: [infra, 51123, ip, ssot, runtime, plans]
|
|
---
|
|
|
|
# 51123 구 IP 하드코딩 실행 경로 제거 계획
|
|
|
|
## 상위 원칙
|
|
- [Infra Project Identity](../../00_Philosophy/00_IDENTITY/Infra_Project_Identity.md)
|
|
- [Core Infrastructure Principles](../../00_Philosophy/01_PRINCIPLES/Core_Infrastructure_Principles.md)
|
|
- [Operational Guardrails](../../00_Philosophy/02_GUARDRAILS/Operational_Guardrails.md)
|
|
- 공통 작성 원칙: `0_VALUE`의 `writing-principles.md`
|
|
|
|
## 관련 문서
|
|
- [Infra Journey](../README.md)
|
|
- [51123 구 IP 하드코딩과 런타임 SSOT 불일치 이슈](../troubleshooting/260309_51123_구IP하드코딩_런타임SSOT불일치_이슈.md)
|
|
- [51123 구 IP 하드코딩 실행 경로와 런타임 SSOT 불일치 리서치](../research/260309_51123_구IP하드코딩_실행경로_SSOT불일치_리서치.md)
|
|
|
|
## 목표
|
|
- 51123 주소 기준을 `/home/admin/infra-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.yml`
|
|
- `robeing/skill-calendar/docker-compose.yml`
|
|
- `fluent-bit/data-prepper/pipelines.yaml`
|
|
|
|
### 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`
|
|
|
|
### 3. 잔존 복제본 또는 구 경로 정리 판단 대상
|
|
- `ivada_project/robeing-monitor/docker-compose.yml`
|
|
- `ivada_project/robeing-monitor/app/core/config.py`
|
|
|
|
## 실행 원칙
|
|
- 과거 IP `192.168.219.45`를 새 값과 병행 허용하지 않는다.
|
|
- "안 되면 예전 IP로 재시도" 같은 폴백을 추가하지 않는다.
|
|
- IP literal 대신 의미 있는 환경변수 또는 현재 SSOT 값만 참조하게 바꾼다.
|
|
- 문서 수정만으로 닫지 않고, 재빌드와 실연결 검증까지 완료해야 닫는다.
|
|
|
|
## 단계별 계획
|
|
### 1. active runtime 교정
|
|
- `skill-email`
|
|
- `AUTH_SERVER_URL` fallback을 `HOST_51123` 기반 또는 현재 SSOT 기반으로 교체한다.
|
|
- 컨테이너 내부 `AUTH_SERVER_URL`, `DATABASE_URL`에 과거 IP가 남지 않게 한다.
|
|
- `skill-calendar`
|
|
- `DATABASE_URL` fallback을 SSOT 기준으로 교체한다.
|
|
- 컨테이너 내부 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 폴백을 제거하고 현재 기준값만 사용하게 정리한다.
|
|
|
|
### 3. 잔존 복제본 처리 방향 결정
|
|
- `ivada_project/robeing-monitor/*`가 현재 운영 경로가 아니면 실행 경로에서 제외됐다는 사실을 확인한다.
|
|
- 계속 보존할 필요가 없으면 구 IP literal 제거 또는 보관 경로 분리를 결정한다.
|
|
|
|
### 4. 재배포와 재검증
|
|
- 변경 서비스별로 `docker compose down && docker compose up -d --build`로 재기동한다.
|
|
- 컨테이너 env, TCP 연결, 헬스체크, 로그를 다시 확인한다.
|
|
- `192.168.219.45`로 향하는 연결 시도가 남지 않았는지 재검색한다.
|
|
|
|
## 검증 계획
|
|
### 1. 설정 검증
|
|
- 실행 경로 파일 검색에서 `192.168.219.45`가 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이 제거된다.
|
|
- TCP 연결, 헬스체크, 로그 재검증에서 과거 IP timeout이 재현되지 않는다.
|
|
- 51123 주소 기준은 `192.168.0.100` 하나로만 설명 가능하다.
|
|
|
|
## 상위 원칙/근거 문서 연결
|
|
- [Infra Project Identity](../../00_Philosophy/00_IDENTITY/Infra_Project_Identity.md)
|
|
- [Core Infrastructure Principles](../../00_Philosophy/01_PRINCIPLES/Core_Infrastructure_Principles.md)
|
|
- [Operational Guardrails](../../00_Philosophy/02_GUARDRAILS/Operational_Guardrails.md)
|