牧场主: v2.2.4
在Rancher GUI中,我在我们的一个环境(Dev)上看到,它包含一个名称空间'n1‘。不同部分(即工作负载、LoadBalancers、ConfigMaps、卷等)下的命名空间很少有条目(容器/设置等)。
我想在Rancher正在运行的新环境上创建相同的名称空间。这个环境可以说是(测试)。在获得所有必需的坞映像(sudo docker image pull <server:port>/<imagename:imageversion>)之后,是否需要在每个节下下载所有这些条目的YAML并将它们导入目标环境?(可能会更改name: <server:port>/<imagename:imageversion>卷-id、容器映像条目,即位置(如果有的话)、controller-uid以保持目标(测试)环境中的位置)?我的理解是,如果我在各自的部分下创建了一个新的工作负载/添加了任何内容,标签/注释将生成一个新的控制器-id值!因此,在导入YAML之前,我想知道是否应该将控制器-uid输入值保留为空(不确定它是否会阻塞)。
是否有一种简单的方法可以在测试环境(即测试中的n1 Dev的名称空间副本)上旋转/创建一个完整的名称空间n1‘,并自动生成必要的存储位(卷类/卷和持久卷-所有这些都有与每个实体相关联的Vol /name/uid)、部署位(uid/控制器-uid)等吗?
的有效方法是什么来做到这一点,这样我就不必手动下载YAML (从Dev)并在每个组件级别(即卷YAML、卷类YAML、工作负载/部署等)中导入它们?
发布于 2020-08-09 08:55:53
您可以使用以下方法从命名空间获取所有资源,并将它们应用到新的命名空间中。
#!/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"
donehttps://stackoverflow.com/questions/59383767
复制相似问题