我想在 name
资源中设置 Namespace
字段,并将 namespace
资源中的 Deployment
字段替换为相同的值,例如 {{ 1}}。
这是my-namespace
:
kustomization.json
和namespace: <NAMESPACE>
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
patchesJson6902:
- patch: |-
- op: replace
path: /metadata/name
value: <NAMESPACE>
target:
kind: Namespace
name: system
version: v1
resources:
- manager.yaml
:
manager.yaml
我尝试使用 apiVersion: v1
kind: Namespace
metadata:
labels:
control-plane: controller-manager
name: system
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: controller-manager
namespace: system
spec:
selector:
matchLabels:
control-plane: controller-manager
replicas: 1
template:
metadata:
labels:
control-plane: controller-manager
spec:
containers:
- command:
- /manager
args:
- --enable-leader-election
image: controller:latest
name: manager
,但它只更改了 kustomize edit set namespace my-namespace && kustomize build
对象中的 namespace
字段。
有没有办法在不使用 Deployment
、'pure' sed
并且无需手动更改 kustomize
中的值的情况下更改这两个字段?
答案 0 :(得分:2)
有没有办法在不使用 sed
的情况下更改两个字段,在“纯”kustomize
中并且不必手动更改 kustomization.json
中的值?< /p>
我设法通过以下配置实现了一些类似的目标:
kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: my-namespace
resources:
- deployment.yaml
depyloment.yaml
---
apiVersion: v1
kind: Namespace
metadata:
name: nginx
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
namespace: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx:1.14.2
name: nginx
ports:
- containerPort: 80
这是您使用的命令的输出:
➜ kustomize kustomize edit set namespace my-namespace7 && kustomize build .
apiVersion: v1
kind: Namespace
metadata:
name: my-namespace7
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
namespace: my-namespace7
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx:1.14.2
name: nginx
ports:
- containerPort: 80
这里发生的事情是,一旦您在 namespace
中全局设置 kustomization.yaml
,它就会将其应用于您的目标,在我看来,这看起来是实现您想要的更简单的方法。
如果没有 manager_patch.yaml
内容,我无法测试您的配置。如果您希望更进一步,您将使用文件内容更新问题。