我想使用 dhall-kubernetes 为服务生成一个 ConfigMap。该服务是使用 YAML 文件配置的。我可以使用 dhall 分两次创建配置:
$ dhall-to-yaml < server.dhall > server.yaml
$ dhall-to-yaml < configmap.dhall
apiVersion: v1
data:
server.yaml: |
server:
port: 8080
kind: ConfigMap
metadata:
name: my-configmap
服务器.dhall:
let _config = { server.port = 8080 } in _config
configmap.dhall:
let kubernetes =
./package.dhall sha256:d9eac5668d5ed9cb3364c0a39721d4694e4247dad16d8a82827e4619ee1d6188
let _configMap1 =
kubernetes.ConfigMap::{
, metadata = kubernetes.ObjectMeta::{ name = "my-configmap" }
, data = Some
[ { mapKey = "server.yaml", mapValue = ./server.yaml as Text } ]
}
in _configMap1
包.dhall
https://raw.githubusercontent.com/dhall-lang/dhall-kubernetes/master/package.dhall
是否可以通过从 dhall 中生成 YAML 来仅使用一次 dhall-to-yaml 调用?像这样的东西:
let kubernetes =
./package.dhall sha256:d9eac5668d5ed9cb3364c0a39721d4694e4247dad16d8a82827e4619ee1d6188
let _config = { server.port = 8080 }
let _configMap3 =
kubernetes.ConfigMap::{
, metadata = kubernetes.ObjectMeta::{ name = "my-configmap" }
, data = Some
[ { mapKey = "server.yaml"
, mapValue = makeYAML _config -- make this work
}
]
}
in _configMap3
我从 Prelude 中找到了 JSON.renderYAML 函数,但这似乎并不是所需要的。