【问题标题】:How to avoid not empty namespace deletion with Kubernetes Kustomize如何使用 Kubernetes Kustomize 避免不为空的命名空间删除
【发布时间】:2021-08-05 16:09:36
【问题描述】:

我有一个由 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 更好地管理命名空间删除的方法,以便仅当它为空时才将其删除。

【问题讨论】:

  • 您是否尝试将namespace.yaml 移动到单独的目录并仅引用kustomization.yaml 中的该命名空间?
  • 我认为这不会改变任何事情。当我运行kubectl delete -k kustomize/app1 时,它会分析 kustomization.yaml,如果它引用了 namespace.yml,它只会调用它的删除来自动删除 app2。我认为如果 Kustomize 不支持此功能,我可以做任何事情。 Kubernetes(没有 Kustomize)也存在同样的问题。我希望 Kustomized 解决了这个问题,但我认为从这个角度来看没有取得任何进展。
  • 我并不是说你应该引用namespace.yaml,而是它创建的命名空间,例如与namespace: my-namespacekubernetes.io/docs/tasks/manage-kubernetes-objects/… 上查看一些示例
  • 这就是我现在正在做的事情,我在消息中进行了描述。现在我的 kustomization.yaml 仅引用命名空间 namespace: mynamespace 然后在 kustomize/app1kustomize/app2 上面的两个文件夹之外,我有一个命名空间 namespace.yml 并在部署之前运行 kubectl apply -f namespace.yml 并在最后运行 kubectl delete -f namespace.yml。但我不喜欢这个额外的命令。

标签: kubernetes kustomize


【解决方案1】:

你可以有这样的目录结构:

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,因此它不会删除命名空间。

【讨论】:

  • 谢谢。听起来很合理。我会试试的。
猜你喜欢
  • 2019-12-26
  • 2019-09-15
  • 2022-08-19
  • 2016-02-18
  • 1970-01-01
  • 2011-08-16
  • 2021-09-12
  • 1970-01-01
  • 2013-03-17
相关资源
最近更新 更多