Kubernetes - CEL 语法
目录
1 概述
Kubernetes 中 Validate 规则都是通过 Common Expression Language 来表达的。
CEL 表达式通常是一行简短的代码,能够内联到 Kubernetes 资源的属性中。不同的资源可能有着不同的输入,因此当你使用 CEL 时,需要先确认表达式的输入是什么。
例如,在 CRD 的 Validate 中,self
和 oldSelf
变量代表着当前对象和修改前的对象。
|
|
2 CEL 库
2.1 List 操作
indexOf
和 lastIndexOf
用于获取 list 中的某个元素的下标。
|
|
min
和 max
用于获取 list 中元素的最小值或最大值,sum
用于计算所有元素之和。
|
|
isSorted
用于判断 list 中所有元素是否按字母序排序。
|
|
2.2 Regex 库
通过 match
函数来判断字符串是否匹配 Regex。
|
|
通过 find
和 findAll
来根据 Regex 查找。
|
|
2.3 URL 库
isURL(string)
检查字符串是否是合法的 URL,通过 Go 的 net/url
包。
url(string)
将字符串转换为 URL,然后可以调用一系列相关的函数。
|
|
3 类型检查
CEL 是一种动态类型的语言,也就是能够处理动态的类型,而不需要知道输入的类型结构是怎么样的。
通过 has()
函数可以判断某个字段是否存在(可访问的)。
|
|