You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

istio-system命名空间下AuthorizationPolicy的matchLabels不生效问题

问题原因与解决方法

istio-system 命名空间本身没有特殊规则排除 AuthorizationPolicy 执行,你遇到的问题是两个常见配置遗漏导致的:

  1. Sidecar 注入缺失
    istio-system 命名空间默认不会开启自动 Sidecar 注入(只有官方 Istio 组件部署时会手动注入 Sidecar),你自行部署在 istio-system 下的 kialitest Deployment 没有 Sidecar 容器,而 AuthorizationPolicy 的规则完全靠 Sidecar 代理执行,没有 Sidecar 的话所有授权规则都会被直接跳过。你迁移到的独立命名空间应该已经打上了 istio-injection=enabled 标签,Pod 创建时自动注入了 Sidecar,所以规则正常生效。
    你可以执行以下命令验证是否注入了 Sidecar:
kubectl get pod <kialitest-pod-name> -n istio-system -o jsonpath='{.spec.containers[*].name}'

如果输出只有 kialitest 没有 istio-proxy,即可确认是未注入 Sidecar 导致的问题。

  1. 授权策略作用对象匹配问题
    你当前的 AuthorizationPolicy 没有配置 selector 字段,默认会作用于所在命名空间下所有带 Sidecar 的 Pod。如果你是想在 Ingress 网关层面做访问控制,需要显式指定 selector 匹配 Ingress 网关的标签,示例:
spec:
  selector:
    matchLabels:
      istio: ingressgateway
  action: DENY
  rules:
  - {}

如果是想对后端服务做访问控制,给 Deployment 的 Pod 模板打上标签后,在 AuthorizationPolicy 的 selector 里匹配对应标签即可。

验证方法

给 istio-system 命名空间打注入标签后重建 Pod 即可验证:

kubectl label namespace istio-system istio-injection=enabled
kubectl rollout restart deployment kialitest -n istio-system

待 Pod 重建完成确认 Sidecar 注入成功后,授权策略就会正常生效。

内容的提问来源于stack exchange,提问作者Hetr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 00:06:03