kustomize的文档提供了一个很好的一行程序,比较两个不同的覆盖.
diff \
<(kustomize build $OVERLAYS/staging) \
<(kustomize build $OVERLAYS/production)
有没有一种方法可以做同样的事情,但是针对的是在特定的kubernetes命名空间中运行的东西和磁盘上定义的覆盖?
更具体地说,知道kubectl apply -k .
会做什么,而不实际做?使用--dry-run
只是说吐出一个对象列表,而不是一个真实的差异。
6条答案
按热度按时间rdrgkggo1#
在Kustomize版本4.x.x中
llmtgqce2#
如果你正在寻找一种可视化的方法,我强烈建议你尝试Monokle的比较和同步功能:
在上面的图片中,你可以看到一个例子,我正在将
cluster-install
kustomization的输出与我的minikube
集群中的对象进行比较。您可以轻松确定群集中缺少哪些资源以及哪些资源不同。
最重要的是,您不仅限于将kustomization与集群进行比较。您还可以比较两个集群,两个kustomizations, Helm 图表等。
xkrw2x1b3#
我不确定这是不是你要找的,但是在Kubernetes中你有
kubectl diff
。这在APIServer dry-run and kubectl diff上解释得很好。
您可以使用选项
-k
,--kustomize
,它可以:处理客户化目录。此标志不能与-f或-R一起使用。
或者类似于一行程序的东西来为特定的命名空间设置上下文:
一旦你有了上下文设置,你可以用以下方式使用它们:
这只是一个我没有测试过的例子。
5ktev3wc4#
我在我的shell配置中有一个小函数来做到这一点:
它删除了
last-applied-configuration
注解并添加了一些颜色。sdnqo3pr5#
现在你可以直接在diff中使用kustomize:
Kubectl diff --help
-k,--kustomize='':处理客户化目录。此标志不能与-f或-R一起使用。
dwbf0jvd6#
试试这个kustomize命令,目前还在alpha版本中:
通过https://kubernetes.slack.com/archives/C9A5ALABG/p1582738327027200?thread_ts=1582695987.023600&cid=C9A5ALABG