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)
Patch 策略:merge on key
name
Map:在合併期間,將保留 key name 上的唯一值
Webhooks 是 Webhook 清單,以及受影響的資源與操作。
ValidatingWebhook 描述了許可 Webhook 及其套用的資源與操作。
webhooks.admissionReviewVersions ([]string), required
Atomic:將在合併期間被取代
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 的伺服器憑證。 如果未指定,則使用 API 伺服器上的系統信任根。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
欄位。 主機可能會透過某些 API 伺服器中的外部 DNS 解析 (例如,kube-apiserver
無法解析叢集內 DNS,因為這會違反分層)。host
也可能是 IP 位址。請注意,除非您非常小心地在所有執行 API 伺服器的主機上執行此 Webhook,否則使用
localhost
或127.0.0.1
作為host
是有風險的,這些主機可能需要呼叫此 Webhook。 這樣的安裝可能不具可攜性,即不容易在新叢集中啟動。scheme 必須為 "https"; URL 必須以 "https://" 開頭。
路徑是選用的,如果存在,則可以是 URL 中允許的任何字串。 您可以使用路徑將任意字串傳遞給 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)
Patch 策略:merge on key
name
Map:在合併期間,將保留 key name 上的唯一值
MatchConditions 是請求要傳送到此 Webhook 必須滿足的條件清單。 比對條件會篩選已經與規則、namespaceSelector 和 objectSelector 相符的請求。 空的比對條件清單會比對所有請求。 最多允許 64 個比對條件。
精確比對邏輯如下 (依序):
- 若任一
matchCondition
評估結果為 FALSE,則略過 webhook。 - 若所有
matchCondition
評估結果皆為 TRUE,則呼叫 webhook。 - 若任一
matchCondition
評估結果為錯誤 (但沒有任何結果為 FALSE)- 若
failurePolicy=Fail
,則拒絕請求 - 若
failurePolicy=Ignore
,則忽略錯誤並略過 webhook
- 若
MatchCondition 代表一個條件,請求必須符合此條件才會被傳送至 webhook。
webhooks.matchConditions.expression (字串),必填
Expression 代表將由 CEL 評估的表達式。必須評估為布林值 (bool)。CEL 表達式可以存取 AdmissionRequest 和 Authorizer 的內容,並組織成 CEL 變數
'object'
- 來自傳入請求的物件。對於 DELETE 請求,值為 null。'oldObject'
- 現有的物件。對於 CREATE 請求,值為 null。'request'
- admission 請求的屬性 (/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.dev.org.tw/docs/reference/using-api/cel/必填。
webhooks.matchConditions.name (字串),必填
Name 是此比對條件的識別符,用於 MatchConditions 的策略性合併,並為記錄目的提供識別符。一個好的名稱應該能描述相關的表達式。Name 必須是一個合格的名稱,由字母數字字元、'-'、'_' 或 '.' 組成,並且必須以字母數字字元開頭和結尾 (例如 'MyName'、'my.name' 或 '123-abc',用於驗證的 regex 是 '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]'),可選的 DNS 子網域前綴和 '/' (例如 'example.com/MyName')
必填。
- 若任一
webhooks.matchPolicy (字串)
matchPolicy 定義如何使用 "rules" 列表來比對傳入的請求。允許的值為 "Exact" 或 "Equivalent"。
Exact:僅當請求與指定的規則完全符合時才比對。例如,如果可以透過 apps/v1、apps/v1beta1 和 extensions/v1beta1 修改 deployments,但 "rules" 僅包含
apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]
,則傳送到 apps/v1beta1 或 extensions/v1beta1 的請求將不會傳送到 webhook。Equivalent:即使透過另一個 API 群組或版本,如果請求修改了規則中列出的資源,則比對請求。例如,如果可以透過 apps/v1、apps/v1beta1 和 extensions/v1beta1 修改 deployments,並且 "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.dev.org.tw/docs/concepts/overview/working-with-objects/labels。
預設為空的 LabelSelector,它會比對所有內容。
webhooks.objectSelector (LabelSelector)
ObjectSelector 決定是否基於物件是否具有相符的標籤來執行 webhook。objectSelector 會針對將傳送到 webhook 的 oldObject 和 newObject 進行評估,並且如果任一物件符合選擇器,則視為比對成功。Null 物件 (create 情況下的 oldObject,或 delete 情況下的 newObject) 或無法擁有標籤的物件 (例如 DeploymentRollback 或 PodProxyOptions 物件) 不會被視為比對成功。僅當 webhook 是選擇加入時才使用物件選擇器,因為終端使用者可能會透過設定標籤來略過 admission webhook。預設為空的 LabelSelector,它會比對所有內容。
webhooks.rules ([]RuleWithOperations)
Atomic:將在合併期間被取代
Rules 描述 webhook 關心哪些資源/子資源上的哪些操作。如果操作符合任何 Rule,則 webhook 會關心該操作。但是,為了防止 ValidatingAdmissionWebhooks 和 MutatingAdmissionWebhooks 將叢集置於無法恢復的狀態 (除非完全停用外掛程式),永遠不會在 ValidatingWebhookConfiguration 和 MutatingWebhookConfiguration 物件的 admission 請求上呼叫 ValidatingAdmissionWebhooks 和 MutatingAdmissionWebhooks。
RuleWithOperations 是 Operations 和 Resources 的元組。建議確保所有元組展開都是有效的。
webhooks.rules.apiGroups ([]字串)
Atomic:將在合併期間被取代
APIGroups 是資源所屬的 API 群組。
'*'
代表所有群組。如果存在'*'
,則切片的長度必須為一。必填。webhooks.rules.apiVersions ([]字串)
Atomic:將在合併期間被取代
APIVersions 是資源所屬的 API 版本。
'*'
代表所有版本。如果存在'*'
,則切片的長度必須為一。必填。webhooks.rules.operations ([]字串)
Atomic:將在合併期間被取代
Operations 是 admission hook 關心的操作 - CREATE、UPDATE、DELETE、CONNECT 或
'*'
代表所有這些操作以及任何未來新增的 admission 操作。如果存在'*'
,則切片的長度必須為一。必填。webhooks.rules.resources ([]字串)
Atomic:將在合併期間被取代
Resources 是此規則適用資源的列表。
例如:
'pods'
表示 pods。'pods/log'
表示 pods 的 log 子資源。'*'
表示所有資源,但不包含子資源。'pods/*'
表示 pods 的所有子資源。'*/scale'
表示所有 scale 子資源。'*/*'
表示所有資源及其子資源。如果存在萬用字元,則驗證規則將確保資源彼此不重疊。
根據封閉物件,可能不允許子資源。必填。
webhooks.rules.scope (字串)
scope 指定此規則的範圍。有效值為 "Cluster"、"Namespaced" 和
'*'
。"Cluster" 表示只有叢集範圍的資源會符合此規則。命名空間 API 物件是叢集範圍的。"Namespaced" 表示只有命名空間範圍的資源會符合此規則。'*'
表示沒有範圍限制。子資源符合其父資源的範圍。預設為 "*"。
webhooks.timeoutSeconds (int32)
TimeoutSeconds 指定此 webhook 的逾時時間。逾時時間過後,webhook 呼叫將被忽略,或 API 呼叫將根據失敗策略而失敗。逾時值必須介於 1 到 30 秒之間。預設為 10 秒。
ValidatingWebhookConfigurationList
ValidatingWebhookConfigurationList 是 ValidatingWebhookConfiguration 的列表。
items ([]ValidatingWebhookConfiguration),必填
ValidatingWebhookConfiguration 的列表。
apiVersion (字串)
APIVersion 定義此物件表示的版本的 schema。伺服器應將識別的 schema 轉換為最新的內部值,並可能拒絕無法識別的值。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
kind (字串)
Kind 是一個字串值,表示此物件代表的 REST 資源。伺服器可能會從用戶端提交請求的端點推斷出此值。無法更新。使用 CamelCase。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
metadata (ListMeta)
標準列表 metadata。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
Operations (操作)
get
讀取指定的 ValidatingWebhookConfiguration
HTTP Request (HTTP 請求)
GET /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations/{name}
Parameters (參數)
name (在路徑中):字串,必填
ValidatingWebhookConfiguration 的名稱
pretty (在查詢中):字串
Response (回應)
200 (ValidatingWebhookConfiguration):OK (成功)
401:Unauthorized (未經授權)
list
列出或監看 ValidatingWebhookConfiguration 類型的物件
HTTP Request (HTTP 請求)
GET /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations
Parameters (參數)
allowWatchBookmarks (在查詢中):布林值
continue (在查詢中):字串
fieldSelector (在查詢中):字串
labelSelector (在查詢中):字串
limit (在查詢中):整數
pretty (在查詢中):字串
resourceVersion (在查詢中):字串
resourceVersionMatch (在查詢中):字串
sendInitialEvents (在查詢中):布林值
timeoutSeconds (在查詢中):整數
watch (在查詢中):布林值
Response (回應)
200 (ValidatingWebhookConfigurationList):OK (成功)
401:Unauthorized (未經授權)
create
建立 ValidatingWebhookConfiguration
HTTP Request (HTTP 請求)
POST /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations
Parameters (參數)
body:ValidatingWebhookConfiguration,必填
dryRun (在查詢中):字串
fieldManager (在查詢中):字串
fieldValidation (在查詢中):字串
pretty (在查詢中):字串
Response (回應)
200 (ValidatingWebhookConfiguration):OK (成功)
201 (ValidatingWebhookConfiguration):Created (已建立)
202 (ValidatingWebhookConfiguration):Accepted (已接受)
401:Unauthorized (未經授權)
update
取代指定的 ValidatingWebhookConfiguration
HTTP Request (HTTP 請求)
PUT /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations/{name}
Parameters (參數)
name (在路徑中):字串,必填
ValidatingWebhookConfiguration 的名稱
body:ValidatingWebhookConfiguration,必填
dryRun (在查詢中):字串
fieldManager (在查詢中):字串
fieldValidation (在查詢中):字串
pretty (在查詢中):字串
Response (回應)
200 (ValidatingWebhookConfiguration):OK (成功)
201 (ValidatingWebhookConfiguration):Created (已建立)
401:Unauthorized (未經授權)
patch
部分更新指定的 ValidatingWebhookConfiguration
HTTP Request (HTTP 請求)
PATCH /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations/{name}
Parameters (參數)
name (在路徑中):字串,必填
ValidatingWebhookConfiguration 的名稱
body:Patch,必填
dryRun (在查詢中):字串
fieldManager (在查詢中):字串
fieldValidation (在查詢中):字串
force (在查詢中):布林值
pretty (在查詢中):字串
Response (回應)
200 (ValidatingWebhookConfiguration):OK (成功)
201 (ValidatingWebhookConfiguration):Created (已建立)
401:Unauthorized (未經授權)
delete
刪除 ValidatingWebhookConfiguration
HTTP Request (HTTP 請求)
DELETE /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations/{name}
Parameters (參數)
name (在路徑中):字串,必填
ValidatingWebhookConfiguration 的名稱
body:DeleteOptions
dryRun (在查詢中):字串
gracePeriodSeconds (在查詢中):整數
pretty (在查詢中):字串
propagationPolicy (在查詢中):字串
Response (回應)
200 (Status):OK (成功)
202 (Status):Accepted (已接受)
401:Unauthorized (未經授權)
deletecollection
刪除 ValidatingWebhookConfiguration 的集合
HTTP Request (HTTP 請求)
DELETE /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations
Parameters (參數)
body:DeleteOptions
continue (在查詢中):字串
dryRun (在查詢中):字串
fieldSelector (在查詢中):字串
gracePeriodSeconds (在查詢中):整數
labelSelector (在查詢中):字串
limit (在查詢中):整數
pretty (在查詢中):字串
propagationPolicy (在查詢中):字串
resourceVersion (在查詢中):字串
resourceVersionMatch (在查詢中):字串
sendInitialEvents (在查詢中):布林值
timeoutSeconds (在查詢中):整數
Response (回應)
200 (Status):OK (成功)
401:Unauthorized (未經授權)
此頁面為自動產生。
如果您計劃回報此頁面的問題,請在您的問題描述中提及此頁面為自動產生。修正可能需要在 Kubernetes 專案的其他地方進行。