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

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

В графическом интерфейсе Rancher я вижу одну из наших сред (Dev), и она содержит пространство именn1. Это пространство имен в разных разделах (например, "Рабочие нагрузки", "Балансировщики нагрузки", "Конфигмапы", "Тома" и т. Д.) Имеет несколько записей (контейнеры / настройки и т. Д.).

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

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

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

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
Другие вопросы по тегам