总结:服务器端应用中国论坛年度提案征集终于开设了一个论坛,让用户开发者和从业者齐聚一堂,进行面对面的交流与合作。
作者:Antoine Pelisse(Google Cloud,@apelisse)
声明式配置管理(配置即代码)配置(也称为配置-as-代码)是 Kubernetes 的主要优势之一。 这允许用户提交所需的集群状态并跟踪不同的版本,通过 CI/CD 管道改进审核和自动化。 Apply 工作组一直在努力修复一些缺陷,并很高兴地宣布 server-side dry-run 和 kubectl diff 将在 Kubernetes 1.13 中处于测试阶段。 这两个功能是对 Kubernetes 声明式模型的重大改进。
挑战
在维持 Kubernetes 的无缝声明式体验方面仍然存在一些差距,我们正在努力解决其中的一些问题。
编译器)和 linter 擅长查找代码拉取请求中的错误,但 Kubernetes 配置文件缺乏适当的验证。 现有的解决方案是运行 kubectl apply --dry-run,它会在不与服务器通信的情况下执行本地试运行。 它没有服务器验证,也没有针对权限控制器进行验证(准入控制器验证)。 例如,自定义资源名称仅在服务器上验证,因此本地试运行不会有帮助。
由于各种原因,服务器很难知道如何应用对象。
某些字段可能默认为意外值。
静音 Webhook 可能会设置字段或更改某些值。
修补和合并可能会导致对象发生令人惊讶的变化。它具有令人惊讶的效果并可能导致事故。 例如,很难知道合并后列表将如何排序。
工作组试图解决这些问题。
APIServer dry-run
实现 APIServer dry-run 可以解决这两个问题。
这允许您将对 apiserver 的单个请求标记为“. dry-run",
API 服务器保证试运行请求不会被持久化。
该请求被视为常规请求。该字段为默认值,对象为经过验证准入链和修改准入链后,最终对象返回给用户而不进行持久化。
动态准入控制器不应该对每个请求产生副作用,但副作用却发生了。仅当所有准入控制器明确声明它们没有空运行副作用时才处理空运行请求
如何启用
功能 - 通过门启用服务器端空运行。此功能在 1.13 中处于测试阶段,默认情况下应启用,但可以使用 kube-apiserver--feature-gates DryRun=true 启用/禁用
如果您拥有动态准入控制器,您可能需要对其进行如下修改:
如果 webhook 请求指定 dry-run 参数。
p>
p>
admissionregistration.k8s.io/v1beta1.Webhook 如果在对象的 SideEffects 字段中指定了副作用并且该对象已进行试运行,则可以使用 kubectl。应用--se。rver-dry-run 在 kubectl 中触发该函数。 这用 dryRun 标志装饰请求并返回应用的对象,如果失败则返回错误。
Kubectl diff
APIServer dry-run 很有用,因为它允许您查看对象是如何处理的,但如果对象很大,则不清楚它到底是什么很难确定正在处理的内容。 改变了。 。 kubectl diff 通过显示当前“活动”对象和新的“试运行”对象之间的差异来满足此需求。 仅关注对对象所做的更改、服务器如何合并这些更改以及更改 Webhooks 如何影响输出是非常有用的。
用法
kubectl diff 预计与 kubectl apply 尽可能相似。 kubectl diff -f some-resources.yaml 显示以下差异: yaml 文件中的资源。 您还可以使用 KUBECTL_EXTERNAL_DIFF 环境变量来使用您选择的 diff 程序。 示例:
KUBECTL_EXTERNAL_DIFF=meld kubectl diff -f some-resources.yaml
接下来做什么?
工作组我还很忙改进一些点。
服务器端应用程序试图通过向字段添加所有权语义来改进其执行方案。 对 CRD 和工会的支持也将得到改善。
Diff 缺少 kubectl apply 的一些有用功能,例如按标签过滤和查看修剪资源的能力。
最终,kubectl diff 将使用服务器端应用程序。
2019 KubeCon + CloudNativeCon 中国论坛提案征集(CFP)现已开放
KubeCon + CloudNativeCon 论坛邀请用户、开发者、人员可以面对面地聚会和见面。交流与合作。 与会者将包括来自 Kubernetes、Prometheus 和其他云原生计算基金会 (CNCF) 赞助项目的领导者,共同讨论云原生生态系统的发展方向。
2019中国开源峰会提案征集(CFP)现已开放
中国开源峰会将使参与者能够协作和分享信息。 了解最新、最有趣的开源技术,包括 Linux、容器、云技术、网络、微服务等。 获取有关如何驾驭和领导开源社区的信息。
会议日期:
提案征集截止日期:太平洋标准时间 2 月 15 日星期五晚上 11:59
提案征集通知日期:2019年4月1日
会议日程通知日期:2019年4月3日
幻灯片提交截止日期:6月17日星期一
会议活动日期:6月24日 - 2019年2月26日
2019 KubeCon + CloudNativeCon +开源峰会中国赞助计划发布
评论前必须登录!
注册