運用とトラブルシューティング
モデル設定の更新、クレデンシャルのローテーション、ヘルス監視、ログ収集、一般的な接続・認証問題の解決など、モデルゲートウェイデプロイメントの監視、保守、トラブルシューティングを行います。
デプロイメント後、モデルゲートウェイの継続的な運用管理は、設定済み AI モデルへの信頼性の高いアクセスを確保し、サービス中断を最小限に抑えます。管理者はアクティブなモデル設定を確認し、プロバイダークレデンシャルを更新し、シークレットをローテーションし、ゲートウェイのヘルスを監視し、問題が発生した場合に診断情報を収集できます。
設定済みモデルの表示
モデルの表示には 2 つのレベルがあります — 設定にあるものとランタイムで bob-inference が実際に読み込んだものです。
- 設定レベル — inference ConfigMap から現在のモデルゲートウェイ設定を取得します。
oc get cm bob-inference-config -n <bob-namespace> -o yaml | yq '.data."config.yaml"' - ランタイムレベル —
bob-inferenceが登録してアクティブにルーティングしているもの:oc exec -n <bob-namespace> deploy/bob-gateway -- \ curl -sk https://bob-inference.<bob-namespace>.svc.cluster.local:7330/v1/model/info | jq .
ランタイムの /v1/model/info エンドポイントは exposed: true のモデルのみを一覧表示します。設定ファイルは設定済みモデルの完全なセットを確認する唯一の方法です。
プロバイダークレデンシャルの更新
クレデンシャルは config.yaml の bob.modelGateway.secrets の下に保管されます。bobctl update-model-config --update-secrets を使用して、更新されたクレデンシャルをクラスターにプッシュします。
クレデンシャルの更新
config.yaml の bob.modelGateway.secrets の下にあるクレデンシャルを更新します。
更新されたシークレットをクラスターにプッシュ
bobctl update-model-config --update-secretsibm-bob-operator が bob-inference デプロイメントを調整 (reconcile) し、新しいシークレットを自動的にマウントします。
モデル設定ファイルとクレデンシャルの両方を同時に更新する場合は、単一のコマンドで両方をプッシュできます:
bobctl update-model-config --model-config ./my-model-config.yaml --update-secretsシークレットのローテーション
シークレットのローテーションはクレデンシャル更新と同じパターンに従いますが、ダウンタイムを避けるためのタイミングに追加の注意が必要です。
推奨されるゼロダウンタイムローテーション手順:
- 新しいクレデンシャル値で
config.yamlのbob.modelGateway.secretsを更新します。 - 新しいシークレットをクラスターにプッシュします:
bobctl update-model-config --update-secrets。 - 新しいシークレットを適用するために Inference Service を再起動します:
oc rollout restart deploy/inference-service -n <bob-namespace> - インストール後の確認の推論テストを使用して新しいクレデンシャルが機能していることを確認します。
- デプロイメントが正常であることを確認した後にのみ、プロバイダー側で古いクレデンシャルを失効させます。
プロバイダー固有の注意事項:
openai_compatible/ API キー — 新しいキーはシークレットの更新後すぐに有効になります。デプロイメントが正常であることを確認したら古いキーを失効させても安全です。bedrock—update-model-configを実行する前に、新しい IAM アクセスキーが AWS でアクティブであることを確認してください。IAM の伝播には数秒かかる場合があります。vertex— 新しいサービスアカウントキーを生成して base64 エンコードし、config.yamlを更新し、bobctl update-model-config --update-secretsを実行して確認してから GCP で古いキーを削除します。ca_cert_pem— 証明書の更新の場合は、適用前に新しい証明書が期限切れでないことを確認してください。TLS 証明書の検証を参照してください。
ゲートウェイのヘルス監視
Pod 再起動数 — 再起動数の増加は繰り返し起動失敗 (不正なシークレットマウント、設定解析エラー) の早期シグナルです。
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/model/info エンドポイントはシンプルな liveness チェックとして機能します。有効なモデルリストを返せば、ゲートウェイは起動しています。これはクラスター内の監視ツールや cron ジョブからポーリングできます。
ログと診断の収集
特定の時間枠のログ (報告されたインシデントを調査する際に最も有用):
oc logs -n <bob-namespace> deploy/bob-inference \
--since-time="2025-01-01T12:00:00Z" > bob-inference.log前の Pod インスタンスのログ (Pod が再起動して障害ログが消えた場合):
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診断バンドルには Pod 環境変数名が含まれますが、シークレット値は含まれません (シークレットはマウントされ、ログに出力されません)。サポートに送信する前に、誤ってクレデンシャルが出力されていないかログを確認してください。
接続と認証の問題のトラブルシューティング
/v1/model/info にモデルが表示されない
exposed: falseが設定されているか確認します — 設定されている場合は期待される動作です。- その
model_nameの登録エラーがないか起動ログを確認します。 - プロバイダーブロックを確認します — 正しい
base_url、modelID、クレデンシャル。
推論リクエストで 401 Unauthorized
bob.modelGateway.secretsのシークレット値が正しく最新であることを確認します。- モデル設定の
env.<VAR>参照がシークレットキー名と完全に一致することを確認します (大文字小文字が区別されます)。 - Inference Service を再起動して再試行します — 再起動なしにシークレットが更新された可能性があります。
- クレデンシャルをアウトオブバンドでテストします。認証の検証を参照してください。
502 Bad Gateway または connection refused
- モデルエンドポイントが起動しておりクラスターから到達可能であることを確認します。接続テストを参照してください。
base_urlの問題を確認します — 末尾のスラッシュ、誤ったスキーム (httpvshttps)、誤ったポート。- インストール後にアウトバウンドトラフィックをブロックした可能性があるネットワークポリシーの変更を確認します。
certificate signed by unknown authority
ca_cert_pemが設定されており、有効な環境変数を参照していることを確認します。- 環境変数が
bob.modelGateway.secretsに存在することを確認します。 - 証明書が期限切れでないことを確認します:
openssl x509 -noout -dates。 - サブジェクト代替名を確認して、証明書がエンドポイントのホスト名をカバーしていることを確認します。
Inference Service Pod が CrashLoopBackOff
- 前のインスタンスのログを確認します:
oc logs --previous。 - 設定解析エラーを探します — モデルゲートウェイ設定の不正な YAML。
- Events セクションでシークレットマウントの欠落を探します:
oc describe pod。 - 再適用する前にモデルゲートウェイ設定の YAML が有効であることを確認します。