разница между активным в кластере и настройкой

Документы kustomize предоставляют приятный -лайнер, сравнивающий две разные накладки ...

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

есть ли способ сделать то же самое, но против того, что работает в конкретном пространстве имен kubernetes и определенном наложении на диске?

более конкретно, зная, что kubectl apply -k . будет делать, не делая этого на самом деле? использование --dry-run просто говорит, что выводит список объектов, а не реальную разницу.


person yee379    schedule 04.02.2020    source источник


Ответы (4)


Я не уверен, что это то, что вы ищете, но в Kubernetes у вас есть kubectl diff.

Это хорошо объясняется на пробном запуске APIServer и kubectl diff.

Вы можете использовать опцию -k, _ 3_, который:

Обработайте каталог настройки. Этот флаг нельзя использовать вместе с -f или - R.

Или, может быть, что-то похожее на однострочник для установки контекста для определенного пространства имен:

$ 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 -

Это просто пример, который я не тестировал.

person Crou    schedule 04.02.2020

Попробуйте эту команду kustomize, в настоящее время в альфа-версии:

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

person Julian V. Modesto    schedule 28.02.2020

Для этого у меня есть небольшая функция в моей конфигурации оболочки:

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 и добавляет немного цвета.

person ITChap    schedule 26.01.2021

kustomize build ./ | kubectl diff -f  -

В Kustomize версии 4.x.x

person dotdat    schedule 12.03.2021