Terraform kubernetes_config_map --from-env文件

时间:2019-08-11 14:12:02

标签: kubernetes terraform configmap terraform-provider-kubernetes

我正在使用'--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?

1 个答案:

答案 0 :(得分:2)

如果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 docs,您似乎无法找到所需的内容,即Terraform提供程序中对--from-env-file行为的某些本机支持。

使用Terraform方式进行的ConfigMap格式仍然有用,您可能只需要更改将数据从ConfigMap提取到pod /部署中的方式即可。如果您可以共享更多详细信息,甚至可以共享使用配置映射的pod /部署的简化/消毒示例,则可能可以描述如何更改它们以利用{{1}的不同样式}。查看更多here