【问题标题】:How do I load a configMap in to an environment variable?如何将 configMap 加载到环境变量中?
【发布时间】:2018-10-20 10:01:30
【问题描述】:

如何将 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 配置。

【问题讨论】:

  • 你能粘贴你使用的整个 yaml。 yaml有问题吗?是否可能是格式问题、您在 yaml 中定义的部分的错误 api-version 或语法错误。
  • 期待您的部署的清单 yaml 文件。
  • 看起来像格式问题,您正在应用哪个文件并具体给出错误?
  • @Veerendra 我可以做得更好,我已经粘贴了包含整个代码库的回购链接。
  • @mk_sta 完成,我已添加所有源文件。

标签: kubernetes


【解决方案1】:

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

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

缩进比我应该的多一个空格。其他一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2018-10-25
    • 2021-10-05
    • 2023-03-05
    • 2020-11-11
    • 2021-04-21
    • 1970-01-01
    相关资源
    最近更新 更多