如何避免使用 Kubernetes Kustomize 删除非空命名空间
How to avoid not empty namespace deletion with 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 更好地管理名称空间删除的方法,以便仅在名称空间为空时将其删除。
你可以有这样的目录结构:
kustomize -> ns -> namespace.yaml
kustomize -> app1 -> kustomization.yaml
kustomize -> app1 -> app1.yaml
kustomize -> app2 -> kustomization.yaml
kustomize -> app2 -> app2.yaml
你也可以在根部添加一个kustomization.yaml
,这样你只需要这个就可以全部应用:
kubectl -k kustomize/
这将创建命名空间和两个应用程序。
如果您愿意,您仍然可以只删除一个应用程序:
kubectl delete -k kustomize/app1
并且由于您在该目录中没有 namespace.yaml
,因此它不会删除命名空间。
我有一个由 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 更好地管理名称空间删除的方法,以便仅在名称空间为空时将其删除。
你可以有这样的目录结构:
kustomize -> ns -> namespace.yaml
kustomize -> app1 -> kustomization.yaml
kustomize -> app1 -> app1.yaml
kustomize -> app2 -> kustomization.yaml
kustomize -> app2 -> app2.yaml
你也可以在根部添加一个kustomization.yaml
,这样你只需要这个就可以全部应用:
kubectl -k kustomize/
这将创建命名空间和两个应用程序。
如果您愿意,您仍然可以只删除一个应用程序:
kubectl delete -k kustomize/app1
并且由于您在该目录中没有 namespace.yaml
,因此它不会删除命名空间。