Terraform kubernetes_config_map --from-env-file

use*_*197 5 kubernetes terraform configmap terraform-provider-kubernetes

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

kubectl create configmap env --from-env-file=env.properties -n namespace
Run Code Online (Sandbox Code Playgroud)

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

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

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

Ami*_*pta 4

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

$ cat env.properties
enemies=aliens
lives=3
allowed="true"
Run Code Online (Sandbox Code Playgroud)

那么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"
Run Code Online (Sandbox Code Playgroud)

但是你对 Terraform 所做的事情会导致类似这样的结果:

apiVersion: v1
kind: ConfigMap
metadata:
  name: env
  namespace: namespace
data:
  env.properties: |
    enemies=aliens
    lives=3
    allowed="true"
Run Code Online (Sandbox Code Playgroud)

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

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