我发现测试嵌套在此类 ConfigMap 中的 Kong 配置确实有问题(它是此 ConfigMap 的简短版本):
apiVersion: v1
kind: ConfigMap
metadata:
name: "some_name"
data:
kong_config.yml: |
_format_version: "2.1"
_transform: true
services:
- name: health-check
url: http://localhost/non-existent
plugins:
- name: request-termination
config:
status_code: 200
message: ok
routes:
- name: admin-status
paths:
- /healthz$
我要做的是使用conftest测试这个 ConfigMap,所以我从 ConfigMap 中“取出”Kong 的配置 YML 文件,如下所示:
deny[msg] {
kong_config := input.data["kong.yml"]
service_1_name := kong_config.services[0].name
....some other code....
msg := sprintf("Service '%v' failed name validation.", [service_1_name])
}
kong_config变量是字符串类型,我找不到将其转换为类型对象或任何其他允许我引用 YML 键的类型的正确方法。Rego 的内置函数cast_object似乎不起作用。
有没有人已经遇到这个问题并有一些提示?