我有一个像这样使用 kustomize 的简单项目:
base/
namespace.yaml
kustomization.yaml
service.yaml
Run Code Online (Sandbox Code Playgroud)
与kustomization.yaml是:
resources:
- namespace.yaml
- service.yaml
namespace: my_wanted_namespace
Run Code Online (Sandbox Code Playgroud)
并且namespace.yaml是:
apiVersion: v1
kind: Namespace
metadata:
name: default
Run Code Online (Sandbox Code Playgroud)
问题是,当我这样做时: kustomize build ./base
我有这个:
apiVersion: v1
kind: Namespace
metadata:
name: default
Run Code Online (Sandbox Code Playgroud)
我怎么会有
apiVersion: v1
kind: Namespace
metadata:
name: my_wanted_namespace
Run Code Online (Sandbox Code Playgroud)
谢谢。
小智 10
如果要使用 kustomize 创建命名空间,则 kustomize 文件应如下所示。它必须使用命名空间。
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: my-wanted-namespace
resources:
- ./namespace.yml
Run Code Online (Sandbox Code Playgroud)
你的命名空间文件应该是一个普通的命名空间部署,如下所示:
apiVersion: v1
kind: Namespace
metadata:
name: my-wanted-namespace
Run Code Online (Sandbox Code Playgroud)
您可以从中删除命名空间资源,base并将其仅包含在覆盖中。例如:
overlay/kustomization.yaml
namespace: my_wanted_namespace
bases:
- ../base
resources:
- namespace.yaml
Run Code Online (Sandbox Code Playgroud)
overlay/namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
name: my_wanted_namespace
Run Code Online (Sandbox Code Playgroud)
重要的是文件中的namespace属性kustomization.yaml与namespace.yaml资源中的名称匹配base/service.yaml 并且不设置namespace属性。
编辑:下面的原始回复
作为 Hadrien 答案的替代方案,JSON Patch 也对我有用:
Run Code Online (Sandbox Code Playgroud)namespace: my-wanted-namespace patchesJSON6902: - target: version: v1 kind: Namespace name: base-namespace patch: |- - op: replace path: /metadata/name value: my-wanted-namespace此方法的关键是将基本
Namespace名称转换为与namespace覆盖kustomization.yaml文件中的键完全匹配。
老帖子,但上面的答案比需要的更复杂。
在kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: my-desired-namespace
resources:
- namespace.yaml
Run Code Online (Sandbox Code Playgroud)
并在namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
name: intentionally.broken.namespace
Run Code Online (Sandbox Code Playgroud)
实际上,我在其他地方有一个带有 kustomization 和虚拟命名空间的文件夹,我可以将其作为任何 kustomization 中的资源包含在内。kustomization 将用命名空间转换器替换命名空间名称,并创建它。
| 归档时间: |
|
| 查看次数: |
8550 次 |
| 最近记录: |