首页 > 解决方案 > 如何使用 Kubernetes Kustomize 避免不为空的命名空间删除

问题描述

我有一个由 Kustomized (Kubernetes) 管理的 Kubernetes 项目。该项目在同一个命名空间中部署了两个部署。

基本上,我有以下目录结构:

kustomize -> app1 -> kustomization.yaml
kustomize -> app1 -> namespace.yaml
kustomize -> app1 -> app1.yaml

kustomize -> app2 -> kustomization.yaml
kustomize -> app2 -> namespace.yaml
kustomize -> app2 -> app2.yaml

这些文件namespace.yaml在两种情况下都创建相同的命名空间,以便第一个应用程序部署、创建命名空间和第二个重用它。显然,问题是当我尝试仅删除以下应用程序之一时:

kubectl delete -k kustomize/app1

删除这两个应用程序,因为命名空间已删除,app2 也已删除。解决此问题的一个简单方法是移出namespace.yaml文件夹并单独调用它。但是,这种方法要求用户必须记住运行:

kubectl apply -f namespace.yaml

之前:

kubectl apply -k kustomize/app1
kubectl apply -k kustomize/app2

我知道另一种可能的解决方案是通过脚本。我的问题是,存在一种使用 Kustomize 更好地管理命名空间删除的方法,以便仅当它为空时才将其删除。

标签: kuberneteskustomize

解决方案


你可以有这个目录结构:

kustomize -> ns -> namespace.yaml

kustomize -> app1 -> kustomization.yaml
kustomize -> app1 -> app1.yaml

kustomize -> app2 -> kustomization.yaml
kustomize -> app2 -> app2.yaml

您也可以kustomization.yaml在根目录添加 a ,这样您只需要它来应用所有:

kubectl -k kustomize/

这将创建命名空间和两个应用程序。

如果您愿意,您仍然可以只删除一个应用程序:

kubectl delete -k kustomize/app1

而且由于您namespace.yaml在该目录中没有,它不会删除命名空间。


推荐阅读