Kubernetes 如何处理不同于全局设置名称空间的名称空间?
让我们假设上述情况。问题在于Kubernetes 如何处理不同于全局设置名称空间的名称空间?,kubernetes,kustomize,Kubernetes,Kustomize,让我们假设上述情况。问题在于r2中指定的对象。yaml将放在ns1中,即使ns2在metadata.namespace中被明确引用 我该怎么处理这件事?或者我该如何解决这个问题(因为我假设有多个选项)?我研究了这个问题,并提出了一个想法 apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization namespace: ns1 resources: - r1a.yaml - r1b.yaml - r1c.yaml
r2中指定的对象。yaml
将放在ns1
中,即使ns2
在metadata.namespace
中被明确引用
我该怎么处理这件事?或者我该如何解决这个问题(因为我假设有多个选项)?我研究了这个问题,并提出了一个想法
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: ns1
resources:
- r1a.yaml
- r1b.yaml
- r1c.yaml
- r1d.yaml
- r1e.yaml
- r2.yaml # needs to be placed in namespace ns2
您需要有两个目录,在此设置中是:base
和prod
。在base
目录中,您应该使用基本yaml和kustomization.yaml
文件。在我的场景中,我有6个yaml:nginx/1/2/3/4.yaml
基于,和nginx5.yaml
看起来相同,但有额外的spec.namespace:nginx
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: ns1
bases:
- ../base
patchesJson6902:
- target:
group: apps
version: v1
kind: Deployment
name: nginx-deployment-5
path: patch.yaml
$ cat patch.yaml
- op: replace
path: /metadata/namespace
value: nginx
在base
目录中:
├── base
│ ├── [nginx.yaml] Deployment nginx ns: default
| ├── [nginx2.yaml] Deployment nginx ns: default
| ├── [nginx3.yaml] Deployment nginx ns: default
| ├── [nginx4.yaml] Deployment nginx ns: default
| ├── [nginx5.yaml] Deployment nginx ns: nginx
│ └── [kustomization.yaml] Kustomization
└── prod
├── [kustomization.yaml] Kustomization
└── [patch.yaml] patching namespace
和5个带有nginx的YAML
在Prod
目录中:
├── base
│ ├── [nginx.yaml] Deployment nginx ns: default
| ├── [nginx2.yaml] Deployment nginx ns: default
| ├── [nginx3.yaml] Deployment nginx ns: default
| ├── [nginx4.yaml] Deployment nginx ns: default
| ├── [nginx5.yaml] Deployment nginx ns: nginx
│ └── [kustomization.yaml] Kustomization
└── prod
├── [kustomization.yaml] Kustomization
└── [patch.yaml] patching namespace
你应该有2个文件kustomization.yaml
和patch.yaml
$ cat kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- nginx1.yaml
- nginx2.yaml
- nginx3.yaml
- nginx4.yaml
- nginx5.yaml
当您将使用kustomize build.
在prod
目录中时,所有nginx部署/-2/-3/-4
将位于命名空间:ns1
中,nginx-deployment-5
将位于命名空间:nginx
中
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: ns1
bases:
- ../base
patchesJson6902:
- target:
group: apps
version: v1
kind: Deployment
name: nginx-deployment-5
path: patch.yaml
$ cat patch.yaml
- op: replace
path: /metadata/namespace
value: nginx
有用的链接: