我正在尝试在OpenShift Web控制台中编辑部署配置的文本。
我只是想添加一个command
和一些args
。我还有另一个使用正确语法和缩进的工作示例。
但是,当我将其复制到部署配置中时,由于验证错误,我无法保存它。但是错误与我所做的更改无关。
错误消息是:
无法处理资源。 原因:DeploymentConfig.apps.openshift.io“ my-sdk”无效:[spec.template.spec.containers [0]。名称:必需值,spec.template.spec.containers [0] .image:必需值]
例如,我从正常的部署配置中获得以下代码段:
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%确信所做的更改是有效的,因为我只是从功能性部署配置中解决了这一问题。而且错误消息似乎与更改完全无关。
现在我有一个有效的Deploymentconfig,其中包含command
和arg
值。
当我尝试删除这些内容而未修改任何其他Yaml或缩进时,出现以下无用的验证错误:
无法处理资源。 原因:版本“ v1”中的ReplicationController不能作为ReplicationController处理:v1.ReplicationController.Spec:v1.ReplicationControllerSpec.Template:v1.PodTemplateSpec.Spec:v1.PodSpec.TerminationGracePeriodSeconds:SecurityContext:SchedulerName:RestartPolicy:DNSPolicy:容器:解码slice:期望[或n,但发现{,在... | y的#10字节中发现错误,“:” File“},” dnsPolic | ...,更大的上下文... | ermination-log“,” terminationMessagePolicy “:” File“},” dnsPolicy“:” ClusterFirst“,” restartPolicy“:”始终| ...
答案 0 :(得分:0)
一个例子:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx@sha256:e3456c851a152494c3e4ff5fcc26f240206abac0c9d794affb40e0714846c451
env:
- name: DEMO_GREETING
value: "Hello from the environment"
command: ["echo"]
args: ["$(GREETING) $(HONORIFIC) $(NAME)"]
ports:
- containerPort: 80
请遵循文档: Using environment variables inside of your config
此外,请根据错误image: >-
,使用图像行image: Required value
验证您的规格
答案 1 :(得分:0)
在ReplicationController中,它们应该具有选择器(在RC Spec中)和标签(模板规范)以匹配要启动的容器。因此,基于错误,您可能不了解这一点,因为这会更加笼统。