red*_*888 8 terraform terraform-provider-kubernetes
我想用 terraform 安装 CRD,我希望这样做会很简单:
data "http" "crd" {
url = "https://raw.githubusercontent.com/kubernetes-sigs/application/master/deploy/kube-app-manager-aio.yaml"
request_headers = {
Accept = "text/plain"
}
}
resource "kubernetes_manifest" "install-crd" {
manifest = data.http.crd.body
}
Run Code Online (Sandbox Code Playgroud)
但我收到这个错误:
can't unmarshal tftypes.String into *map[string]tftypes.Value, expected
map[string]tftypes.Value
Run Code Online (Sandbox Code Playgroud)
尝试将其转换为 yamlyamldecode也不起作用,因为yamldecode不支持多文档 yaml 文件。
kubernetes_manifest我可以使用 exec,但在等待资源释放时我已经这样做了。只kubernetes_manifest支持单个资源还是可以用于从原始文本清单文件创建多个资源?
kubernetes_manifest(强调我的)
通过提供清单属性来表示一个Kubernetes 资源
在我看来,它不支持多个资源/多文档 yaml 文件。
但是,您可以手动拆分传入文档及其yamldecode各个部分:
locals {
yamls = [for data in split("---", data.http.crd.body): yamldecode(data)]
}
resource "kubernetes_manifest" "install-crd" {
count = length(local.yamls)
manifest = local.yamls[count.index]
}
Run Code Online (Sandbox Code Playgroud)
不幸的是在我的机器上这然后抱怨
清单配置中不允许使用“status”属性键
正好是 11 个清单中的一个。
由于我对 Kubernetes 毫无了解,我不知道这意味着什么,也不知道它是否需要修复。
或者,您始终可以使用null_resource带有脚本的脚本来获取 yaml 文档并使用 bash 工具或 python 或安装的任何工具来转换、拆分和过滤传入的 yaml。
| 归档时间: |
|
| 查看次数: |
5469 次 |
| 最近记录: |