無効なセレクター

このメッセージは、`AuthorizationPolicy`、`RequestAuthentication`、`Telemetry`、または`WasmPlugin`などのポリシーのワークロードセレクターが、Kubernetes Gateway内のポッドを効果的にターゲットとしていない場合に発生します。

ポリシーのセレクターがKubernetes Gatewayと一致する場合、次のようなメッセージが表示されます。

Warning [IST0166] (AuthorizationPolicy default/ap-ineffective testdata/k8sgateway-selector.yaml:47) Ineffective selector on
Kubernetes Gateway bookinfo-gateway. Use the TargetRef field instead.

たとえば、次のようなKubernetes Gatewayポッドがある場合

apiVersion: v1
kind: Pod
metadata:
  annotations:
    istio.io/rev: default
  labels:
    gateway.networking.k8s.io/gateway-name: bookinfo-gateway
  name: bookinfo-gateway-istio-6ff4cf9645-xbqmc
  namespace: default
spec:
  containers:
  - image: proxyv2:1.21.0
    name: istio-proxy

apiVersion: security.istio.io/v1
kind: AuthorizationPolicy
metadata:
  namespace: default
  name: ap-ineffective
spec:
  selector:
    matchLabels:
      gateway.networking.k8s.io/gateway-name: bookinfo-gateway
  action: DENY
  rules:
  - from:
    - source:
      namespaces: ["dev"]
    to:
    - operation:
      methods: ["POST"]

そして、次のような`selector`を持つ`AuthorizationPolicy`がある場合

apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
  name: telemetry-example
  namespace: default
spec:
  tracing:
  - randomSamplingPercentage: 10.00
  selector:
    matchLabels:
      gateway.networking.k8s.io/gateway-name: bookinfo-gateway
  targetRef:
    group: gateway.networking.k8s.io
    kind: Gateway
    name: bookinfo-gateway

解決方法

ポリシーに`targetRef`と`selector`の両方がある場合、このメッセージは発生しません。例:

サイドカーまたはIstio Gatewayポッドには`selector`フィールドを、Kubernetes Gatewayポッドには`targetRef`フィールドを使用していることを確認してください。そうでない場合、ポリシーは適用されません。

apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
  name: telemetry-example
  namespace: default
spec:
  tracing:
  - randomSamplingPercentage: 10.00
  targetRef:
    group: gateway.networking.k8s.io
    kind: Gateway
    name: bookinfo-gateway