在实际应用或执行之前验证 yaml 中定义的 OpenShift 对象

Ana*_*tel 5 openshift openshift-origin

我在 template.yaml 文件中有一个 OpenShift 模板,其中包括以下对象 - 部署配置、pod、服务和路由。我正在使用以下命令来执行 yaml:

oc process -f template.yml | oc apply -f -
Run Code Online (Sandbox Code Playgroud)

我想在实际应用/执行 yaml 之前执行以下验证:

  1. YAML 语法验证 - 如果 YAML 语法有任何问题。
  2. OpenShift 模式验证 - 检查对象定义是否符合 OpenShift 对象模式。

似乎命令“oc process”正在执行以下检查:

  1. 基本的 YAML 语法验证
  2. 模板对象架构验证

如何对 template.yaml 中定义的其他对象(例如部署配置、服务、pod 等)执行模式验证?

Pet*_*ino 7

这现在可以通过 OpenShift 客户端(以及一般的 Kubernetes)实现,例如

$ oc login
Username: john.doe
Password: 
Login successful.

$ oc apply -f openshift/template-app.yaml --dry-run
template "foobar-app" created (dry run)
Run Code Online (Sandbox Code Playgroud)

也可以在本地处理模板,这样就可以避免先将其发送到服务器,例如

$ oc process -f openshift/template-app.yaml --local -p APP_NAME=foo | oc apply --dry-run --validate -f -
deploymentconfig "foo" created (dry run)
service "foo" created (dry run)
Run Code Online (Sandbox Code Playgroud)

另请注意--validate我用于模式验证的选项。不幸的是,您仍然必须登录才能使apply命令工作(没有--local选项apply)。

奇怪的是,CLI 文档中没有描述此功能,但是在帮助屏幕上提到了它:

$ oc apply --help
Apply a configuration to a resource by filename or stdin.

JSON and YAML formats are accepted.

Usage:
  oc apply -f FILENAME [options]

...

Options:
      ...
      --dry-run=false: If true, only print the object that would be sent, without sending it.
      ...
      --validate=false: If true, use a schema to validate the input before sending it

Use "oc <command> --help" for more information about a given command.
Use "oc options" for a list of global command-line options (applies to all commands).
Run Code Online (Sandbox Code Playgroud)


pmc*_*own 1

我遇到了同样的问题,从命令返回的神秘错误oc process

但是,如果您进入 Openshift 控制台并使用控制台顶部的“添加到项目”链接,请选择“导入 YAML / JSON”选项并导入 YAML/JSON,这样您会得到稍微更有用的错误。