Kubernetes 使用“时在ConfigMap中查找手动更改”;kubectl apply”一词;

Kubernetes 使用“时在ConfigMap中查找手动更改”;kubectl apply”一词;,kubernetes,kubectl,Kubernetes,Kubectl,我有一个Kubernetes集群,通过在CI/CD管道中执行“apply”命令,以声明方式执行所有部署 “Apply”的工作方式是将对象的状态与命令附带的清单合并。因此,您可以进行手动更改—例如,向ConfigMap添加一个新的键值,“应用”将使其保持不变,即使源代码中不存在此键值 所以我想知道,我怎样才能发现这样的问题?执行“删除”和“创建”不是一个选项,因为它会中断可用性。我不想将部署从“应用”更改为“应用”,因为它是生产性的。我只是想在名称空间中找到手动修改。kubectl patch或k

我有一个Kubernetes集群,通过在CI/CD管道中执行“apply”命令,以声明方式执行所有部署

“Apply”的工作方式是将对象的状态与命令附带的清单合并。因此,您可以进行手动更改—例如,向ConfigMap添加一个新的键值,“应用”将使其保持不变,即使源代码中不存在此键值


所以我想知道,我怎样才能发现这样的问题?执行“删除”和“创建”不是一个选项,因为它会中断可用性。我不想将部署从“应用”更改为“应用”,因为它是生产性的。我只是想在名称空间中找到手动修改。

kubectl patch
kubectl replace
适合您的用例。看看这个能更好地解释它们之间的区别

如果您总是想将configmap更新到清单中的任何内容,请选择“替换”。

是您需要的

您可以将其作为命令行工具运行,例如:

$ ./kubediff k8s
Checking ReplicationController 'kubediff'
 *** .spec.template.spec.containers[0].args[0]: '-repo=https://github.com/weaveworks/kubediff' != '-repo=https://github.com/<your github repo>'
Checking Secret 'kubediff-secret'
Checking Service 'kubediff'
$。/kubediff k8s
正在检查复制控制器“kubediff”
***.spec.template.spec.containers[0]。参数[0]:'-repo=https://github.com/weaveworks/kubediff' != '-回购=https://github.com/'
正在检查机密“kubediff机密”
正在检查服务“kubediff”

或作为K8s集群内的服务。此模式还为您提供了一个显示输出的简单UI。

谢谢您的回复,但我不确定是否要在生产中将部署命令从“应用”更改为“应用”。有没有办法获取差异,检测手动更改?我想“上次应用的配置”可能会有所帮助。我不确定kubectl是否能给你一个“在集群中手动应用更改”的结果。但是,您可以从api获取资源,并使用类似于
kubediff
的工具将其与git中的本地更改区分开来。