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'
$ oc get ingresses.networking.internal.knative.dev -o=custom-columns='NAME:.metadata.name,LABELS:.metadata.labels'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME LABELS helloworld-go map[serving.knative.dev/route:helloworld-go serving.knative.dev/routeNamespace:default serving.knative.dev/service:helloworld-go]
NAME LABELS helloworld-go map[serving.knative.dev/route:helloworld-go serving.knative.dev/routeNamespace:default serving.knative.dev/service:helloworld-go]Copy to Clipboard Copied! Toggle word wrap Toggle overflow この出力では、
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
$ oc get ingresses.networking.internal.knative.dev <ingress_name> --output yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力のステータスセクションで、
type=Readyの条件のステータスがTrueであれば、Ingress は正常に機能しています。それ以外の場合は、出力にエラーメッセージが表示されます。Ingress のステータスが
Readyの場合、対応するVirtualServiceオブジェクトがあります。次のコマンドを実行して、VirtualServiceオブジェクトの設定を確認します。oc get virtualservice -l networking.internal.knative.dev/ingress=<ingress_name> -n <ingress_namespace> --output yaml
$ oc get virtualservice -l networking.internal.knative.dev/ingress=<ingress_name> -n <ingress_namespace> --output yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow VirtualServiceオブジェクトのネットワーク設定は、IngressオブジェクトおよびRouteオブジェクトのネットワーク設定と一致する必要があります。VirtualServiceオブジェクトはStatusフィールドを公開しないため、その設定が反映されるまで待つことを推奨します。