typescript 如何使用cdktf在多行字符串中为helm值保留空格

rkue9o1l  于 2023-01-21  发布在  TypeScript
关注(0)|答案(1)|浏览(139)

我正在使用CDKTF将datadog helm chart部署到kubernetes集群中。我试图为confd设置一个值,但我的typescript多行字符串中的空格没有保留。

new helm.Release(this, "datadog-agent", {
      chart: "datadog",
      name: "datadog",
      repository: "https://helm.datadoghq.com",
      version: "3.1.3",
      set: [
        {
          name: "clusterAgent.confd",
          value: `postgres.yaml: |-
cluster_check: true
init_config:
instances:
\t- dbm: true
\t  host: <redacted>
\t  port: 5432
\t  username: datadog
\t  password: <redacted>
    `
        }

      ],
    });

然而,当我尝试部署它时,我看到以下差异

+ set {
                   + name  = "clusterAgent.confd"
                   + value = <<-EOT
                   postgres.yaml: |-
                   cluster_check: true
                   init_config:
                   instances:
                   - dbm: true
                   host: <redacted>
                   port: 5432
                   username: datadog
                   password: <redacted>

                   EOT

这使得多行字符串中的所有空格和制表符看起来都被剥离了。
如何让CDKTF保留多行字符串中的空格?

41zrol4v

41zrol4v1#

虽然它有点笨拙,但您可以尝试使用以下代码:

value: `postgres.yaml: |- ${
  Fn.base64decode(
    Buffer.from(
`cluster_check: true
init_config:
instances:
\t- dbm: true
\t  host: <redacted>
\t  port: 5432
\t  username: datadog
\t  password: <redacted>`
    ).toString('base64')
  )
}
`

Where is Fn是从cdktf导入的,Fn函数在运行时执行,所以在synth期间,你有base64编码的内容,这是安全的,不会受到cdktf可能在这里意外操作的影响。

相关问题