VirtualServiceUnreachableRule

このメッセージは、仮想サービスに、前のルールが同じマッチを指定しているため使用されないマッチルールが含まれている場合に発生します。また、マッチがまったくないルールが複数ある場合にも発生します。

このメッセージが表示されます

Warning [IST0130] (VirtualService sample-foo-cluster01.default) VirtualService rule #1 not used (only the last rule can have no matches).

クラスタに以下の仮想サービスが存在する場合

apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: sample-foo-cluster01
  namespace: foo
spec:
  hosts:
  - sample.foo.svc.cluster.local
  http:
  - fault:
      delay:
        fixedDelay: 5s
        percentage:
          value: 100
    route:
    - destination:
        host: sample.foo.svc.cluster.local
  - mirror:
      host: sample.bar.svc.cluster.local
    route:
    - destination:
        host: sample.bar.svc.cluster.local
        subset: v1

この例では、仮想サービスはフォルトとミラーの両方を指定しています。両方を指定することは許可されていますが、同じルートエントリに存在する必要があります。ユーザーは2つの異なるHTTPルートエントリ(それぞれに`-` が付いている)を使用しており、最初のエントリが2番目のエントリをオーバーライドしています。

解決方法

`match`を持たない`http`の場合、HTTPルートは1つしか定義できません。この場合、`mirror` の前の `-` を削除すると、フォルトを注入し、同時にミラーリングを行う単一のマッチレスルートを示します。フォルトを行うルートとミラーリングを行うルートが別々に存在するわけではありません。

複雑なルーティング設定を行う際には、YAMLのフォーマットに注意してください。

ルートを、最も具体的なものから先に並べ替えてください。「キャッチオール」ルートは最後に配置してください。