首页 > 解决方案 > Kubernetes:验证错误(Deployment.spec.template.spec.container[0]):io.k8s.api.core.v1.Container 中的未知字段“ConfigMapref”

问题描述

我正在 Kubernetes 中进行我的第一次部署,并且我已经在我的命名空间中托管了我的 API,并且它已经启动并运行。所以我尝试将我的 API 与 MongoDB 连接起来。通过 Rancher 在 ConfigMaps 中添加了我的数据库详细信息。

我试图在我的部署 YAML 文件中调用数据库,但出现错误说明Unknown Field - ConfigMapref

下面是我的部署 YAML 文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myfistproject
  namespace: Owncloud
spec
  replicas: 2
  selector:
   matchLables:
    app: myfirstproject
    version: 1.0.0
  template:
    metadata:
      labels:
        app: myfirstproject
        version: 1.0.0
    spec:
      containers:
         - name: myfirstproject
           image: **my image repo location**
           imagePullPolicy: always
           ports:
             - containerPort: 80
           configMapRef:
             - name: myfirstprojectdb # This is the name of the config map created via rancher

myfirstprojectdbConfigMap 将存储所有详细信息,如数据库名称、用户名、密码等。

在执行管道时,我收到以下错误。

我如何需要在部署 yaml 中引用我的配置映射?

Validation Error(Deployment.spec.template.spec.container[0]): unknown field "ConfigMapref" in io.k8s.api.core.v1.Container

标签: kuberneteskubernetes-pod

解决方案


还有一些错别字(例如,在大写字母:之后specAlways应该是大写字母之后丢失)。也indentation应该在整个yaml文件中保持一致 -请参阅 yaml 缩进和分隔

我更正了您的 yaml,因此它通过了 api 服务器的检查 + 添加了配置映射参考(考虑到它包含 env 变量):

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myfistproject
  namespace: Owncloud
spec:
  replicas: 2
  selector:
    matchLabels:
      app: myfirstproject
      version: 1.0.0
  template:
    metadata:
      labels:
        app: myfirstproject
        version: 1.0.0
    spec:
      containers:
        - name: myfirstproject
          image: **my image repo location**
          imagePullPolicy: Always
          ports:
            - containerPort: 80
          envFrom:
            - configMapRef:
                name: myfirstprojectdb

有用的链接:

将 ConfigMap 中的所有键值对配置为与此问题相关的容器环境变量。


推荐阅读