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 Admission 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 admission 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. The apiVersion
, kind
, metadata.name
and metadata.generateName
are 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 + Y
performs a union where the array positions of all elements inX
are preserved and non-intersecting elements inY
are appended, retaining their partial order.'map':
X + Y
performs a merge where the array positions of all keys inX
are preserved but the values are overwritten by values inY
when the key sets ofX
andY
intersect. Elements inY
with non-intersecting keys are appended, retaining their partial order. Required.