0

kustomize的文档提供了一个很好的单线,可以比较两个不同的叠加层......

diff \
  <(kustomize build $OVERLAYS/staging) \
  <(kustomize build $OVERLAYS/production)

有没有办法做同样的事情,但针对特定 kubernetes 命名空间中运行的内容以及磁盘上定义的覆盖?

更具体地说,知道kubectl apply -k .不实际做会做什么?使用--dry-run只是说吐出对象列表而不是真正的差异。

4

4 回答 4

2
kustomize build ./ | kubectl diff -f  -

在 Kustomize 版本 4.xx 中

于 2021-03-12T15:29:30.947 回答
0

我的 shell 配置中有一个小功能来执行此操作:

kdiff() {
  overlay="${1}"
  kustomize build ${overlay} \
    | kubectl diff -f - ${@:2} \
    | sed '/kubectl.kubernetes.io\/last-applied-configuration/,+1 d' \
    | sed -r "s/(^\+[^\+].*|^\+$)/$(printf '\e[0;32m')\1$(printf '\e[0m')/g" \
    | sed -r "s/(^\-[^\-].*|^\-$)/$(printf '\e[0;31m')\1$(printf '\e[0m')/g"
}

它会删除last-applied-configuration注释并添加一些颜色。

于 2021-01-26T11:06:37.117 回答
0

我不确定这是否是你要找的,但在Kubernetes中你有kubectl diff.

APIServer dry-run 和 kubectl diff很好地解释了它。

您可以使用 option -k--kustomize它可以:

处理自定义目录。此标志不能与-f-R一起使用。

或者可能类似于 one-liner 来为特定命名空间设置上下文:

$ kubectl config set-context staging --user=cluster-admin --namespace=staging
$ kubectl config set-context prod --user=cluster-admin --namespace=prod

一旦你有上下文设置,你可以通过以下方式使用它们:

kubectl config use-context staging; cat patched_k8s.yaml | kubectl config use-context prod; kubectl diff -f -

这只是一个我没有测试的例子。

于 2020-02-04T13:04:32.717 回答
0

试试这个 kustomize 命令,目前处于 alpha 阶段:

KUSTOMIZE_ENABLE_ALPHA_COMMANDS=true kustomize resources diff -k your/kustomize/overlay

通过https://kubernetes.slack.com/archives/C9A5ALABG/p1582738327027200?thread_ts=1582695987.023600&cid=C9A5ALABG

于 2020-02-28T20:39:18.933 回答