我正在尝试用“replacements”替换已弃用的“vars”。但是我无法让它按预期工作。
我有以下示例代码,它可以工作:
资源.yaml:
---
apiVersion: v1
kind: FooBar
metadata:
labels:
my.label.io/name: NAME_PLACEHOLDER
name: NAME_PLACEHOLDER
namespace: NAMESPACE_PLACEHOLDER
spec:
foo: bar
kustomization.yaml:
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- resource.yaml
replacements:
- source:
fieldPath: metadata.name
kind: FooBar
name: NAME_PLACEHOLDER
targets:
- fieldPaths:
- metadata.labels.[my.label.io/name]
select:
kind: FooBar
name: NAME_PLACEHOLDER
namespace: my-final-namespace
patches:
- target:
kind: FooBar
name: NAME_PLACEHOLDER
patch: |-
- op: replace
path: /metadata/name
value: my-final-name
kubectl kustomize .
的输出符合预期:
apiVersion: v1
kind: FooBar
metadata:
labels:
my.label.io/name: my-final-name
name: my-final-name
namespace: my-final-namespace
spec:
foo: bar
如果我现在将其分为基础和覆盖,它就不再起作用了。
基础 kustomization.yaml:
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- resource.yaml
replacements:
- source:
fieldPath: metadata.name
kind: FooBar
name: NAME_PLACEHOLDER
targets:
- fieldPaths:
- metadata.labels.[my.label.io/name]
select:
kind: FooBar
name: NAME_PLACEHOLDER
覆盖 kustomization.yaml:
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../base/
namespace: my-final-namespace
patches:
- target:
kind: FooBar
name: NAME_PLACEHOLDER
patch: |-
- op: replace
path: /metadata/name
value: my-final-name
kubectl kustomize .
输出:
apiVersion: v1
kind: FooBar
metadata:
labels:
my.label.io/name: NAME_PLACEHOLDER
name: my-final-name
namespace: my-final-namespace
spec:
foo: bar
使用“vars”时,同样的原理按预期工作,但由于它们已被弃用:你现在会怎么做?
当然,这是一个简化的示例,但实际上我会有大量具有完全相同替换(其中很多)的覆盖,我不想重复其代码。
那么有没有一种方法可以在基础和覆盖中继续执行此操作,仅修补单个值的出现?
我认为您已经遵循了“replacements”的格式参考,您可能需要检查有关“补丁”的格式,您可以在此link中看到。
希望这有帮助。