我正在应用 Kubernetes CronJob 。 到目前为止,它仍然有效。 现在,我要添加环境变量。 (env:-name ...见下文) 尝试应用时出现错误
io.k8s.api.core.v1.EnvVarSource中的未知字段“ configMapRef”
我不喜欢在这里设置所有单打变量。我更喜欢将configmap链接为不要将变量加倍。 如何在CronJob文件中设置指向configmap.yaml变量的链接,如何编码?
坦率
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: ad-sync
creationTimestamp: 2019-02-15T09:10:20Z
namespace: default
selfLink: /apis/batch/v1beta1/namespaces/default/cronjobs/ad-sync
spec:
concurrencyPolicy: Allow
failedJobsHistoryLimit: 1
successfulJobsHistoryLimit: 3
suspend: false
schedule: "0 */1 * * *"
jobTemplate:
metadata:
labels:
job: ad-sync
spec:
template:
spec:
containers:
- name: ad-sync
image: foo.azurecr.io/foobar/ad-sync
command: ["dotnet", "AdSyncService.dll"]
args: []
env:
- name: AdSyncService
valueFrom:
configMapRef:
name: ad-sync-service-configmap
restartPolicy: OnFailure
答案 0 :(得分:3)
env字段中没有这样的字段 configMapRef ,而是有一个名为 configMapKeyRef
的字段为了获得有关 kubernetes对象的更多详细信息,使用 kubectl解释--help
十分方便例如,如果您想检查所有按键及其类型,可以使用以下命令
kubectl explain cronJob --recursive
kubectl explain cronjob.spec.jobTemplate.spec.template.spec.containers.env.valueFrom.configMapKeyRef
答案 1 :(得分:1)
您应将configMapKeyRef用于单个值,或将configMapRef与envFrom一起使用
答案 2 :(得分:0)
它是这样工作的:
apiVersion: batch/v1beta1
kind: CronJob
metadata:
...
spec:
...
jobTemplate:
metadata:
...
spec:
template:
spec:
containers:
- name: ad-sync
...
envFrom:
- configMapRef:
name: ad-sync-service-configmap
command: ["dotnet", "AdSyncService.dll"]
答案 3 :(得分:0)
有两种方法,对单个值使用ROW_NUMBER
或对多个值使用valueFrom
。
envFrom
用于valueFrom
属性中,如下所示:
env
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
属性内部使用,如下所示:
container
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
两者的主要区别是:
apiVersion: v1
kind: ConfigMap
metadata:
name: ad-sync-service-configmap
namespace: default
data:
log_level: INFO
将从引用的configMap中注入键的值valueFrom
将所有configMap密钥作为环境变量注入示例的主要问题是,您在envFrom
内使用了configMapRef
中的envFrom
,其中实际上应该是configMapKeyRef。
另外,valueFrom
需要一个key属性来标识数据来自何处。
有关更多详细信息,请签入this文档。