5.6. Ingress と Istio ルーティングの確認
Istio が Ingress レイヤーとして使用されている場合、Ingress と Istio のルーティングに問題が発生することがあります。OpenShift CLI (oc
) を使用すると、それらの詳細を確認できます。
手順
次のコマンドを実行して、すべての Ingress リソースとそれに対応するラベルをリスト表示します。
$ oc get ingresses.networking.internal.knative.dev -o=custom-columns='NAME:.metadata.name,LABELS:.metadata.labels'
出力例
NAME LABELS helloworld-go map[serving.knative.dev/route:helloworld-go serving.knative.dev/routeNamespace:default serving.knative.dev/service:helloworld-go]
この出力では、
serving.knative.dev/route
ラベルおよびserving.knative.dev/routeNamespace
ラベルは、Ingress リソースが存在するRoute
を示しています。Route
と Ingress がリスト表示されているはずです。Ingress が存在しない場合、ルートコントローラーは、
Route
オブジェクトまたはService
オブジェクトの対象であるRevision
オブジェクトの準備ができていないと想定します。他のデバッグ手順に進み、Revision
の readiness ステータスを診断します。Ingress がリスト表示されている場合は、次のコマンドを実行して、ルートに対して作成された
ClusterIngress
オブジェクトを調べます。$ oc get ingresses.networking.internal.knative.dev <ingress_name> --output yaml
出力のステータスセクションで、
type=Ready
の条件のステータスがTrue
であれば、Ingress は正常に機能しています。それ以外の場合は、出力にエラーメッセージが表示されます。Ingress のステータスが
Ready
の場合、対応するVirtualService
オブジェクトがあります。次のコマンドを実行して、VirtualService
オブジェクトの設定を確認します。$ oc get virtualservice -l networking.internal.knative.dev/ingress=<ingress_name> -n <ingress_namespace> --output yaml
VirtualService
オブジェクトのネットワーク設定は、Ingress
オブジェクトおよびRoute
オブジェクトのネットワーク設定と一致する必要があります。VirtualService
オブジェクトはStatus
フィールドを公開しないため、その設定が反映されるまで待つことを推奨します。