ValidatingWebhookConfiguration

ValidatingWebhookConfiguration 描述了驗證許可 Webhook 的組態,該 Webhook 接受或拒絕物件而不變更它。

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 服務的參考。 必須指定 serviceurl 其中之一。

        如果 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 的位置。 必須指定 urlservice 其中之一。

        host 不應參考在叢集中執行的服務; 請改用 service 欄位。 主機可能會透過某些 API 伺服器中的外部 DNS 解析 (例如,kube-apiserver 無法解析叢集內 DNS,因為這會違反分層)。 host 也可能是 IP 位址。

        請注意,除非您非常小心地在所有執行 API 伺服器的主機上執行此 Webhook,否則使用 localhost127.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 個比對條件。

      精確比對邏輯如下 (依序):

      1. 若任一 matchCondition 評估結果為 FALSE,則略過 webhook。
      2. 若所有 matchCondition 評估結果皆為 TRUE,則呼叫 webhook。
      3. 若任一 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 的列表。


Operations (操作)


get 讀取指定的 ValidatingWebhookConfiguration

HTTP Request (HTTP 請求)

GET /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations/{name}

Parameters (參數)

  • name (在路徑中):字串,必填

    ValidatingWebhookConfiguration 的名稱

  • pretty (在查詢中):字串

    pretty (美觀輸出)

Response (回應)

200 (ValidatingWebhookConfiguration):OK (成功)

401:Unauthorized (未經授權)

list 列出或監看 ValidatingWebhookConfiguration 類型的物件

HTTP Request (HTTP 請求)

GET /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations

Parameters (參數)

Response (回應)

200 (ValidatingWebhookConfigurationList):OK (成功)

401:Unauthorized (未經授權)

create 建立 ValidatingWebhookConfiguration

HTTP Request (HTTP 請求)

POST /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations

Parameters (參數)

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 (參數)

Response (回應)

200 (ValidatingWebhookConfiguration):OK (成功)

201 (ValidatingWebhookConfiguration):Created (已建立)

401:Unauthorized (未經授權)

patch 部分更新指定的 ValidatingWebhookConfiguration

HTTP Request (HTTP 請求)

PATCH /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations/{name}

Parameters (參數)

Response (回應)

200 (ValidatingWebhookConfiguration):OK (成功)

201 (ValidatingWebhookConfiguration):Created (已建立)

401:Unauthorized (未經授權)

delete 刪除 ValidatingWebhookConfiguration

HTTP Request (HTTP 請求)

DELETE /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations/{name}

Parameters (參數)

Response (回應)

200 (Status):OK (成功)

202 (Status):Accepted (已接受)

401:Unauthorized (未經授權)

deletecollection 刪除 ValidatingWebhookConfiguration 的集合

HTTP Request (HTTP 請求)

DELETE /apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations

Parameters (參數)

Response (回應)

200 (Status):OK (成功)

401:Unauthorized (未經授權)

此頁面為自動產生。

如果您計劃回報此頁面的問題,請在您的問題描述中提及此頁面為自動產生。修正可能需要在 Kubernetes 專案的其他地方進行。

上次修改時間:2024 年 8 月 28 日下午 6:01 PST:Update generated API reference for v1.31 (8ba98c79c1)