全部產品
Search
文件中心

Container Service for Kubernetes:使用Kyverno作為策略治理引擎

更新時間:Dec 16, 2025

Kyverno是Kubernetes原生策略引擎,通過“策略即代碼”(Policy-as-Code)定義和執行安全、合規及自動化策略。相較於叢集預設整合的OPA Gatekeeper,Kyverno支援使用YAML定義(無需學習 Rego),並支援在資源准入階段進行修改(Mutating)和產生(Generating),適用於需要高度自訂策略、實現營運自動化、或進行多叢集策略治理的情境。

工作原理

Kyverno以動態准入控制器(Dynamic Admission Controller)的形式運行在Kubernetes叢集中,攔截來自API Server的Webhook准入請求,執行校正(Validating)或變更(Mutating)操作,並返回審計結果。

下圖展示 Kyverno 如何通過 Admission Webhook 在 API Server 的准入階段進行策略校正和資源變更。

image

適用情境

ACK安全性原則管理功能預設提供基於OPA Gatekeeper的安全性原則管理能力,並內建面向不同安全合規和營運情境的容器安全性原則規則庫,以滿足通用的審計和攔截需求。它支援多策略執行個體部署,可與SLSLog Service整合,以提升策略治理的可觀測性。

Kyverno是為Kubernetes原生設計的策略引擎,使用標準CRD來定義和管理原則,提供更為簡潔、易用的體驗。其核心優勢包括:

  • YAML定義:策略採用標準YAML格式編寫,與Kubernetes Manifests風格一致,無需學習Rego等專用策略語言,降低使用門檻。

  • 豐富的功能支援:原生支援校正(Validate)、修改(Mutate)和產生(Generate)操作,能覆蓋更廣泛的自動化和Policy-as-Code情境。

  • 覆蓋存量資源:不僅在資源准入時生效,還支援對叢集存量資源進行掃描、報告、修改與產生操作。

  • 關聯資源自動產生:可根據策略自動建立NetworkPolicy、ConfigMap等關聯資源,實現自動化配置。

相較於Kubernetes社區原生的ValidatingAdmissionPolicyMutatingAdmissionPolicy,Kyverno的企業級策略治理能力更為全面。推薦的使用情境如下。

  • 自訂策略:需要為CRD快速編寫和部署策略。

  • 修改與建置原則:需要使用Mutating或Generating策略。

    Kyverno具備完善的緩衝、外部資料調用和報告機制,並擴充了CEL文法庫,能滿足企業特定情境下Policy-as-Code的擴充需求。
  • 多叢集策略治理:期望通過CLI、API或與GitOps工具(如ArgoCD)整合,實現跨多個叢集的統一策略分發與管理。

準備工作

已建立1.30及以上版本的ACK託管叢集ACK專有叢集。如需升級,請參見手動升級叢集

重要

Kyverno遵循Kubernetes社區N-2版本支援策略,維護目前的版本及前兩個次要版本。更早版本未經充分測試,不保證相容性。詳見Kyverno相容性矩陣

安裝Kyverno組件

  1. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇應用 > Helm

  2. 單擊建立,按照頁面提示搜尋並選中kyverno,選擇Chart版本為最新版本,並設定相應參數(可參見自訂參數),完成組件的安裝。

策略類型

Kyverno在1.15版本新增了多種策略類型。詳見策略類型

策略類型

說明

ClusterPolicy

通用策略類型,支援Validate、Mutate和Generate類型的規則。

ValidatingPolicy(Alpha in v1.15)

校正Kubernetes資源或工作負載模板,擴充原生ValidatingAdmissionPolicy能力,以支援更全面的企業級策略校正能力。

MutatingPolicy(Alpha in v1.15)

修改Kubernetes資源或工作負載模板,擴充原生MutatingAdmissionPolicy能力,以實現更全面的企業級策略治理能力。

GeneratingPolicy(Alpha in v1.15)

基於CEL語言建立和同步更新指定的Kubernetes資源。

DeletingPolicy(Alpha in v1.15)

在叢集或命名空間維度清理指定資源。

ImageValidatingPolicy(Alpha in v1.15)

驗證鏡像簽名和證明資訊,支援cosign/notary簽名檢查、SBOM驗證等。

適用於生產環境

  • 合理配置失敗策略(Failure Policy)

    failurePolicy定義了當Webhook調用失敗時API Server的行為,可根據安全性與可營運性按需選擇策略。配置詳見安全與營運

    • Fail-open:允許API請求繼續執行,可能存在安全風險。

    • Fail-closed:阻止API請求,可能導致叢集操作中斷。

  • 配置高可用與可觀測性

    • 高可用部署:使用多副本運行Kyverno,結合使用Pod反親和性(Pod Anti-Affinity)與拓撲分布約束(Topology Spread Constraints),將副本分散至不同節點或可用性區域。

    • 資源規劃:為Kyverno Pod配置明確的資源requestslimits

    • 監控警示:啟用阿里雲Prometheus監控,監控Pod狀態、資源使用率、Webhook延遲和錯誤率等關鍵計量,並設定警示。

更多高可用建議,請參見實現高可用