3

我正在使用“--from-env-file”选项创建一个 kubernetes configMap,以将文件内容存储为环境变量。

kubectl create configmap env --from-env-file=env.properties -n namespace

当我如下创建一个 terraform 资源时,创建的 configMap 包含一个文件,而不是环境变量。

resource "kubernetes_config_map" "env" {
  metadata {
    name = "env-config"
    namespace = var.namespace
  }
  data = {
    "env.properties"   = "${file("${path.module}/env.properties")}"
  }
}

如何使用 terraform-kubernetes-provider 资源创建将文件内容作为环境变量的 configMap?

4

1 回答 1

3

如果env.properties看起来像这样:

$ cat env.properties
enemies=aliens
lives=3
allowed="true"

然后kubectl create configmap env --from-env-file=env.properties -n namespace会导致这样的事情:

apiVersion: v1
kind: ConfigMap
metadata:
  name: env
  namespace: namespace
data:
  allowed: '"true"'
  enemies: aliens
  lives: "3"

但是你用 Terraform 做的事情会更像这样:

apiVersion: v1
kind: ConfigMap
metadata:
  name: env
  namespace: namespace
data:
  env.properties: |
    enemies=aliens
    lives=3
    allowed="true"

根据Terraform 文档,您正在寻找的似乎是不可能的,即--from-env-file对 Terraform 提供程序中的行为的一些本机支持。

您以 Terraform 方式执行的ConfigMap格式仍然很有用,您可能只需要更改将数据从ConfigMappods/deployments 中提取的方式。如果您可以分享更多详细信息,甚至是您使用配置映射的 pod/部署的简化/清理示例,则可以描述如何更改这些以使用不同样式的ConfigMap. 在这里查看更多。

于 2019-08-12T22:19:48.070 回答