Есть ли способ экспортировать ресурс из кластера куба, чтобы его можно было применить к другому кластеру - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь экспортировать некоторые ресурсы куба (конфигурации, развертывания, службы) из одного кластера, чтобы их можно было применить к другому.

Примерно так ...

kubectl --kubeconfig $ {src} -n $ {ns} получить конфигурационные файлы $ {cm} -o yaml | \ kubectl --kubeconfig $ {dst} -n $ {ns} apply -f -

Это работает один раз. Первый раз, когда ресурс еще не создан. Если я запускаю его во второй раз, пытаясь обновить место назначения, я получаю сообщение об ошибке вроде ...

объект был изменен; Пожалуйста, примените ваши изменения к последней версии и попробуйте снова.

Я подозреваю, что это как-то связано с полями resourceVersion или timestamp, которые появляются в выходных данных.

Есть ли вывести ресурс, чтобы чередовать все данные на стороне сервера c info? Другое, что куча операторов удаления delete и grep -v.

TIA

Ответы [ 3 ]

1 голос
/ 16 апреля 2020

Вы можете использовать приведенную ниже команду с флагом --export для удаления информации о кластере c.

kubectl get cm cmname -o yaml --export > cm.yaml

Предупреждение о том, что --export устарело и будет удалено в будущем , Так что используйте его на свой страх и риск.

0 голосов
/ 16 апреля 2020

Итак, с учетом экспорта, я придумал это ...

sub_string_A="resourceVersion|selfLink|uid|creationTimestamp"

sub_string_B="resourceVersion|selfLink|uid|creationTimestamp|annotations|last-applied-configuration|status|loadBalancer|clusterIP"

namespace=test

src=clusterA.yml
dst=clusterB.yml

dry_run=false

kubectl --kubeconfig ${src} -n ${namespace} get ingress -o yaml \
  | grep -v -E "${sub_string_A}" \
  | kubectl --kubeconfig ${dst} -n ${namespace} --dry-run=${dry_run} apply -f -

kubectl --kubeconfig ${src} -n ${namespace} get statefulsets -o yaml \
  | grep -v -E "${sub_string_B}" \
  | kubectl --kubeconfig ${dst} -n ${namespace} --dry-run=${dry_run} apply -f -

Кажется, что поступление ведет себя не так, как другие источники. Так что получается другая картина.

0 голосов
/ 16 апреля 2020

Вам необходимо отредактировать выходные данные, чтобы удалить некоторые из полей метаданных, таких как UID, время создания и т. Д. c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...