このトピックでは、kubectl コマンドを実行してゲートウェイを照会すると、ゲートウェイが返されない、または Istio 以外のゲートウェイが返される問題について説明します。 また、この問題の原因と解決策についても説明します。
問題の説明
Istio ゲートウェイが作成されます。 次のコマンドを実行した後、リソースが見つかりません
というメッセージが返されるか、Istio 以外のゲートウェイが返されます。
kubectl get gateway --all-namespaces
原因
Istio バージョンが 1.8.6 以降の Service Mesh (ASM) インスタンスを使用している場合、この問題が発生する可能性があります。 これは、Istio バージョンが 1.8.6 以降の ASM インスタンスに Kubernetes Gateway API が自動的にインストールされるためです。 詳細については、「Gateway API を使用してルーティングルールを定義する」をご参照ください。
Kubernetes Gateway API と Istio API はどちらも Gateway という名前のリソースを提供しています。 2 つの Gateway リソースは機能が似ていますが、異なるリソースです。 kubectl get gateway
を実行すると、システムはどのリソースを指定しているかを識別できません。 その結果、Istio ゲートウェイではなく Kubernetes ゲートウェイが返される場合があります。 この場合、Kubernetes ゲートウェイが定義されていないと、ゲートウェイは返されません。 Kubernetes ゲートウェイが定義されている場合は、Kubernetes ゲートウェイが返されます。
解決策
ASM コンソールを使用して Istio ゲートウェイを表示します。
kubectl コマンドで完全なリソース名または認識可能な省略形を使用します。
たとえば、Kubernetes ゲートウェイを表すには gtw を、Istio ゲートウェイを表すには gw を使用できます。 この場合、
kubectl get gw
またはkubectl get gateways.networking.istio.io
を実行して、Istio ゲートウェイが返されることを確認できます。