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
    }
})