【问题标题】: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