【发布时间】:2019-11-10 01:09:06
【问题描述】:
我正在尝试在 OpenShift Web 控制台中编辑部署配置的 yaml。
我只是想添加一个command 和一些args。我有另一个具有正确语法和缩进的工作示例。
但是,当我将其复制到部署配置中时,由于验证错误,我无法保存它。但是该错误与我所做的更改无关。
错误信息是:
无法处理资源。 原因:DeploymentConfig.apps.openshift.io "my-sdk" 无效:[spec.template.spec.containers[0].name:必填值,spec.template.spec.containers[0].image:必填值]
例如,我有来自工作部署配置的以下 sn-p:
spec:
containers:
- env:
- name: MY_DB_HOST
value: postgresql
- name: MY_DB_NAME
value: MY
- name: MY_DB_PASSWORD
value: MY
- name: MY_DB_USER
value: MY
- name: MY_CACHE_ENABLED
value: 'false'
image: >-
172.30.1.1:5000/myapp/my-sdk@sha256:eb485f011eaab9342b7fcf272c9f22dded9c238987f1dec932f8e1640ac18251
imagePullPolicy: Always
name: my-sdk
ports:
- containerPort: 8080
protocol: TCP
然后我尝试将其更改为以下内容:
spec:
containers:
- args:
- '-myarg'
command:
- node
- env:
- name: MY_DB_HOST
value: postgresql
- name: MY_DB_NAME
value: MY
- name: MY_DB_PASSWORD
value: MY
- name: MY_DB_USER
value: MY
- name: MY_CACHE_ENABLED
value: 'false'
image: >-
172.30.1.1:5000/myapp/my-sdk@sha256:eb485f011eaab9342b7fcf272c9f22dded9c238987f1dec932f8e1640ac18251
imagePullPolicy: Always
name: my-sdk
ports:
- containerPort: 8080
protocol: TCP
通过此更改,我得到了上述错误。 我 99% 确定我所做的更改是有效的,因为我只是从功能部署配置中应对它。而且错误消息似乎与更改无关。
更新
现在我有一个包含 command 和 arg 值的有效部署配置。
当我尝试删除这些,而不修改任何其他 yaml 或缩进时,我收到以下无用的验证错误:
无法处理资源。 原因:版本“v1”中的 ReplicationController 不能作为 ReplicationController 处理:v1.ReplicationController.Spec:v1.ReplicationControllerSpec.Template:v1.PodTemplateSpec.Spec:v1.PodSpec.TerminationGracePeriodSeconds:SecurityContext:SchedulerName:RestartPolicy:DNSPolicy:Containers:decode切片:期望 [ 或 n,但发现 {,在 ...|y 的 #10 字节中发现错误:“文件”},“dnsPolic|...,更大的上下文 ...|ermination-log”,“terminationMessagePolicy” ":"File"},"dnsPolicy":"ClusterFirst","restartPolicy":"Alway|...
【问题讨论】:
-
整个
env和args部分需要再缩进一级。那些的“-”应该与command相同的缩进。 -
有时将您想要使用的内容插入json2yaml.com 并查看 JSON 中的结果会很有帮助,因为如果您不熟悉 YAML,它会更清楚地显示结构。
-
请更新您的新 yaml 文件。请提供您的 openshift 和 kubernetes 版本。
标签: kubernetes openshift