OpenShift 3.11 Deployment Config配置command/args缩进报错修复方法
OpenShift 3.11 Deployment Config 中command/args缩进错误修正方案
YAML语法对缩进敏感度极高,这类报错的核心原因是command和args字段的缩进层级和所属结构不匹配,同时要注意配置启动命令时不要覆盖容器原有主进程,避免容器执行完自定义命令后直接退出。
核心缩进规则
在OpenShift 3.11的Deployment Config结构中,command、args属于容器定义的平级字段,和name、image、ports、volumeMounts等字段处于同一缩进层级,统一使用2个空格做缩进(禁止混用Tab字符),层级链路如下:spec → template → spec → containers数组下的单个容器配置块
常见错误写法
以下两种写法都会触发缩进报错:
args比同层级的command多缩进2格,被YAML解析器识别为command的子字段
# 错误示例 containers: - name: biz-app image: biz-app:v1.2 command: ["/bin/sh", "-c"] args: # 此处缩进错误,比上方command多2个空格 - ln -s /data/shared /app/config && /app/start.sh
command/args被放到containers数组外侧,和containers平级,不仅语法校验不通过,配置也不会生效到容器上
正确配置参考
如果需要启动时先创建符号链接再启动服务,参考以下配置,注意command和args的缩进对齐:
apiVersion: apps.openshift.io/v1 kind: DeploymentConfig metadata: name: biz-app-dc namespace: your-project spec: replicas: 2 selector: app: biz-app template: metadata: labels: app: biz-app spec: containers: - name: biz-app image: biz-app:v1.2 ports: - containerPort: 8080 # command和args与上方name、image、ports缩进完全对齐 command: ["/bin/bash", "-c"] args: - | # 强制创建软链接,避免已存在文件导致报错 ln -sf /mnt/pvc/config /app/runtime/config # 执行容器原有启动命令,替换为你实际的服务启动入口 exec /app/entrypoint.sh volumeMounts: - name: shared-storage mountPath: /mnt/pvc volumes: - name: shared-storage persistentVolumeClaim: claimName: app-shared-pvc
快速校验方法
- 本地保存配置后执行
yamllint 你的配置文件名.yaml,可以直接定位到缩进错误的具体行号和偏移量 - 在OpenShift Web控制台编辑时,直接将标红报错的
args块调整到和上方command字段完全对齐的缩进位置,红色报错提示会自动消失 - 写完配置后可以先执行
oc apply --dry-run=client -f 你的配置文件名.yaml做语法预校验,避免直接提交触发部署失败
内容的提问来源于stack exchange,提问作者CraigW
相关产品推荐
相关产品推荐

