opa gatekeeper筆記:AdmissionReview input.request請求物件結構
阿新 • • 發佈:2021-10-19
官方:https://v1-17.docs.kubernetes.io/zh/docs/reference/access-authn-authz/extensible-admission-controllers/#request
https://www.openpolicyagent.org/docs/latest/kubernetes-primer/#input-document
工具:https://www.bejson.com/json/json2yaml/
用途:
可用於編寫constrainttemplate的rego程式碼時,呼叫kubectl預設的input
AdmissionReview input.request請求物件示例
apiVersion: admission.k8s.io/v1 kind: AdmissionReview request: uid: 705ab4f5-6393-11e8-b7cc-42010a800002 kind: group: autoscaling version: v1 kind: Scale resource: group: apps version: v1 resource: deployments subResource: scale requestKind: group: autoscaling version: v1 kind: Scale requestResource: group: apps version: v1 resource: deployments requestSubResource: scale name: my-deployment namespace: my-namespace operation: UPDATE userInfo: username: admin uid: 014fbff9a07c groups: - 'system:authenticated' - my-admin-group extra: some-key: - some-value1 - some-value2 object: apiVersion: autoscaling/v1 kind: Scale oldObject: apiVersion: autoscaling/v1 kind: Scale options: apiVersion: meta.k8s.io/v1 kind: UpdateOptions dryRun: false
Json原版與註釋
#========== 團結,緊張,嚴肅,活潑 ===========#{ "apiVersion": "admission.k8s.io/v1", "kind": "AdmissionReview", "request": { # 唯一標識此准入回撥的隨機 uid "uid": "705ab4f5-6393-11e8-b7cc-42010a800002", # 傳入完全正確的 group/version/kind 物件 "kind": {"group":"autoscaling","version":"v1","kind":"Scale"}, # 修改 resource 的完全正確的的 group/version/kind "resource": {"group":"apps","version":"v1","resource":"deployments"}, # subResource(如果請求是針對 subResource 的) "subResource": "scale", # 在對 API 伺服器的原始請求中,傳入物件的標準 group/version/kind # 僅當 webhook 指定 `matchPolicy: Equivalent` 且將對 API 伺服器的原始請求轉換為 webhook 註冊的版本時,這才與 `kind` 不同。 "requestKind": {"group":"autoscaling","version":"v1","kind":"Scale"}, # 在對 API 伺服器的原始請求中正在修改的資源的標準 group/version/kind # 僅當 webhook 指定了 `matchPolicy:Equivalent` 並且將對 API 伺服器的原始請求轉換為 webhook 註冊的版本時,這才與 `resource` 不同。 "requestResource": {"group":"apps","version":"v1","resource":"deployments"}, # subResource(如果請求是針對 subResource 的) # 僅當 webhook 指定了 `matchPolicy:Equivalent` 並且將對 API 伺服器的原始請求轉換為該 webhook 註冊的版本時,這才與 `subResource` 不同。 "requestSubResource": "scale", # 被修改資源的名稱 "name": "my-deployment", # 如果資源是屬於名稱空間(或者是名稱空間物件),則這是被修改的資源的名稱空間 "namespace": "my-namespace", # 操作可以是 CREATE、UPDATE、DELETE 或 CONNECT "operation": "UPDATE", "userInfo": { # 向 API 伺服器發出請求的經過身份驗證的使用者的使用者名稱 "username": "admin", # 向 API 伺服器發出請求的經過身份驗證的使用者的 UID "uid": "014fbff9a07c", # 向 API 伺服器發出請求的經過身份驗證的使用者的組成員身份 "groups": ["system:authenticated","my-admin-group"], # 向 API 伺服器發出請求的使用者相關的任意附加資訊 # 該欄位由 API 伺服器身份驗證層填充,並且如果 webhook 執行了任何 SubjectAccessReview 檢查,則應將其包括在內。 "extra": { "some-key":["some-value1", "some-value2"] } }, # object 是被接納的新物件。 # 對於 DELETE 操作,它為 null。 "object": {"apiVersion":"autoscaling/v1","kind":"Scale",...}, # oldObject 是現有物件。 # 對於 CREATE 和 CONNECT 操作,它為 null。 "oldObject": {"apiVersion":"autoscaling/v1","kind":"Scale",...}, # options 包含要接受的操作的選項,例如 meta.k8s.io/v CreateOptions、UpdateOptions 或 DeleteOptions。 # 對於 CONNECT 操作,它為 null。 "options": {"apiVersion":"meta.k8s.io/v1","kind":"UpdateOptions",...}, # dryRun 表示 API 請求正在以 `dryrun` 模式執行,並且將不會保留。 # 帶有副作用的 Webhook 應該避免在 dryRun 為 true 時啟用這些副作用。 # 有關更多詳細資訊,請參見 http://k8s.io/docs/reference/using-api/api-concepts/#make-a-dry-run-request "dryRun": false } }