将资源的任何更改还原为 kubectl.kubernetes.io/last-applied-configuration

Revert any changes of a resource to kubectl.kubernetes.io/last-applied-configuration

是否有任何命令可以将资源恢复到以前的配置?

例如,如果我以声明方式创建了一个服务类资源,然后我手动更改了端口,我如何才能放弃实时更改以便重新应用创建该资源的原始定义?

是否有对以前应用的配置的任何跟踪?如果我们可以说:将我的服务重新配置为当前应用的配置 - 2 个版本,那就更好了。

编辑:我知道部署有推出选项,但我想知道一种 Kind-wise 机制

实际上,Kubernetes除了DeploymentsDaemonSets之外,不支持固有资源的回滚选项。

不过,您可以考虑使用 Helm,这是一个众所周知的 Kubernetes 包管理器。 Helm 提供了一种机制来恢复您的包发布之前的状态,并包括要恢复的所有整个对象资源。

Helm 使用 helm rollback 命令表示此功能:

helm rollback [flags] [RELEASE] [REVISION]

您可以在官方 Helm 中找到完整的命令选项 Documentation

由于您明确询问 last-applied-configuration 注释...

很简单:

kubectl apply view-last-applied deployment/foobar-module | kubectl apply -f -

鉴于 apply 通过 stdin 如此灵活地组合 — 没有专用的 kubectl apply revert-to-last-applied 子命令,因为它是上面简单管道的冗余重新实现。

人们也可能怀疑,由于复杂的原因,这样的 revert 内置永远不可能完美(正如 Nick_Kh 所指出的)。名为 revert 的子命令引起了用户的很多期望,但它永远不会实现。

所以我们得到一个简化的近似值:spec.bak 保存在资源注释中,准备重新apply