Pulumi kubernetes ConfigGroup 需要字符串,我只有输出
Posted
技术标签:
【中文标题】Pulumi kubernetes ConfigGroup 需要字符串,我只有输出【英文标题】:Pulumi kubernetes ConfigGroup takes string, I only got Outputs 【发布时间】:2022-01-09 22:27:12 【问题描述】:我需要为 Configgroup 提供 yaml。 yaml 需要填充来自 Pulumi 输出的值。我的问题是下面代码中的 yaml 字段只接受字符串,我无法找到从输出创建此字符串的方法。
例如,想象一下从输出中获取某种 Id 并替换 foo。
有什么想法吗?
import * as k8s from "@pulumi/kubernetes";
const example = new k8s.yaml.ConfigGroup("example",
yaml: `
apiVersion: v1
kind: Namespace
metadata:
name: foo
`,
)
【问题讨论】:
【参考方案1】:当您需要在字符串中使用输出值时,您需要确保使用 apply
解析输出。
在你的情况下,它看起来有点像这样:
import * as k8s from "@pulumi/kubernetes";
import * as pulumi from "@pulumi/pulumi";
const nsName = pulumi.output("foo")
nsName.apply(name =>
const example = new k8s.yaml.ConfigGroup("example",
yaml: `
apiVersion: v1
kind: Namespace
metadata:
name: $name
`
)
)
但是,通常不希望像这样在应用程序中创建资源,因为这意味着预览不准确。如果您只是想创建一个命名空间,强烈建议您使用 kubernetes 提供者的命名空间资源,而不是 ConfigGroup
(尽管我知道您正在尝试获取一个工作示例,可能是为了其他目的)
您可以考虑使用kube2pulumi 来转换您正在安装的任何 YAML,因为一旦您使用标准类型,您就可以轻松地将输出传递到字段,如下所示:
const newNs = new k8s.core.v1.Namespace("example",
metadata:
name: nsName
)
【讨论】:
完美运行!我必须添加一个 pulumi.all 来收集三个输出,然后使用 apply。是的,它不是命名空间,实际上使用的是 Secret Store CSI 驱动程序,secrets-store.csi.k8s.io 并且我在找到要直接使用的 pulumi api 时遇到问题,因此求助于使用 yaml.ConfigGroup。 @TomHells 如果您针对该用例提出新问题,很乐意使用原生 Pulumi 代码帮助解决该特定问题以上是关于Pulumi kubernetes ConfigGroup 需要字符串,我只有输出的主要内容,如果未能解决你的问题,请参考以下文章
Pulumi kubernetes ConfigGroup 需要字符串,我只有输出