首页 > 解决方案 > 与 configmap 通信时出错

问题描述

您好我正在使用 google kubernetes 引擎来部署我的应用程序。我试图添加一个 configMap

apiVersion: v1
kind: ConfigMap
metadata:
  name: configmap
  namespace: default
data:
  database_user: root
  database_password: root
  database_db: db
  database_port: 5432
  database_host: mypostgres

然后在我的应用程序部署文件中,我映射了我的环境变量,如下所示

 spec:
      containers:
      - env:
        - name: DATABASE_HOST
          valueFrom:
            configMapKeyRef:
              name: configmap
              key: database_host
        - name: DATABASE_NAME
          valueFrom:
            configMapKeyRef:
              name: configmap
              key:  database_db
        - name: DATABASE_PASSWORD
          valueFrom:
            configMapKeyRef:
              name: configmap
              key: database_password
        - name: DATABASE_USER
          valueFrom:
            configMapKeyRef:
              name: configmap
              key: database_user

        - name: DATABASE_PORT
          valueFrom:
            configMapKeyRef:
              name: configmap
              key: database_port

我的服务没有运行,我得到了

CreateContainerConfigError 当我尝试显示 pod 的结果时

当我“描述我的豆荚”时,我得到了

错误:找不到密钥 database_host

我的问题是,为什么我的部署文件与我定义的 configmap 不匹配

我通过这个命令创建了 configmap

kubectl create configmap configmap --from-file=configmap.yaml

标签: kubernetesconfigmap

解决方案


如“kubectl create configmap --help”中所述:--from-env-file='':指定文件路径以读取 key=val 对的行以创建 configmap(即 Docker .env 文件)。

所以你只需要创建一个名为 conf 的文件,其值如下:

database_user= root
database_password= root
database_db= db
database_port= 5432
database_host= mypostgres

并运行:“kubectl create configmap coco-config --from-env-file=conf”

更新: 如果您将数据放入“”,问题将得到解决

apiVersion: v1
kind: ConfigMap
metadata:
  name: configmap
  namespace: default
data:
  database_user: "root"
  database_password: "root"
  database_db: "db"
  database_port: "5432"
  database_host: "mypostgres"

推荐阅读