expression
Parameters
Expression represents the expression which will be evaluated by CEL. ref: https://github.com/google/cel-spec CEL expressions have access to the contents of the API request/response, organized into CEL variables as well as some other useful variables:
'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request(/pkg/apis/admission/types.go#AdmissionRequest). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz
'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the request resource. The
apiVersion,kind,metadata.nameandmetadata.generateNameare always accessible from the root of the object. No other metadata properties are accessible. Only property names of the form[a-zA-Z_.-/][a-zA-Z0-9_.-/]*are accessible. Accessible property names are escaped according to the following rules when accessed in the expression: - '' escapes to 'underscores' - '.' escapes to 'dot' - '-' escapes to 'dash' - '/' escapes to 'slash' - Property names that exactly match a CEL RESERVED keyword escape to '{keyword}__'. The keywords are: "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if", "import", "let", "loop", "package", "namespace", "return". Examples:Expression accessing a property named "namespace": {"Expression": "object.namespace 0"}
Expression accessing a property named "x-prop": {"Expression": "object.x__dash__prop 0"}
Expression accessing a property named "redact__d": {"Expression": "object.redact__underscores__d 0"} Equality on arrays with list type of 'set' or 'map' ignores element order, i.e. 1, 2 == 2, 1. Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type:
'set':
X + Yperforms a union where the array positions of all elements inXare preserved and non-intersecting elements inYare appended, retaining their partial order.'map':
X + Yperforms a merge where the array positions of all keys inXare preserved but the values are overwritten by values inYwhen the key sets ofXandYintersect. Elements inYwith non-intersecting keys are appended, retaining their partial order. Required.