我正在使用helm创建动态命名空间。然而,我遇到了一个问题,当我使用命令创建一个新的命名空间时,我使用该命令创建的前一个命名空间被终止,而新的命名空间被启动。
例如,集群中有一个名为original-namespace
的现有命名空间,我想创建一个名为my-new-namespace
的新命名空间。为了简单起见,我创建了一个Makefile,其中包含以下命令:
CHART_DIR ?= "./charts"
NAMESPACE ?= "original-namespace"
namespace:
helm install --dry-run namespace ${CHART_DIR}/namespace --set name=${NAMESPACE} > namespace.yaml
helm upgrade --install namespace ${CHART_DIR}/namespace --set name=${NAMESPACE}
字符串
要执行命名空间创建,我只需运行:NAMESPACE=my-new-namespace make namespace
当运行这个命令时,命名空间my-new-namespace
被创建,original-namespace
被终止。当我再次运行这个命令时,情况也是如此:NAMESPACE=original-namespace make namespace
个
删除my-new-namespace
,并再次创建original-namespace
。
我已经仔细检查了我的--dry-run输出,一切看起来都是应该的。我相信这可能是helm upgrade --install`命令的一些东西,但我对命名空间创建的知识有点有限。提前感谢您的帮助
1条答案
按热度按时间iaqfqrcu1#
Helm保留了一些关于它已经安装的信息,Helm release对象本身位于一个命名空间中。您没有使用
helm --namespace
选项,因此这些release将进入default
命名空间(或者您的本地Kubernetes配置定义为默认命名空间的任何名称空间)。但是,您的设置为Helm版本使用了固定名称。当您使用新的命名空间名称
helm upgrade
版本时,图表管理的任何旧资源都会被删除并替换为新资源。如果您想保留两组资源,则需要使用不同的版本名称或不同的命名空间。听起来您的图表正在创建Kubernetes空间对象,所以发布可能需要在不同的名称空间中。给定一个名称空间名称,我可能会运行
字符串
如果您在这里使用Make,请考虑生成YAML(或JSON)值文件,而不是使用有时有问题的
--set
语法。型