我有一个kustomize基地,我想重新使用而不编辑它。不幸的是,它创建了一个我不想创建的命名空间。在编译清单时,我想简单地从考虑中删除该资源,并为我的资源添加一个资源,因为我无法修补名称空间以更改名称。这可以做到吗?怎么做?
yx2lnoni1#
您可以通过使用策略合并修补程序的删除指令来省略特定的资源,如下所示。文件夹结构
$ 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 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
型在本例中,我们在基文件夹中有两个名称空间。在dev中,kustomize产生2个命名空间,因为没有补丁。但是,在prod中,kustomize只生成一个名称空间,因为delete patch删除了名称空间ns-b。
ryevplcw2#
我发现我对不能更改名称空间名称的理解是不正确的。使用补丁功能,您实际上可以更改资源的名称,包括名称空间。这是我最终使用的:
patches: - target: kind: Namespace name: application patch: |- - op: replace path: /metadata/name value: my-application
字符串
hmtdttj43#
我遇到了这个问题,并最终采取了不同的方法来解决它。有必要回顾一下您的需求,问问自己为什么要让kustomize省略一个资源?在我的例子中-我想这是最常见的用例-我希望kustomize忽略一个资源,因为我不想将它应用到目标kubernetes集群,但kustomize并没有提供一种简单的方法来做到这一点。在将资源应用到集群时进行过滤,而不是在生成资源时进行过滤,不是更好吗?我最终应用的解决方案是在应用到集群时按标签过滤资源。您可以在覆盖中添加排除标签以防止应用资源。例如,在
kustomize
$ kustomize build . | kubectl apply -l apply-resource!=no -f -
3条答案
按热度按时间yx2lnoni1#
您可以通过使用策略合并修补程序的删除指令来省略特定的资源,如下所示。
文件夹结构
字符串
文件内容
型
客户行为
型
在本例中,我们在基文件夹中有两个名称空间。在dev中,kustomize产生2个命名空间,因为没有补丁。但是,在prod中,kustomize只生成一个名称空间,因为delete patch删除了名称空间ns-b。
ryevplcw2#
我发现我对不能更改名称空间名称的理解是不正确的。使用补丁功能,您实际上可以更改资源的名称,包括名称空间。
这是我最终使用的:
字符串
hmtdttj43#
我遇到了这个问题,并最终采取了不同的方法来解决它。有必要回顾一下您的需求,问问自己为什么要让
kustomize
省略一个资源?在我的例子中-我想这是最常见的用例-我希望kustomize
忽略一个资源,因为我不想将它应用到目标kubernetes集群,但kustomize
并没有提供一种简单的方法来做到这一点。在将资源应用到集群时进行过滤,而不是在生成资源时进行过滤,不是更好吗?我最终应用的解决方案是在应用到集群时按标签过滤资源。您可以在覆盖中添加排除标签以防止应用资源。例如,在
字符串