我有一个 Kustomize 的基础配置,希望能够在不编辑它的情况下重复使用。但很遗憾,它会创建一个我不想要的命名空间。 我希望在编译清单时简单地将该资源从考虑范围内移除,并添加一个我的资源,因为我无法补丁命名空间以更改名称。
这能做到吗? 如何操作?
我有一个 Kustomize 的基础配置,希望能够在不编辑它的情况下重复使用。但很遗憾,它会创建一个我不想要的命名空间。 我希望在编译清单时简单地将该资源从考虑范围内移除,并添加一个我的资源,因为我无法补丁命名空间以更改名称。
这能做到吗? 如何操作?
您可以通过使用战略合并补丁的删除指令来省略特定资源,就像这样。
文件夹结构
$ tree .
.
├── base
│ ├── kustomization.yaml
│ └── namespace.yaml
└── overlays
├── dev
│ └── kustomization.yaml
└── prod
├── delete-ns-b.yaml
└── kustomization.yaml
$ cat base/kustomization.yaml
resources:
- namespace.yaml
$ cat base/namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
name: ns-a
---
apiVersion: v1
kind: Namespace
metadata:
name: ns-b
$ cat overlays/dev/kustomization.yaml
bases:
- ../../base
$ cat overlays/prod/delete-ns-b.yaml
$patch: delete
apiVersion: v1
kind: Namespace
metadata:
name: ns-b
$ cat overlays/prod/kustomization.yaml
bases:
- ../../base
patches:
- path: delete-ns-b.yaml
行为的kustomize
$ kustomize build overlays/dev
apiVersion: v1
kind: Namespace
metadata:
name: ns-a
---
apiVersion: v1
kind: Namespace
metadata:
name: ns-b
$ kustomize build overlays/prod
apiVersion: v1
kind: Namespace
metadata:
name: ns-a
kind: CronJob
尝试时,编译的清单中出现了一堆空对象。 - inostiakustomize
省略资源?在我的情况下-我想象这是最常见的用例-我希望kustomize
省略资源,因为我不想将其应用于目标Kubernetes集群,但是kustomize
没有提供一种简单的方法来实现此目的。将过滤功能放在将资源应用于集群时而不是生成它们时进行是否更好?我最终采用的解决方案是,在应用到集群时通过标签对资源进行过滤。您可以在覆盖中添加一个排除标签以防止该资源被应用。
例如:
$ kustomize build . | kubectl apply -l apply-resource!=no -f -
我发现我的理解,不能更改命名空间名称是不正确的。使用修补程序功能,您实际上可以更改资源的名称,包括命名空间。
这就是我最终使用的:
patches:
- target:
kind: Namespace
name: application
patch: |-
- op: replace
path: /metadata/name
value: my-application