설치 후 검증
서비스 상태, 모델 연결성, 추론 요청, 라우팅 동작 및 오류 처리를 검증하여 설치 후 Model Gateway가 올바르게 작동하는지 확인합니다.
Model Inference Gateway를 설치하고 구성한 후 배포가 올바르게 작동하는지 확인합니다. 다음 유효성 검사 작업을 순서대로 완료하세요. 다음 단계로 넘어가기 전에 각 단계가 성공했는지 확인하세요.
게이트웨이 상태 확인
Inference Service 파드가 실행 중이고 모든 컨테이너가 준비되었는지 확인합니다:
oc get pods -n <bob-namespace> -l app=bob-inference게이트웨이 초기화에 대한 시작 로그를 확인합니다. 성공적인 시작 시 구성된 각 모델이 등록되는 로그가 기록됩니다. 자격 증명 또는 구성 구문 분석 오류는 여기서 나타납니다:
oc logs -n <bob-namespace> deploy/bob-inference --since=5m클러스터 내에서 게이트웨이의 /v1/models 엔드포인트가 응답하는지 확인합니다 — 이는 서비스가 가동 중이고 구성을 로드했음을 나타내는 가장 확실한 신호입니다:
oc exec -n <bob-namespace> deploy/bob-gateway -- \
curl -sk https://bob-inference.<bob-namespace>.svc.cluster.local:7330/v1/model/info | jq .모델 연결성 검증
각 예상 model_name에 대해 /v1/models 응답을 확인합니다. 연결에 실패한 모델(잘못된 URL, 인증 오류, TLS 오류)은 목록에 없거나 오류 상태로 표시됩니다.
model_info에 exposed: true가 설정된 모델만 퍼블릭 /v1/models 목록에 표시됩니다. exposed: false가 설정된 모델(예: 가드레일 모델)은 표시되지 않지만 내부적으로는 여전히 접근할 수 있어야 합니다. 목록에 없다고 해서 항상 연결 실패를 의미하는 것은 아닙니다.
모델 추론 테스트
핵심 모델과 가드레일 모델 모두에 대해 클러스터 내부에서 Inference Service로 직접 최소 테스트 완료 요청을 전송합니다:
oc exec -n <bob-namespace> deploy/bob-gateway -- \
curl -sk https://bob-inference.<bob-namespace>.svc.cluster.local:7330/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "<model_name>",
"messages": [{"role": "user", "content": "Say hello."}],
"max_tokens": 10
}' | jq .성공적인 응답에는 message.content 필드가 있는 choices 배열이 포함됩니다.
일반적인 오류:
| HTTP 상태 | 원인 |
|---|---|
401 Unauthorized | 잘못된 자격 증명 또는 권한 부족 |
404 Not Found | 지정된 모델 ID가 제공자에 존재하지 않음 |
502 Bad Gateway | 업스트림 모델 엔드포인트에 도달할 수 없음 |
가드레일 모델은 연결 가능하고 요청을 처리할 수 있어야 합니다. 가드레일 모델을 사용할 수 없는 경우 IBM Bob은 모든 추론 요청을 거부합니다. 설치가 완료된 것으로 간주하기 전에 가드레일 유효성 검사가 성공했는지 확인하세요.
모델 라우팅 검증
응답의 model 필드가 요청된 model_name과 일치하는지 확인하여 기본 모델이 올바르게 라우팅되는지 확인합니다.
모델 항목에 fallbacks가 구성된 경우 기본 모델의 base_url을 도달할 수 없는 호스트로 임시 지정하고 게이트웨이가 목록의 다음 모델로 대체되는지 확인하여 대체 경로를 검증합니다. 테스트 후 올바른 base_url을 복원하세요.
exposed: false인 모델의 경우 공개 모델 목록에 표시되지 않더라도 내부 라우팅이 여전히 올바르게 확인되는지 확인합니다.
오류 처리 검증
게이트웨이가 장애를 원활하게 처리하는지 확인하기 위해 다음과 같은 의도적인 부정 테스트를 실행합니다:
| 테스트 | 트리거 방법 | 예상 동작 |
|---|---|---|
| 잘못된 API 키 | 시크릿에서 잘못된 키 값을 임시로 설정 | 게이트웨이가 401을 반환하고 충돌하지 않음 |
| 연결할 수 없는 엔드포인트 | base_url을 유효하지 않은 호스트로 설정 | 게이트웨이가 502 또는 503을 반환하고 업스트림 오류를 기록함 |
| 잘못된 형식의 모델 ID | model을 존재하지 않는 ID로 설정 | 제공자가 404를 반환하고 호출자에게 오류가 표시됨 |
| 누락된 시크릿 환경 변수 | bob.modelGateway.secrets에서 키 제거 | 누락된 변수를 참조하는 기록된 오류와 함께 요청 시 실패 |
| 만료된 TLS 인증서 | 만료된 인증서를 ca_cert_pem으로 제공 | 요청 시 기록되는 TLS 핸드셰이크 실패 |
로그 수집 및 문제 해결
테스트 요청 중에 실시간 로그를 스트리밍하여 게이트웨이 라우팅 결정을 실시간으로 확인합니다:
oc logs -n <bob-namespace> deploy/bob-inference -f지원팀과 공유하기 위한 전체 로그 덤프를 수집합니다:
oc logs -n <bob-namespace> deploy/bob-inference --since=1h > bob-inference.log주요 로그 패턴:
| 로그 패턴 | 의미 |
|---|---|
| Model registered successfully | 게이트웨이가 오류 없이 모델 항목을 로드함 |
connection refused / no route to host | 모델 엔드포인트 연결 실패 |
업스트림의 401 / 403 | 자격 증명이 잘못되었거나 필요한 권한이 없음 |
certificate signed by unknown authority | ca_cert_pem에 CA 인증서가 누락되었거나 올바르지 않음 |
environment variable not found | env.*로 참조된 시크릿이 마운트된 시크릿에 없음 |
이벤트 수준 오류의 경우(예: 컨테이너 시작을 방지하는 시크릿 마운트 실패):
oc describe pod -n <bob-namespace> -l app=inference-service핵심 추론 모델 전환
설치 후 지원되는 하나의 핵심 추론 모델에서 다른 모델로 전환하려면:
새 모델이 배포되었는지 확인
새 모델이 배포되어 서비스 중인지 확인합니다. 모델 서빙 인프라를 참조하세요.
Model Gateway 구성 파일 업데이트
새 모델을 참조하도록 model-gateway.yaml을 업데이트합니다. Model Gateway 구성을 참조하세요.