ValidatingWebhookConfiguration
apiVersion: admissionregistration.k8s.io/v1
import "k8s.io/api/admissionregistration/v1"
ValidatingWebhookConfiguration
ValidatingWebhookConfiguration 描述了准入 Webhook 的配置,該 Webhook 接受或拒絕物件而不對其進行更改。
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata (ObjectMeta)
標準物件元資料;更多資訊: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata。
webhooks ([]ValidatingWebhook)
補丁策略:在鍵
name
上合併對映:合併時將保留鍵名上的唯一值
Webhooks 是 Webhook 列表以及受影響的資源和操作。
ValidatingWebhook 描述了一個准入 Webhook 以及它所應用於的資源和操作。
webhooks.admissionReviewVersions ([]string), required
原子性:在合併期間將被替換
AdmissionReviewVersions 是 Webhook 期望的
AdmissionReview
首選版本的有序列表。API 伺服器將嘗試使用列表中它支援的第一個版本。如果 API 伺服器不支援此列表中指定的任何版本,則此物件的驗證將失敗。如果持久化的 Webhook 配置指定了允許的版本並且不包含 API 伺服器已知的任何版本,則對 Webhook 的呼叫將失敗並受制於故障策略。webhooks.clientConfig (WebhookClientConfig), required
ClientConfig 定義瞭如何與 Hook 通訊。必需。
WebhookClientConfig 包含與 Webhook 建立 TLS 連線的資訊
webhooks.clientConfig.caBundle ([]byte)
caBundle
是 PEM 編碼的 CA 捆綁包,將用於驗證 Webhook 的伺服器證書。如果未指定,則使用 apiserver 上的系統信任根。webhooks.clientConfig.service (ServiceReference)
service
是此 Webhook 服務的引用。必須指定service
或url
中的一個。如果 Webhook 在叢集內執行,則應使用 `service`。
ServiceReference 包含對 Service.legacy.k8s.io 的引用
webhooks.clientConfig.service.name (string), required
name
是服務的名稱。必需。webhooks.clientConfig.service.namespace (string), required
namespace
是服務的名稱空間。必需。webhooks.clientConfig.service.path (string)
path
是一個可選的 URL 路徑,將在對此服務的所有請求中傳送。webhooks.clientConfig.service.port (int32)
如果指定,則為託管 webhook 的服務埠。為向後相容,預設為 443。`port` 應為有效的埠號(包括 1-65535)。
webhooks.clientConfig.url (string)
url
以標準 URL 形式(scheme://host:port/path
)給出 Webhook 的位置。url
或service
必須且只能指定一個。host
不應引用叢集中執行的服務;請改用service
欄位。在某些 apiserver 中,主機可能透過外部 DNS 解析(例如,kube-apiserver
無法解析叢集內 DNS,因為那將是分層違規)。host
也可以是 IP 地址。請注意,使用
localhost
或127.0.0.1
作為host
存在風險,除非您非常小心地在所有執行 apiserver 的主機上執行此 Webhook,這些 apiserver 可能需要呼叫此 Webhook。此類安裝可能不可移植,即,在新叢集中不易啟動。方案必須是“https”;URL 必須以“https://”開頭。
path 是可選的,如果存在,可以是 URL 中允許的任何字串。您可以使用 path 向 Webhook 傳遞任意字串,例如叢集識別符號。
不允許嘗試使用使用者或基本身份驗證,例如 "user:password@"。片段 ("#...") 和查詢引數 ("?...") 也不允許。
webhooks.name (string), required
准入 Webhook 的名稱。名稱應完全限定,例如 imagepolicy.kubernetes.io,其中 "imagepolicy" 是 Webhook 的名稱,kubernetes.io 是組織的名稱。必需。
webhooks.sideEffects (string), required
SideEffects 說明此 Webhook 是否具有副作用。可接受的值為:None、NoneOnDryRun(透過 v1beta1 建立的 Webhook 也可以指定 Some 或 Unknown)。具有副作用的 Webhook 必須實現一個協調系統,因為請求可能被准入鏈中的未來步驟拒絕,因此需要撤銷副作用。如果請求具有 dryRun 屬性,並且與 sideEffects == Unknown 或 Some 的 Webhook 匹配,則將自動拒絕該請求。
webhooks.failurePolicy (string)
FailurePolicy 定義瞭如何處理來自准入端點的無法識別的錯誤 - 允許的值為 Ignore 或 Fail。預設為 Fail。
webhooks.matchConditions ([]MatchCondition)
補丁策略:在鍵
name
上合併對映:合併時將保留鍵名上的唯一值
MatchConditions 是必須滿足的條件列表,請求才能傳送到此 Webhook。匹配條件會過濾已經由規則、namespaceSelector 和 objectSelector 匹配的請求。空的 matchConditions 列表匹配所有請求。最多允許 64 個匹配條件。
確切的匹配邏輯是(按順序)
- 如果任何 matchCondition 評估為 FALSE,則跳過 Webhook。
- 如果所有 matchCondition 都評估為 TRUE,則呼叫 Webhook。
- 如果任何 matchCondition 評估為錯誤(但沒有一個為 FALSE)
- 如果 failurePolicy=Fail,則拒絕請求
- 如果 failurePolicy=Ignore,則忽略錯誤並跳過 Webhook。
MatchCondition 表示 Webhook 必須滿足才能傳送請求的條件。
webhooks.matchConditions.expression (string), required
Expression 表示將由 CEL 評估的表示式。必須評估為布林值。CEL 表示式可以訪問 AdmissionRequest 和 Authorizer 的內容,這些內容組織成 CEL 變數
'object' - 來自傳入請求的物件。對於 DELETE 請求,該值為 null。'oldObject' - 現有物件。對於 CREATE 請求,該值為 null。'request' - 准入請求的屬性(/pkg/apis/admission/types.go#AdmissionRequest)。'authorizer' - 一個 CEL Authorizer。可用於對請求的主體(使用者或服務帳戶)執行授權檢查。請參閱 https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz 'authorizer.requestResource' - 從 'authorizer' 構建並配置了請求資源的 CEL ResourceCheck。CEL 文件:https://kubernetes.club.tw/docs/reference/using-api/cel/
必需。
webhooks.matchConditions.name (string), required
Name 是此匹配條件的識別符號,用於 MatchConditions 的策略性合併,以及提供日誌記錄目的的識別符號。一個好的名稱應該能夠描述相關的表示式。名稱必須是合格名稱,由字母數字字元、'-'、'_' 或 '.' 組成,並且必須以字母數字字元開頭和結尾(例如 'MyName',或 'my.name',或 '123-abc',用於驗證的正則表示式是 '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]'),並帶有可選的 DNS 子域字首和 '/'(例如 'example.com/MyName')
必需。
webhooks.matchPolicy (string)
matchPolicy 定義瞭如何使用 "rules" 列表來匹配傳入請求。允許的值為 "Exact" 或 "Equivalent"。
Exact:僅當請求與指定規則完全匹配時才匹配。例如,如果部署可以透過 apps/v1、apps/v1beta1 和 extensions/v1beta1 修改,但 "rules" 只包含
apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]
,則對 apps/v1beta1 或 extensions/v1beta1 的請求將不會發送到 Webhook。Equivalent:如果請求透過另一個 API 組或版本修改了規則中列出的資源,則匹配該請求。例如,如果部署可以透過 apps/v1、apps/v1beta1 和 extensions/v1beta1 修改,並且 "rules" 只包含
apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]
,則對 apps/v1beta1 或 extensions/v1beta1 的請求將被轉換為 apps/v1 併發送到 Webhook。
預設為 "Equivalent"
webhooks.namespaceSelector (LabelSelector)
NamespaceSelector 根據物件的名稱空間是否匹配選擇器來決定是否在物件上執行 Webhook。如果物件本身是名稱空間,則在 object.metadata.labels 上執行匹配。如果物件是另一個叢集範圍的資源,則永遠不會跳過 Webhook。
例如,要在任何名稱空間不與 "runlevel" 的 "0" 或 "1" 關聯的物件上執行 Webhook;您將按如下方式設定選擇器: "namespaceSelector": { "matchExpressions": [ { "key": "runlevel", "operator": "NotIn", "values": [ "0", "1" ] } ] }
如果您想僅在任何名稱空間與 "environment" 的 "prod" 或 "staging" 關聯的物件上執行 Webhook;您將按如下方式設定選擇器: "namespaceSelector": { "matchExpressions": [ { "key": "environment", "operator": "In", "values": [ "prod", "staging" ] } ] }
有關標籤選擇器的更多示例,請參閱 https://kubernetes.club.tw/docs/concepts/overview/working-with-objects/labels。
預設為空 LabelSelector,它匹配所有內容。
webhooks.objectSelector (LabelSelector)
ObjectSelector 根據物件是否具有匹配標籤來決定是否執行 Webhook。objectSelector 會針對將傳送到 Webhook 的 oldObject 和 newObject 進行評估,如果其中任何一個物件匹配選擇器,則認為匹配。空物件(建立時的 oldObject,或刪除時的 newObject)或不能具有標籤的物件(如 DeploymentRollback 或 PodProxyOptions 物件)不被視為匹配。僅當 Webhook 是可選的才使用物件選擇器,因為終端使用者可以透過設定標籤來跳過准入 Webhook。預設為空 LabelSelector,它匹配所有內容。
webhooks.rules ([]RuleWithOperations)
原子性:在合併期間將被替換
規則描述了 Webhook 關心的資源/子資源上的操作。如果 Webhook 匹配 *任何* 規則,則它關心該操作。但是,為了防止 ValidatingAdmissionWebhooks 和 MutatingAdmissionWebhooks 在不完全停用外掛的情況下將叢集置於無法恢復的狀態,ValidatingAdmissionWebhooks 和 MutatingAdmissionWebhooks 永遠不會在 ValidatingWebhookConfiguration 和 MutatingWebhookConfiguration 物件的准入請求上呼叫。
RuleWithOperations 是操作和資源的元組。建議確保所有元組擴充套件都有效。
webhooks.rules.apiGroups ([]string)
原子性:在合併期間將被替換
APIGroups 是資源所屬的 API 組。'' 表示所有組。如果存在 '',則切片的長度必須為 1。必需。
webhooks.rules.apiVersions ([]string)
原子性:在合併期間將被替換
APIVersions 是資源所屬的 API 版本。'' 表示所有版本。如果存在 '',則切片的長度必須為 1。必需。
webhooks.rules.operations ([]string)
原子性:在合併期間將被替換
Operations 是准入鉤子關心的操作 - CREATE、UPDATE、DELETE、CONNECT 或 * 表示所有這些操作以及將來新增的任何准入操作。如果存在 '*',則切片的長度必須為 1。必需。
webhooks.rules.resources ([]string)
原子性:在合併期間將被替換
Resources 是此規則適用的資源列表。
例如:'pods' 表示 Pod。'pods/log' 表示 Pod 的日誌子資源。'*' 表示所有資源,但不包括子資源。'pods/*' 表示 Pod 的所有子資源。'*/scale' 表示所有 scale 子資源。'*/*' 表示所有資源及其子資源。
如果存在萬用字元,則驗證規則將確保資源彼此不重疊。
根據包圍物件,可能不允許子資源。必需。
webhooks.rules.scope (string)
scope 指定此規則的範圍。有效值為 "Cluster"、"Namespaced" 和 ""。"Cluster" 表示只有叢集範圍的資源才會匹配此規則。Namespace API 物件是叢集範圍的。"Namespaced" 表示只有名稱空間範圍的資源才會匹配此規則。"" 表示沒有範圍限制。子資源匹配其父資源的範圍。預設為 "*"。
webhooks.timeoutSeconds (int32)
TimeoutSeconds 指定此 Webhook 的超時時間。超時時間過後,Webhook 呼叫將被忽略,或者 API 呼叫將根據故障策略失敗。超時值必須介於 1 到 30 秒之間。預設為 10 秒。
ValidatingWebhookConfigurationList
ValidatingWebhookConfigurationList 是 ValidatingWebhookConfiguration 的列表。
items ([]ValidatingWebhookConfiguration), required
ValidatingWebhookConfiguration 列表。
apiVersion (string)
APIVersion 定義了此物件表示的版本化 schema。伺服器應將已識別的 schema 轉換為最新的內部值,並可能拒絕無法識別的值。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
kind (string)
Kind 是表示此物件所代表的 REST 資源的字串值。伺服器可以從客戶端提交請求的端點推斷出此值。不可更新。採用 CamelCase。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
metadata (ListMeta)
標準列表元資料。更多資訊: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
操作
get
讀取指定的 ValidatingWebhookConfiguration
HTTP 請求
GET /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations/{name}
引數
name (在路徑中): string,必填
ValidatingWebhookConfiguration 的名稱
pretty (在查詢中): string
響應
200 (ValidatingWebhookConfiguration): 成功
401: 未授權
list
列出或監視 ValidatingWebhookConfiguration 型別的物件
HTTP 請求
GET /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations
引數
allowWatchBookmarks (在查詢中): boolean
continue (在查詢中): string
fieldSelector (在查詢中): string
labelSelector (在查詢中): string
limit (在查詢中): integer
pretty (在查詢中): string
resourceVersion (在查詢中): string
resourceVersionMatch (在查詢中): string
sendInitialEvents (在查詢中): boolean
timeoutSeconds (在查詢中): integer
watch (在查詢中): boolean
響應
200 (ValidatingWebhookConfigurationList): 成功
401: 未授權
create
建立一個 ValidatingWebhookConfiguration
HTTP 請求
POST /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations
引數
body: ValidatingWebhookConfiguration, required
dryRun (在查詢中): string
fieldManager (在查詢中): string
fieldValidation (在查詢中): string
pretty (在查詢中): string
響應
200 (ValidatingWebhookConfiguration): 成功
201 (ValidatingWebhookConfiguration): 已建立
202 (ValidatingWebhookConfiguration): 已接受
401: 未授權
update
替換指定的 ValidatingWebhookConfiguration
HTTP 請求
PUT /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations/{name}
引數
name (在路徑中): string,必填
ValidatingWebhookConfiguration 的名稱
body: ValidatingWebhookConfiguration, required
dryRun (在查詢中): string
fieldManager (在查詢中): string
fieldValidation (在查詢中): string
pretty (在查詢中): string
響應
200 (ValidatingWebhookConfiguration): 成功
201 (ValidatingWebhookConfiguration): 已建立
401: 未授權
patch
部分更新指定的 ValidatingWebhookConfiguration
HTTP 請求
PATCH /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations/{name}
引數
name (在路徑中): string,必填
ValidatingWebhookConfiguration 的名稱
body: Patch,必需
dryRun (在查詢中): string
fieldManager (在查詢中): string
fieldValidation (在查詢中): string
force (在查詢中): boolean
pretty (在查詢中): string
響應
200 (ValidatingWebhookConfiguration): 成功
201 (ValidatingWebhookConfiguration): 已建立
401: 未授權
delete
刪除一個 ValidatingWebhookConfiguration
HTTP 請求
DELETE /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations/{name}
引數
name (在路徑中): string,必填
ValidatingWebhookConfiguration 的名稱
body: DeleteOptions
dryRun (在查詢中): string
gracePeriodSeconds (在查詢中): integer
ignoreStoreReadErrorWithClusterBreakingPotential (在查詢中): boolean
pretty (在查詢中): string
propagationPolicy (在查詢中): string
響應
200 (Status): OK
202 (Status): 已接受
401: 未授權
deletecollection
刪除 ValidatingWebhookConfiguration 集合
HTTP 請求
DELETE /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations
引數
body: DeleteOptions
continue (在查詢中): string
dryRun (在查詢中): string
fieldSelector (在查詢中): string
gracePeriodSeconds (在查詢中): integer
ignoreStoreReadErrorWithClusterBreakingPotential (在查詢中): boolean
labelSelector (在查詢中): string
limit (在查詢中): integer
pretty (在查詢中): string
propagationPolicy (在查詢中): string
resourceVersion (在查詢中): string
resourceVersionMatch (在查詢中): string
sendInitialEvents (在查詢中): boolean
timeoutSeconds (在查詢中): integer
響應
200 (Status): OK
401: 未授權
本頁面是自動生成的。
如果你打算報告此頁面存在的問題,請在問題描述中提及此頁面是自動生成的。修復可能需要在 Kubernetes 專案的其他地方進行。