如何将configMap加载到环境变量中?

时间:2018-10-12 06:25:50

标签: kubernetes

如何将configMap加载到环境变量中?

我所做的事情

Kubernetes documentation仅描述此场景,并遵循此场景:

我实际上已经通过Terraform通过以下方式设置了configMap

resource "kubernetes_config_map" "production_database_host" {
  metadata {
    name = "production-database-host"
  }

  data {
    connection_name = "${google_sql_database_instance.master.connection_name}"
  }
}

但是通过Kubernetes,它看起来像这样:

apiVersion: v1
data:
  connection_name: this_string_is_redacted
kind: ConfigMap
metadata:
  creationTimestamp: 2018-10-12T05:49:49Z
  name: production-database-host
  namespace: default
  resourceVersion: "316273"
  selfLink: /api/v1/namespaces/default/configmaps/production-database-host
  uid: a1c06423-cde2-11e8-b615-42010a800235

(通过运行kubectl get configmap production-database-host -o yaml获取)

现在,在部署中,我还有一个工作容器,在其中添加了一个环境变量,如下所示:

env:
 - name: INSTANCE_CONNECTION_NAME
   valueFrom:
     configMapKeyRef:
       name: production-database-host
       key: connection_name

但是,应用此配置可​​以给我:

$ kubectl apply -f .

error: error converting YAML to JSON: yaml: line 39: did not find expected key

我在这里做错了什么?为什么不简单地将this_string_is_redacted加载到INSTANCE_CONNECTION_NAME环境变量中?

编辑:我的基础结构的所有源都在此repo中。首先应用Terraform文件,它们创建Kubnernetes集群并添加configMap。然后我应用Kubernetes配置。

1 个答案:

答案 0 :(得分:1)

这是一个格式化问题,不幸的是,该块:

env:
 - name: INSTANCE_CONNECTION_NAME
   valueFrom:
     configMapKeyRef:
       name: production-database-host
       key: connection_name

缩进了比我本来应该多的空格。其他一切都很好。