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

时间:2021-05-26 09:28:58

标签: kubernetes kubectl

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

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

所以我想知道,我如何检测此类问题?执行“删除”和“创建”不是一种选择,因为它会破坏可用性。我不想从“应用”更改部署,因为它是生产。我只是在命名空间中找到手动修改。

2 个答案:

答案 0 :(得分:1)

kubediff 正是您要找的。

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

$ ./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'

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

答案 1 :(得分:0)

kubectl patchkubectl replace 适合您的用例。看看这个 blog 可以更好地解释它们之间的区别。

如果您总是想将 configmap 更新为清单中的任何内容,请进行替换。