將策略應用于集群中的現(xiàn)有資源。
Kyverno 可以驗證集群中可能在創(chuàng)建策略之前創(chuàng)建的現(xiàn)有資源室抽。在將新驗證策略更改為強制模式之前評估新 validate
策略對集群的潛在影響時,這可能很有用犀呼。將策略應用于現(xiàn)有資源稱為后臺掃描枣察,并且默認啟用,除非在策略中將 background
設(shè)置為 false
晰奖,如下面的代碼片段所示。
spec:
background: false
rules:
- name: default-deny-ingress
在 Policy
或 ClusterPolicy
對象中默認啟用帶有 spec.background
字段的后臺掃描腥泥,允許 Kyverno 掃描現(xiàn)有資源并查找它們是否匹配任何 validate 規(guī)則匾南。如果發(fā)現(xiàn)違反現(xiàn)有策略的現(xiàn)有資源,后臺掃描會將它們記錄在 ClusterPolicyReport
或 PolicyReport
對象中蛔外,具體取決于資源是否是命名空間級別的蛆楞。即使在 enforce
模式下,它也不會阻塞任何匹配到 validate 規(guī)則的現(xiàn)有資源夹厌。后臺掃描是可選字段豹爹,默認為true,僅對 validate
規(guī)則生效矛纹。它對 generate
和 mutate
規(guī)則無效臂聋。
默認情況下,后臺掃描每小時發(fā)生一次或南,可以通過 background-scan 標志進行配置孩等。
后臺掃描會定期遍歷所有 background=true
的策略,并依據(jù)策略配置采够,按照 kind
肄方、namespace
和 LabelSelector
從 API Server 獲取相關(guān)資源列表,再將資源挨個交由策略進行評估后蹬癌,并產(chǎn)生策略報告权她。
注意:Kyverno 不會改變現(xiàn)有資源以防止無意中更改工作負載虹茶。在后臺掃描期間不處理 mutate 和 generate 規(guī)則。
當啟用后臺掃描時隅要,無論規(guī)則的 validationFailureAction
被設(shè)置為 enforce
還是 audit
蝴罪,違規(guī)行為將記錄在報告中。要查看報告如何與后臺掃描一起工作的詳細信息拾徙,請參閱下表洲炊。
background: true 的報告行為
新資源 | 已存在資源 | |
---|---|---|
validationFailureAction: enforce | None | Report |
validationFailureAction: audit | Report | Report |
background: false 的報告行為
新資源 | 已存在資源 | |
---|---|---|
validationFailureAction: enforce | None | None |
validationFailureAction: audit | Report | None |
策略中如果使用了來自 AdmissionReview請求信息中的變量(如 request.userInfo
),將無法在后臺掃描模式下應用于現(xiàn)有資源尼啡,因為這些信息必須來自于一個 AdmissionReview 請求暂衡,而在資源已存在時,無法獲取到這些信息崖瞭。因此狂巢,這類策略必須將 background
設(shè)置為 false
以禁用后臺掃描。 request.object
和 request.namespace
變量例外书聚。