Pulumi kubernetes ConfigGroup 接受字符串,我只有输出
Pulumi kubernetes ConfigGroup takes string, I only got Outputs
我需要提供带有 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
`,
})
任何时候您需要在字符串中使用输出值,您都需要确保使用 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
}
})
我需要提供带有 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
`,
})
任何时候您需要在字符串中使用输出值,您都需要确保使用 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
}
})