使用Kong的嵌套dbless配置测试k8s ConfigMap



我发现测试Kong的配置真的很有问题,它嵌套在这样的ConfigMap中(它是这个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变量的类型为string,我找不到将其强制转换为对象类型或允许我引用YML键的任何其他类型的正确方法。Rego的内置函数cast_object似乎不起作用。

有没有人已经遇到过这个问题,并有一些建议?

好的,所以我找到了答案;(

解决方案是使用一个内置函数:yaml.unmarshal

起初我误解了rego引用

最新更新