Openshift 3.11-编辑部署配置-无法添加命令

时间:2019-06-28 03:58:56

标签: kubernetes openshift

我正在尝试在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,其中包含commandarg值。

当我尝试删除这些内容而未修改任何其他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“:”始终| ...

2 个答案:

答案 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中)和标签(模板规范)以匹配要启动的容器。因此,基于错误,您可能不了解这一点,因为这会更加笼统。