10.3. Gateway API 設定に関する一般的な問題のトラブルシューティング
Red Hat OpenShift AI で Gateway API 設定に関連するエラーが発生した場合は、このセクションを読んで、問題の原因と解決方法を理解してください。
問題がこのドキュメントまたはリリースノートに記載されていない場合は、Red Hat サポートにお問い合わせください。
10.3.1. GatewayConfig のステータスが not ready と表示される リンクのコピーリンクがクリップボードにコピーされました!
問題
OIDC のセットアップ中に、GatewayConfig のステータスが not ready と表示されます。OIDC 設定が見つからないというエラーメッセージが表示され、GatewayConfig リソースのステータスが Ready: False と表示されます。
診断
次のコマンドを実行して、
GatewayConfigのステータスを確認します。oc get gatewayconfig default-gateway -o yaml
$ oc get gatewayconfig default-gateway -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、特定のエラーメッセージを確認します。
oc describe gatewayconfig default-gateway
$ oc describe gatewayconfig default-gatewayCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力では、
Spec.Oidcの下の OIDC 設定の詳細が表示され、ReadyとProvisioningSucceededの両方のステータス条件がTrueステータスで表示され、GatewayConfig リソースが正常にプロビジョニングされたことが確認されます。次のコマンドを実行して、OIDC 設定が正しいことを確認します。
oc get gatewayconfig default-gateway -o jsonpath='{.spec.oidc}'$ oc get gatewayconfig default-gateway -o jsonpath='{.spec.oidc}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力は次の例のようになります。
{"clientID":"your-client-id","clientSecretRef":{"key":"clientSecret","name":"keycloak-client-secret"},"issuerURL":"https://keycloak.example.com/realms/your-realm"}{"clientID":"your-client-id","clientSecretRef":{"key":"clientSecret","name":"keycloak-client-secret"},"issuerURL":"https://keycloak.example.com/realms/your-realm"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
解決方法
次のコマンドを実行して、OIDC シークレットが存在し、正しいことを確認します。
oc get secret keycloak-client-secret -n openshift-ingress
$ oc get secret keycloak-client-secret -n openshift-ingressCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、OIDC 発行者 URL のアクセス可能性を確認します。
curl -I https://your-keycloak-domain/realms/your-realm/.well-known/openid-configuration
curl -I https://your-keycloak-domain/realms/your-realm/.well-known/openid-configurationCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力では、HTTP ステータスコード
HTTP/2 200と正しいcontent-type: application/json headerを返すことで、OIDC 発行者 URL にアクセスできることを確認できます。- クライアントシークレットが正しいことを確認します。
10.3.2. 認証プロキシーの起動に失敗する リンクのコピーリンクがクリップボードにコピーされました!
問題
kube-auth-proxy をデプロイした後、認証プロキシーコンポーネントの起動に失敗します。関連付けられた Pod は失敗状態にあり、CrashLoopBackOff や Pending などのステータスが表示されており、kube-auth-proxy デプロイメントの準備ができていません。
診断
次のコマンドを実行して、
kube-auth-proxyのデプロイメントステータスを確認します。oc get deployment kube-auth-proxy -n openshift-ingress
$ oc get deployment kube-auth-proxy -n openshift-ingressCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力では、デプロイメントが正常にプロビジョニングされたことが確認され、
READY列に1/1が表示されます。次のコマンドを実行して、Pod ログを確認します。
oc logs -l app=kube-auth-proxy -n openshift-ingress
$ oc logs -l app=kube-auth-proxy -n openshift-ingressCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力では、OAuth2 プロキシーが設定され、指定されたポートで起動していることを確認できます。
Expected output
# Expected output time="2024-01-15T10:30:00Z" level=info msg="OAuth2 Proxy configured" time="2024-01-15T10:30:00Z" level=info msg="OAuth2 Proxy starting on :4180" time="2024-01-15T10:30:00Z" level=info msg="OAuth2 Proxy starting on :8443"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Pod イベントにエラーがないか確認します。
oc describe pod -l app=kube-auth-proxy -n openshift-ingress
$ oc describe pod -l app=kube-auth-proxy -n openshift-ingressCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力は、次の例のようになります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
解決方法
次のコマンドを実行して、認証シークレットに正しいクライアントシークレットが含まれていることを確認します。
oc get secret kube-auth-proxy-creds -n openshift-ingress -o yaml
$ oc get secret kube-auth-proxy-creds -n openshift-ingress -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力には、
OAUTH2_PROXY_CLIENT_SECRET、OAUTH2_PROXY_COOKIE_SECRET、OAUTH2_PROXY_CLIENT_IDキーが含まれている必要があります。次のコマンドを実行して、クラスターから OIDC 発行者 URL にアクセスできるかどうかを確認します。
curl -I https://your-keycloak-domain/realms/your-realm/.well-known/openid-configuration
curl -I https://your-keycloak-domain/realms/your-realm/.well-known/openid-configurationCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力では、HTTP ステータスコード
HTTP/2 200が返されている必要があります。- OIDC プロバイダーにクライアント ID が存在することを確認します。
10.3.3. Gateway にアクセスできない リンクのコピーリンクがクリップボードにコピーされました!
問題
OIDC を設定した後、Gateway URL https://data-science-gateway.$CLUSTER_DOMAIN にアクセスできなくなります。URL にアクセスしようとすると、502 (Bad Gateway) または 503 (Service Unavailable) エラーが返され、サービスエンドポイントへの外部アクセスまたはトラフィックルーティングを妨げるネットワーク障害が示されます。
診断
次のコマンドを実行して、
data-science-gatewayの Gateway ステータスを確認します。oc get gateway data-science-gateway -n openshift-ingress
$ oc get gateway data-science-gateway -n openshift-ingressCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力では、
PROGRAMMED列がTrueと表示され、有効なアドレスがADDRESS列の下にリストされます。次のコマンドを実行して、
HTTPRouteのステータスを確認します。oc get httproute -n openshift-ingress
$ oc get httproute -n openshift-ingressCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力には、
oauth-callback-routeが存在することが示されています。次のコマンドを実行して、
EnvoyFilterを確認します。oc get envoyfilter -n openshift-ingress
$ oc get envoyfilter -n openshift-ingressCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力には、
authn-filterが存在することが示されています。次のコマンドを実行して、
kube-auth-proxyService を確認します。oc get service kube-auth-proxy -n openshift-ingress
$ oc get service kube-auth-proxy -n openshift-ingressCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力には、次の例のように、Service と正しいポートが存在することが示されます。
Expected output
# Expected output NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kube-auth-proxy ClusterIP 172.30.31.69 <none> 8443/TCP,9000/TCP 41hCopy to Clipboard Copied! Toggle word wrap Toggle overflow
解決方法
次のコマンドを実行して、Gateway に有効なアドレスがあることを確認します。
oc get gateway data-science-gateway -n openshift-ingress -o jsonpath='{.status.addresses}'$ oc get gateway data-science-gateway -n openshift-ingress -o jsonpath='{.status.addresses}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力には、有効な IP アドレスまたはホスト名が表示されます。
次のコマンドを実行して、
HTTPRouteが正しく設定されているか確認します。oc describe httproute oauth-callback-route -n openshift-ingress
$ oc describe httproute oauth-callback-route -n openshift-ingressCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力では、適切な親参照とバックエンドサービスを確認できます。
次のコマンドを実行して、
EnvoyFilterが正しく適用されていることを確認します。oc describe envoyfilter authn-filter -n openshift-ingress
$ oc describe envoyfilter authn-filter -n openshift-ingressCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力では、
kube-auth-proxyの適切な設定を確認できます。
10.3.4. OIDC 認証が失敗する リンクのコピーリンクがクリップボードにコピーされました!
問題
OIDC 認証が失敗し、Gateway 経由でログインできません。ログインを試みた後、リダイレクトループや明示的な認証エラーなどの現象も発生します。
診断
次のコマンドを実行して、
kube-auth-proxyログで特定のエラーメッセージを確認します。oc logs -l app=kube-auth-proxy -n openshift-ingress
$ oc logs -l app=kube-auth-proxy -n openshift-ingressCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力では、OAuth2 プロキシーが設定され、指定されたポートで起動していることを確認できます。
次のコマンドを実行して、
kube-auth-proxyシークレットの OIDC 設定を確認します。oc get secret kube-auth-proxy-creds -n openshift-ingress -o yaml
$ oc get secret kube-auth-proxy-creds -n openshift-ingress -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力には、シークレットに
OAUTH2_PROXY_CLIENT_ID、OAUTH2_PROXY_CLIENT_SECRET、OAUTH2_PROXY_COOKIE_SECRETキーが含まれていることが示されています。出力は次の例のようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、OIDC 検出エンドポイントをテストします。
curl -s https://your-keycloak-domain/realms/your-realm/.well-known/openid-configuration | jq .
curl -s https://your-keycloak-domain/realms/your-realm/.well-known/openid-configuration | jq .Copy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力では、
issuer、authorization_endpoint、token_endpointの有効なエンドポイントを含む完全な JSON 設定が返されます。
解決方法
-
OIDC プロバイダー (Keycloak など) にログインし、クライアントに登録されているリダイレクト URI が Gateway 上の予想されるエンドポイント (
https://data-science-gateway.$CLUSTER_DOMAIN/oauth2/callback) と一致していることを確認します。不一致は、リダイレクトループのよくある原因です。 次のコマンドを実行して、クライアントシークレットが正しく設定されているか確認します。
echo $KEYCLOAK_CLIENT_SECRET | base64 -d
echo $KEYCLOAK_CLIENT_SECRET | base64 -dCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力は、OIDC プロバイダーのシークレットと一致します。
次のコマンドを実行して、発行者 URL がアクセス可能であり、正しいことを確認します。
curl -I https://your-keycloak-domain/realms/your-realm/.well-known/openid-configuration
curl -I https://your-keycloak-domain/realms/your-realm/.well-known/openid-configurationCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力は
HTTP/2 200を返します。
10.3.5. 認証後、ダッシュボードにアクセスできない リンクのコピーリンクがクリップボードにコピーされました!
問題
OIDC で正常に認証された後、認可エラーが発生し、ダッシュボードにアクセスできなくなります。この失敗により、ダッシュボードにアクセスする際に 403 Forbidden エラーが発生します。
次のコマンドを実行して、
odh-dashboardのデプロイメントステータスを確認します。oc get deployment -n redhat-ods-applications rhods-dashboard
$ oc get deployment -n redhat-ods-applications rhods-dashboardCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される結果では、次の例のように、Pod が実行されていることを確認できます。
NAME READY UP-TO-DATE AVAILABLE AGE rhods-dashboard 2/2 2 2 7h42m
NAME READY UP-TO-DATE AVAILABLE AGE rhods-dashboard 2/2 2 2 7h42mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ダッシュボードログで認可エラーがないか確認します。
oc logs -l app=rhods-dashboard -n redhat-ods-applications
$ oc logs -l app=rhods-dashboard -n redhat-ods-applicationsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力では、ダッシュボードが実行中であり、リクエストを処理する準備ができていることをログで確認できます。
次のコマンドを実行して、ユーザー権限を確認します。
oc auth can-i get projects --as=your-username
$ oc auth can-i get projects --as=your-usernameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力では、ユーザーに必要なアクセス権があることを確認できます。
解決方法
次のコマンドを実行して、クラスターレベルの RBAC 権限があることを確認します。
oc adm policy add-cluster-role-to-user view your-username
$ oc adm policy add-cluster-role-to-user view your-usernameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力では、ビュークラスターロールがユーザーに追加されたことを確認できます。
次のコマンドを実行して、
odh-dashboardHTTPRoute が正しい親参照 (Gateway にリンク) で適切に設定されていることを確認します。oc get httproute rhods-dashboard -n redhat-ods-applications -o yaml
$ oc get httproute rhods-dashboard -n redhat-ods-applications -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力には、Gateway への適切な親参照が表示されます。
ダッシュボードが必要とするロールがバインドされている可能性のある、期待されるグループにユーザーが属しているか確認します。
oc get user your-username -o yaml
$ oc get user your-username -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力では、ユーザーが
odh-usersグループに属していることを確認できます。