kubernetes - 如何使用 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
在根目录添加 a ,这样您只需要它来应用所有:
kubectl -k kustomize/
这将创建命名空间和两个应用程序。
如果您愿意,您仍然可以只删除一个应用程序:
kubectl delete -k kustomize/app1
而且由于您namespace.yaml
在该目录中没有,它不会删除命名空间。
推荐阅读
- java - 不匹配 LIst<> 的类型及其元素 - Java
- reactjs - 使用状态添加项目 onClick 反应不起作用?
- python - 根据支出移动平均分配客户
- tensorflow - 相同的代码,相同的库,但为什么我在新笔记本电脑上的训练速度比旧笔记本电脑慢
- pandas - Redshift COPY 命令:频谱扫描错误 - 同一列的不同镶木地板类型
- go-gorm - 有没有办法结合范围和 OR 条件
- r - 在R中水平合并数据帧
- google-apps-script - 通过应用程序脚本从同一电子表格中的另一张工作表中获取值
- sql-server - 如何使用 substring 和 charindex 从第一列解析值并创建新列
- python - Pyppeteer: {'waitUntil': 'networkidle0'} 不等到页面加载完毕