운영 및 문제 해결
모델 구성 업데이트, 자격 증명 교체, 상태 모니터링, 로그 수집 및 일반적인 연결 및 인증 문제 해결을 포함하여 Model Gateway 배포를 모니터링, 유지 관리 및 문제 해결합니다.
배포 후 Model Gateway를 지속적으로 운영 관리하면 구성된 AI 모델에 안정적으로 액세스하고 서비스 중단을 최소화할 수 있습니다. 관리자는 활성 모델 구성을 검토하고, 제공자 자격 증명을 업데이트하고, 시크릿을 교체하고, 게이트웨이 상태를 모니터링하고, 문제가 발생했을 때 진단 정보를 수집할 수 있습니다.
구성된 모델 확인
모델을 확인하는 데는 구성 수준과 런타임에 bob-inference가 실제로 로드한 내용이라는 두 가지 수준이 있습니다.
- 구성 수준 — 추론 ConfigMap에서 현재 Model Gateway 구성을 검색합니다:
oc get cm bob-inference-config -n <bob-namespace> -o yaml | yq '.data."config.yaml"' - 런타임 수준 —
bob-inference가 등록하고 활발하게 라우팅 중인 대상:/v1/models엔드포인트를 직접 쿼리합니다(모델 연결성 검증 참조).
런타임 /v1/models 엔드포인트에는 exposed: true인 모델만 나열됩니다. 구성 파일은 구성된 전체 모델 세트를 볼 수 있는 유일한 방법입니다.
제공자 자격 증명 업데이트
자격 증명은 bob.modelGateway.secrets에서 환경 변수로 마운트됩니다. 이를 업데이트하는 작업은 2단계로 진행됩니다 — 시크릿 값을 업데이트한 다음 새 마운트를 적용하기 위해 Inference Service를 재시작합니다.
시크릿 업데이트
Bob CR을 편집하고 새 값을 적용합니다:
oc edit bob <instance-name> -n <bob-namespace>
# bob.modelGateway.secrets 아래의 값 업데이트Inference Service 재시작
새 시크릿이 마운트되도록 Inference Service를 재시작합니다:
oc rollout restart deploy/inference-service -n <bob-namespace>
oc rollout status deploy/inference-service -n <bob-namespace>시크릿 업데이트 후에는 Inference Service 파드를 재시작해야 합니다. 모델 구성 변경(모델 추가 또는 제거, base_url 변경)과 시크릿 변경은 단일 CR 업데이트로 일괄 처리한 후 한 번 재시작할 수 있습니다.
시크릿 교체
시크릿 교체는 자격 증명 업데이트와 동일한 패턴을 따르며 다운타임을 방지하기 위해 타이밍에 추가적인 주의를 기울여야 합니다.
권장 무중단 교체 순서:
bob.modelGateway.secrets를 새 자격 증명 값으로 업데이트합니다.- Inference Service를 재시작합니다:
oc rollout restart deploy/inference-service -n <bob-namespace>. - 설치 후 검증의 추론 테스트를 사용하여 새 자격 증명이 작동하는지 확인합니다.
- 파드가 정상으로 확인된 후에만 제공자 측에서 이전 자격 증명을 취소합니다.
제공자별 참고 사항:
openai_compatible/ API 키 — 새 키는 재시작 즉시 적용됩니다. 파드가 정상이면 이전 키를 안전하게 취소할 수 있습니다.bedrock— 재시작하기 전에 AWS에서 새 IAM 액세스 키가 활성화되어 있는지 확인하세요. IAM 전파에는 몇 초가 걸릴 수 있습니다.vertex— 새 서비스 계정 키를 생성하고 base64로 인코딩한 후 시크릿을 업데이트하고 재시작하여 확인한 다음 GCP에서 이전 키를 삭제합니다.ca_cert_pem— 인증서 갱신 시 적용하기 전에 새 인증서가 만료되지 않았는지 확인하세요. TLS 인증서 검증을 참조하세요.
게이트웨이 상태 모니터링
파드 재시작 횟수 — 증가하는 재시작 횟수는 반복적인 시작 실패(잘못된 시크릿 마운트, 구성 구문 분석 오류)의 조기 신호입니다:
oc get pods -n <bob-namespace> -l app=bob-inference \
-o custom-columns='NAME:.metadata.name,RESTARTS:.status.containerStatuses[0].restartCount'Liveness 및 Readiness 프로브 — 현재 프로브 구성 및 상태를 확인합니다:
oc describe deploy/bob-inference -n <bob-namespace> | grep -A 10 "Liveness\|Readiness"주기적인 상태 확인 — /v1/models 엔드포인트는 간단한 활성 상태 확인(liveness check) 역할을 합니다. 유효한 모델 목록을 반환하면 게이트웨이가 작동 중인 것입니다. 모니터링 도구나 클러스터 내부의 cron 작업에서 이를 폴링할 수 있습니다.
로그 및 진단 수집
특정 시간 범위의 로그 (보고된 인시던트를 조사할 때 가장 유용함):
oc logs -n <bob-namespace> deploy/bob-inference \
--since-time="2025-01-01T12:00:00Z" > bob-inference.log이전 파드 인스턴스의 로그 (파드가 재시작되어 실패 로그가 사라진 경우):
oc logs -n <bob-namespace> deploy/bob-inference --previous지원을 위한 전체 진단 번들:
oc describe pod -n <bob-namespace> -l app=bob-inference >> diagnostics.txt
oc get events -n <bob-namespace> --sort-by='.lastTimestamp' >> diagnostics.txt
oc logs -n <bob-namespace> deploy/bob-inference --since=1h >> diagnostics.txt진단 번들에는 파드 환경 변수 이름이 포함되어 있지만 시크릿 값은 포함되지 않습니다(시크릿은 마운트되며 로그에 인쇄되지 않음). 지원팀에 보내기 전에 실수로 자격 증명이 출력되었는지 로그를 검토하세요.
연결 및 인증 문제 해결
/v1/models에 모델이 표시되지 않음
exposed: false가 설정되어 있는지 확인하세요 — 설정되어 있다면 정상 동작입니다.- 시작 로그에서 해당
model_name에 대한 등록 오류를 확인하세요. - 제공자 블록을 확인하세요 — 올바른
base_url,modelID 및 자격 증명.
추론 요청 시 401 Unauthorized
bob.modelGateway.secrets의 시크릿 값이 올바르고 최신인지 확인하세요.- 모델 구성의
env.<VAR>참조가 시크릿 키 이름과 정확히 일치하는지 확인하세요(대소문자 구분). - Inference Service를 재시작하고 다시 시도하세요 — 재시작 없이 시크릿이 업데이트되었을 수 있습니다.
- 대역 외(out-of-band)로 자격 증명을 테스트하세요. 인증 유효성 검사를 참조하세요.
502 Bad Gateway 또는 connection refused
- 모델 엔드포인트가 가동 중이고 클러스터에서 연결할 수 있는지 확인하세요. 연결성 테스트를 참조하세요.
base_url문제(후행 슬래시, 잘못된 스키마(http대https), 잘못된 포트)를 확인하세요.- 설치 이후 아웃바운드 트래픽을 차단했을 수 있는 네트워크 정책 변경 사항을 확인하세요.
certificate signed by unknown authority
ca_cert_pem이 설정되어 있고 유효한 환경 변수를 참조하는지 확인하세요.- 해당 환경 변수가
bob.modelGateway.secrets에 존재하는지 확인하세요. - 인증서가 만료되지 않았는지 확인하세요:
openssl x509 -noout -dates. - 주체 대체 이름(Subject Alternative Names)을 확인하여 인증서가 엔드포인트의 호스트 이름을 다루는지 확인하세요.
Inference Service 파드가 CrashLoopBackOff 상태임
- 이전 인스턴스의 로그를 확인하세요:
oc logs --previous. - 구성 파싱 오류를 확인하세요 — Model Gateway 구성의 잘못된 형식의 YAML.
- Events 섹션에서 누락된 시크릿 마운트를 확인하세요:
oc describe pod. - 다시 적용하기 전에 Model Gateway 구성 YAML이 유효한지 확인하세요.