在Kubernetes(Service,ReplicationController等)中创建对象之前,我想测试对象的JSON或YAML规范是否有效。但我不想真正创建对象。
是否有人要做一个"干运行"这相当于运行kubectl create --validate=true -f file.json
,但只是让我知道它通过验证,而不是实际创建它?
理想情况下,如果我可以通过API执行此操作,并且不需要使用kubectl,那就太棒了。但如果它要求我使用kubectl,我可以使它工作。
感谢。
答案 0 :(得分:6)
某些kubectl命令支持--dry-run
标记(例如kubectl run,kubectl expose和kubectl rolling-update)。
有一个issue可以将--dry-run
标志添加到更多命令中。
答案 1 :(得分:5)
这对我有用(kubernetes 1.7和1.9):
kubectl apply --validate=true --dry-run=true --filename=task.yaml
答案 2 :(得分:2)
有一个名为kubeval的工具可以根据预期的模式验证配置,并且不需要连接到集群即可运行,这使其成为CI等应用程序的不错选择。
答案 3 :(得分:0)
使用--dry-run
和--validate
似乎只能部分解决问题。
客户端验证并不详尽。它主要确保 yaml文件中的字段名称和类型有效。完全验证是 始终由服务器完成,并且可以始终施加其他附加条件 客户端验证方面的限制/约束。
来源-kubectl --validate flag pass when yaml file is wrong #64830
鉴于此,除了将其完全交给服务器进行审核之外,您无法进行全套验证。