【问题标题】:Invalid type for io.k8s.api.core.v1.ConfigMapEnvSource got "array" expected "map"io.k8s.api.core.v1.ConfigMapEnvSource 的无效类型得到“数组”预期的“地图”
【发布时间】:2020-06-20 11:46:55
【问题描述】:

我有一个 kubernetes cronjob 清单文件。在该文件中,我定义了环境变量。我正在使用 shell 脚本生成 yaml,但在使用 yaml 时使用 kubectl create -f。我收到以下验证错误

 error validating "cron.yaml": error validating data: [ValidationError(CronJob.spec.jobTemplate.spec.template.spec.containers[0].envFrom[0].configMapRef): invalid type for io.k8s.api.core.v1.ConfigMapEnvSource: got "array", expected "map".

谁能建议我如何解决这个问题?

【问题讨论】:

    标签: json kubernetes yaml kubernetes-cronjob


    【解决方案1】:

    你的语法有错误。

    有两种方法,对单个值使用 valueFrom,对多个值使用 envFrom。

    valueFrom 在 env 属性中使用。valueFrom 将从引用的 configMap 中注入一个键的值。

    spec:
      template:
        spec:
          containers:
          - name: ad-sync
            image: foo.azurecr.io/foobar/ad-sync
            command: ["dotnet", "AdSyncService.dll"]
            args: []
            env:
              - name: AdSyncService
                valueFrom:
                  configMapKeyRef:
                    name: ad-sync-service-configmap
                    key: log_level
    

    envFrom 直接在容器属性中使用。envFrom 将注入所有 configMap 键作为环境变量

    spec:
      template:
        spec:
          containers:
          - name: ad-sync
            image: foo.azurecr.io/foobar/ad-sync
            command: ["dotnet", "AdSyncService.dll"]
            envFrom:
            - configMapRef:
                name: ad-sync-service-configmap
    

    【讨论】:

      猜你喜欢
      • 2019-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-11
      • 2019-05-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多