競合するメッシュゲートウェイVirtualServiceホスト
このメッセージは、Istio が競合する複数の Virtual Service リソース間の重複を検出した場合に発生します。たとえば、同じホスト名を使用し、メッシュゲートウェイに接続するように定義された複数の Virtual Service は、エラーメッセージを生成します。Istio は、イングレスゲートウェイに接続された Virtual Service のマージをサポートしていることに注意してください。
解決策
この問題を解決するには、次のいずれかの操作を実行できます。
- 競合する Virtual Service を単一のリソースにマージします。
- メッシュゲートウェイに接続された Virtual Service 間で、ホスト名を一意にします。
exportTo
フィールドを設定して、リソースを特定のネームスペースにスコープします。
例
ネームスペース team1
の productpage
Virtual Service は、team2
ネームスペースの custom
Virtual Service と競合します。これは、以下の両方が当てはまるためです。
- カスタムゲートウェイが指定されていないため、どちらもデフォルトの「メッシュ」ゲートウェイに接続されています。
- どちらも同じホスト
productpage.default.svc.cluster.local
を定義しています。
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
name: productpage
namespace: team-1
spec:
hosts:
- productpage.default.svc.cluster.local
http:
- route:
- destination:
host: productpage
---
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
name: custom
namespace: team-2
spec:
hosts:
- productpage.default.svc.cluster.local
http:
- route:
- destination:
host: productpage.team-2.svc.cluster.local
---
この問題を解決するには、exportTo
フィールドを .
に設定して、各 Virtual Service が自身のネームスペースのみにスコープされるようにします。
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
name: productpage
namespace: team-1
spec:
exportTo:
- "."
hosts:
- productpage.default.svc.cluster.local
http:
- route:
- destination:
host: productpage
---
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
name: custom
namespace: team-2
spec:
exportTo:
- "."
hosts:
- productpage.default.svc.cluster.local
http:
- route:
- destination:
host: productpage.team-2.svc.cluster.local
---