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のフォーマットに注意してください。
ルートを、最も具体的なものから先に並べ替えてください。「キャッチオール」ルートは最後に配置してください。