<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="675" viewBox="0 0 1200 675" preserveAspectRatio="xMidYMid meet" role="img" data-image-type="relationship_diagram">
  <title>ValidatingAdmissionPolicy准入校验对象关系图</title>
  <desc>image_type=relationship_diagram; section=先用一句话理解 ValidatingAdmissionPolicy; purpose=说明 API 请求、ValidatingAdmissionPolicy、Binding、参数对象、CEL 表达式和准入结果的关系; key_terms=API请求, ValidatingAdmissionPolicy, Binding, 参数对象, CEL表达式, 准入结果; reader_task=快速识别无 Webhook 准入校验的对象分工与请求流向。</desc>
  <defs>
    <marker id="arrow-vap1" markerWidth="12" markerHeight="12" refX="10" refY="6" orient="auto" markerUnits="strokeWidth"><path d="M2,2 L10,6 L2,10 Z" fill="#2563eb"/></marker>
    <marker id="arrow-vap1-soft" markerWidth="12" markerHeight="12" refX="10" refY="6" orient="auto" markerUnits="strokeWidth"><path d="M2,2 L10,6 L2,10 Z" fill="#7c3aed"/></marker>
    <style>.bg{fill:#f8fbff}.card{fill:#eff6ff;stroke:#60a5fa;stroke-width:2}.policy{fill:#eef2ff;stroke:#6366f1;stroke-width:2}.param{fill:#f5f3ff;stroke:#8b5cf6;stroke-width:2}.result{fill:#ecfdf5;stroke:#22c55e;stroke-width:2}.warn{fill:#fff7ed;stroke:#fb923c;stroke-width:2}.legend{fill:#fff;stroke:#cbd5e1;stroke-width:2}.t1{font:700 24px system-ui,Arial,'Microsoft YaHei',sans-serif;fill:#0f172a}.t2{font:700 20px system-ui,Arial,'Microsoft YaHei',sans-serif;fill:#0f172a}.t3{font:16px system-ui,Arial,'Microsoft YaHei',sans-serif;fill:#334155}.small{font:14px system-ui,Arial,'Microsoft YaHei',sans-serif;fill:#475569}.line{stroke:#2563eb;stroke-width:3;fill:none;marker-end:url(#arrow-vap1)}.soft{stroke:#7c3aed;stroke-width:3;fill:none;stroke-dasharray:8 8;marker-end:url(#arrow-vap1-soft)}</style>
  </defs>
  <rect class="bg" width="1200" height="675"/>
  <text class="t1" x="600" y="82" text-anchor="middle">准入请求进入 API Server 后的对象协作</text>
  <text class="small" x="600" y="112" text-anchor="middle">策略定义规则，绑定决定范围，参数提供可复用配置，CEL 表达式给出准入判断</text>

  <rect class="card" x="96" y="280" width="180" height="116" rx="20"/>
  <text class="t2" x="186" y="322" text-anchor="middle">API 请求</text><text class="t3" x="186" y="353" text-anchor="middle">创建或更新</text><text class="t3" x="186" y="378" text-anchor="middle">资源对象</text>

  <rect class="policy" x="372" y="170" width="252" height="142" rx="22"/>
  <text class="t2" x="498" y="211" text-anchor="middle">Policy</text><text class="t3" x="498" y="243" text-anchor="middle">声明校验目标</text><text class="t3" x="498" y="270" text-anchor="middle">承载 CEL 表达式</text>
  <rect class="card" x="372" y="424" width="252" height="122" rx="22"/>
  <text class="t2" x="498" y="464" text-anchor="middle">Binding</text><text class="t3" x="498" y="496" text-anchor="middle">选择对象范围</text><text class="t3" x="498" y="523" text-anchor="middle">连接策略与参数</text>

  <rect class="warn" x="740" y="170" width="224" height="142" rx="22"/>
  <text class="t2" x="852" y="211" text-anchor="middle">CEL 表达式</text><text class="t3" x="852" y="243" text-anchor="middle">读取对象字段</text><text class="t3" x="852" y="270" text-anchor="middle">返回通过或失败</text>
  <rect class="param" x="740" y="424" width="224" height="122" rx="22"/>
  <text class="t2" x="852" y="464" text-anchor="middle">参数对象</text><text class="t3" x="852" y="496" text-anchor="middle">团队或环境阈值</text><text class="t3" x="852" y="523" text-anchor="middle">用于复用策略</text>

  <rect class="result" x="1020" y="280" width="104" height="116" rx="20"/>
  <text class="t2" x="1072" y="325" text-anchor="middle">结果</text><text class="t3" x="1072" y="357" text-anchor="middle">放行</text><text class="t3" x="1072" y="382" text-anchor="middle">或拒绝</text>

  <path class="line" d="M276 338 H348"/>
  <path class="line" d="M624 241 H716"/>
  <path class="line" d="M964 241 C1004 250 1008 305 1008 330"/>
  <path class="line" d="M624 485 H716"/>
  <path class="soft" d="M852 424 V336"/>
  <path class="soft" d="M498 424 V336"/>

  <rect class="legend" x="118" y="156" width="210" height="60" rx="24"/>
  <text class="small" x="223" y="191" text-anchor="middle">实线：请求到结果</text>
  <rect class="legend" x="118" y="464" width="210" height="60" rx="24"/>
  <text class="small" x="223" y="499" text-anchor="middle">虚线：参数参与判断</text>
</svg>
