声明式(Declarative)配置管理,也称为配置即代码(configuration-as-code),是Kubernetes的关键优势之一。
它允许用户提交所需的集群状态,并跟踪不同的版本,通过CI/CD管道改进审计和自动化。
Kubernetes 1.13将服务器端干运行(server-side dry-run)和kubectl diff升级到beta。这两个特性是Kubernetes声明模型的重大改进。
Kubernetes 1.13 后 APIServer DryRun正逐步进入beta测试阶段。这项功能将对象管理的“应用”与声明从kubectl转移至apiserver,旨在修复大量目前无法得到解决的现有bug。
- 在版本1.13中,默认情况下启用了dryRun测试版功能。请求(
POST
,PUT
,PATCH
,和DELETE
)可以接受在dryRun模式的请求。 - 请求的响应主体尽可能接近非空运行响应。该系统保证空运行请求不会持久存储在存储中或具有任何其他副作用。
dryRun
通过设置dryRun
查询参数来触发空运行。此参数是一个字符串,用作枚举,在1.13中,唯一可接受的值为:
All
:每个阶段均正常运行,最后一个存储阶段除外。运行准入控制器以检查请求是否有效,变异控制器使请求变异,在上执行合并PATCH
,字段默认,并且发生模式验证。所做的更改不会持久保存到基础存储中,但是将被持久保存的最终对象以及正常状态代码仍会返回给用户。如果该请求将触发具有副作用的准入控制器,则该请求将失败,而不会冒不必要的副作用的风险。所有内置的准入控制插件均支持空运行。此外,准入webhook可以在其配置对象中声明通过将sideEffects字段设置为“ None”,可以确定它们没有副作用。如果Webhook实际上确实有副作用,则应将sideEffects字段设置为“ NoneOnDryRun”,并且还应修改该Webhook以了解DryRun
AdmissionReview中的字段,并防止对空运行请求的副作用。
- 将值保留为空(Java代码中设置为null),这也是默认值:保持默认的修改行为。
例如:
响应看起来与非空运行请求相同,但是某些生成字段的值可能不同。
示例:基于kubernetes-client/java客户端
- 注意:在Java中,dryRun的值为All或者null,本可以设置为空字符串("")
使用 Java 操作 Kubernetes API:https://blog.csdn.net/fly910905/article/details/101345091
参考链接:https://kubernetes.io/docs/reference/using-api/api-concepts/#make-a-dry-run-request