Rancher - Можно ли развернуть / воссоздать все пространство имен, доступное в одной среде, в новой среде

Владелец ранчо: v2.2.4

В графическом интерфейсе Rancher я вижу одну из наших сред (Dev), и она содержит пространство имен 'n1'. Это пространство имен в разных разделах (например, Workloads, LoadBalancers, ConfigMaps, Volumes и т. Д.) Имеет несколько записей (контейнеры / настройки и т. Д.).

Я хочу создать такое же пространство имен в новой среде, в которой работает Rancher. Эта среда позволяет сказать (Тест). После получения всех необходимых образов докеров (sudo docker image pull <server:port>/<imagename:imageversion>) мне нужно загружать YAML-файлы всех этих записей в каждом разделе и импортировать их в целевую среду? (возможно изменение идентификатора-тома, записей образа контейнера, т. е. name: <server:port>/<imagename:imageversion> местоположений (если есть), идентификатора-контроллера, чтобы сохранить его на целевом ( ТЕСТ) среда)? Насколько я понимаю, если я создам новую рабочую нагрузку / добавлю что-либо в соответствующем разделе, метка / аннотации сгенерируют новое значение идентификатора контроллера! Итак, мне интересно, прежде чем импортировать YAML, следует ли оставить значение записи controller-uid пустым (не уверен, что это будет barf).

Есть ли простой способ развернуть / создать все пространство имен 'n1' в среде TEST (т.е. реплику пространства имен n1 Dev in Test) с автоматическим созданием необходимых битов хранилища (классы / тома и постоянные тома - все они имеют некоторый идентификатор тома / имя / uid, связанный с каждым объектом), биты развертывания (uid / controller-uids) и т. д.?

Какой эффективный способ сделать это, чтобы мне не приходилось вручную загружать YAML (из Dev) и импортировать их в Test на каждом уровне компонента (например, Volumes YAMLs, Volume Класс YAML, рабочие нагрузки / YAML для развертывания и т. Д. - один за другим)?


person AKS    schedule 17.12.2019    source источник
comment
это может быть очень плохим предложением, но ... вы можете взломать этот github.com/pieterlange/kube- резервное копирование   -  person damitj07    schedule 07.01.2020


Ответы (1)


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

#!/bin/bash
SourceNamespace="SourceNS"
TargetNamespace="TargetNS"
TempDir="./tmp"

echo "Grabbing all resources in $SourceNamespace"
for APIResource in `kubectl api-resources --verbs=list --namespaced -o name`
do
  kubectl -n "$SourceNamespace" get "$APIResource" -o yaml > "$TempDir"/"$APIResource".yaml
done

echo "Deploying all resources in $TargetNamespace"
for yaml in `ls $TempDir`
do
  kubectl apply -n "$TargetNamespace" -f "$TempDir"/"$yaml"
done
person Matthew Mattox    schedule 09.08.2020